Add Zsh completion

This commit is contained in:
Bastien Dejean 2013-08-16 11:59:09 +02:00
parent 7c07fc4be3
commit 1e097e228c
3 changed files with 35 additions and 8 deletions

View file

@ -9,7 +9,8 @@ LDFLAGS += -L$(PREFIX)/lib
PREFIX ?= /usr/local
BINPREFIX = $(PREFIX)/bin
MANPREFIX = $(PREFIX)/share/man
CPLPREFIX = $(PREFIX)/share/bash-completion/completions
BASHCPL = $(PREFIX)/share/bash-completion/completions
ZSHCPL = $(PREFIX)/share/zsh/site-functions
WM_SRC = bspwm.c helpers.c settings.c types.c tree.c events.c window.c messages.c query.c restore.c rules.c ewmh.c
WM_OBJ = $(WM_SRC:.c=.o)
@ -43,15 +44,18 @@ install:
mkdir -p "$(DESTDIR)$(MANPREFIX)"/man1
cp -p doc/bspwm.1 "$(DESTDIR)$(MANPREFIX)"/man1
cp -Pp doc/bspc.1 "$(DESTDIR)$(MANPREFIX)"/man1
mkdir -p "$(DESTDIR)$(CPLPREFIX)"
cp -p bash_completion "$(DESTDIR)$(CPLPREFIX)"/bspc
mkdir -p "$(DESTDIR)$(BASHCPL)"
cp -p bash_completion "$(DESTDIR)$(BASHCPL)"/bspc
mkdir -p "$(DESTDIR)$(ZSHCPL)"
cp -p zsh_completion "$(DESTDIR)$(ZSHCPL)"/_bspc
uninstall:
rm -f "$(DESTDIR)$(BINPREFIX)"/bspwm
rm -f "$(DESTDIR)$(BINPREFIX)"/bspc
rm -f "$(DESTDIR)$(MANPREFIX)"/man1/bspwm.1
rm -f "$(DESTDIR)$(MANPREFIX)"/man1/bspc.1
rm -f "$(DESTDIR)$(CPLPREFIX)"/bspc
rm -f "$(DESTDIR)$(BASHCPL)"/bspc
rm -f "$(DESTDIR)$(ZSHCPL)"/_bspc
doc:
a2x -v -d manpage -f manpage -a revnumber=$(VERSION) doc/bspwm.1.txt

View file

@ -1,6 +1,5 @@
_bspc()
{
local messages='window desktop monitor query pointer rule restore control config quit'
_bspc() {
local commands='window desktop monitor query pointer rule restore control config quit'
local settings='focused_border_color active_border_color normal_border_color presel_border_color focused_locked_border_color active_locked_border_color normal_locked_border_color urgent_border_color border_width window_gap split_ratio wm_name borderless_monocle gapless_monocle focus_follows_pointer pointer_follows_monitor adaptative_raise apply_shadow_property auto_alternate auto_cancel history_aware_focus'
@ -9,7 +8,7 @@ _bspc()
if [[ $COMP_CWORD -ge 1 ]] ; then
local current_word="${COMP_WORDS[COMP_CWORD]}"
if [[ $COMP_CWORD -eq 1 ]] ; then
COMPREPLY=( $(compgen -W "$messages" -- "$current_word") )
COMPREPLY=( $(compgen -W "$commands" -- "$current_word") )
return 0
else
local second_word=${COMP_WORDS[1]}
@ -17,6 +16,7 @@ _bspc()
config)
if [[ $COMP_CWORD -eq 2 ]] ; then
COMPREPLY=( $(compgen -W "$settings" -- "$current_word") )
return 0
fi
;;
esac

23
zsh_completion Normal file
View file

@ -0,0 +1,23 @@
#compdef bspc
_bspc() {
local -a commands settings
commands=('window' 'desktop' 'monitor' 'query' 'pointer' 'rule' 'restore' 'control' 'config' 'quit')
settings=('focused_border_color' 'active_border_color' 'normal_border_color' 'presel_border_color' 'focused_locked_border_color' 'active_locked_border_color' 'normal_locked_border_color' 'urgent_border_color' 'border_width' 'window_gap' 'split_ratio' 'wm_name' 'borderless_monocle' 'gapless_monocle' 'focus_follows_pointer' 'pointer_follows_monitor' 'adaptative_raise' 'apply_shadow_property' 'auto_alternate' 'auto_cancel' 'history_aware_focus')
if (( CURRENT == 2 )) ; then
_values 'command' "$commands[@]"
elif (( CURRENT == 3 )) ; then
case $words[2] in
config)
_values 'setting' "$settings[@]"
;;
*)
return 1
;;
esac
else
return 1
fi
}
_bspc "$@"