diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Completion/X/Command/_xterm | 1 | ||||
-rw-r--r-- | Completion/X/Type/_xft_fonts | 43 |
3 files changed, 50 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 3b6d57d96..af8daab6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-02-10 Oliver Kiddle <opk@zsh.org> + + * 30177: Completion/X/Command/_xterm, + Completion/X/Type/_xft_fonts: completion for fontconfig fonts + 2012-02-09 Barton E. Schaefer <schaefer@zsh.org> * 30193: ChangeLog Src/Zle/compcore.c: remnulargs() after poking @@ -15928,5 +15933,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5577 $ +* $Revision: 1.5578 $ ***************************************************** diff --git a/Completion/X/Command/_xterm b/Completion/X/Command/_xterm index a246ab48e..7619b280a 100644 --- a/Completion/X/Command/_xterm +++ b/Completion/X/Command/_xterm @@ -9,6 +9,7 @@ _xt_arguments \ '-cc:character class:' \ '-cr:text cursor color:_x_color' \ '-e:program: _command_names -e:*::program arguments: _normal' \ + '-fa:font pattern:_xft_fonts' \ '-fb:bold font:_x_font' \ '-fi:icon font:_x_font' \ '-hc:background color for highlighted text:_x_color' \ diff --git a/Completion/X/Type/_xft_fonts b/Completion/X/Type/_xft_fonts new file mode 100644 index 000000000..0d5f56fe5 --- /dev/null +++ b/Completion/X/Type/_xft_fonts @@ -0,0 +1,43 @@ +#compdef fc-list fc-match + +local -a suf +local font=${${PREFIX//-[0-9]##:/:}%:*}: ret=1 +local attr + +compset -S ':*' || suf=( -S: -r "-: \t\n\-" ) +if compset -P '*:'; then + attr="${PREFIX%\=*}" + if compset -P '*='; then + case $attr in + hintstyle) + _wanted value expl 'value' compadd "$suf[@]" \ + hint{none,slight,medium,full} && ret=0 + ;; + *) + _wanted value expl 'value' compadd "$suf[@]" \ + ${${(f)"$(_call_program font-attrs + fc-list $font $attr 2>/dev/null)"//,/$'\n'}##*=} && ret=0 + ;; + esac + else + _tags elements {weight,slant}-constants + while _tags; do + _requested elements expl element compadd -qS= hintstyle hinting autohint \ + size ${${(u)${(M)${(f)"$(_call_program elements + fc-list -v $font 2>/dev/null)"}:# [a-z]*}%%:*}#?} && ret=0 + _requested weight-constants expl 'weight constant' compadd "$suf[@]" \ + thin bold regular medium semibold heavy roman && ret=0 + _requested slant-constants expl 'slant constant' compadd "$suf[@]" \ + roman italic oblique && ret=0 + + (( ret )) || break + done + fi +elif compset -P '*[^\\]-'; then + _message -e size 'point size' && ret=0 +else + _wanted fonts expl font compadd "$suf[@]" \ + ${${(f)"$(_call_program fonts fc-list 2>/dev/null)"//,/$'\n'}%%:*} && ret=0 +fi + +return ret |