]> git.lizzy.rs Git - bspwm.git/commitdiff
Add Zsh completion
authorBastien Dejean <nihilhill@gmail.com>
Fri, 16 Aug 2013 09:59:09 +0000 (11:59 +0200)
committerBastien Dejean <nihilhill@gmail.com>
Fri, 16 Aug 2013 09:59:09 +0000 (11:59 +0200)
Makefile
bash_completion
zsh_completion [new file with mode: 0644]

index 89897c1c1062b580c1bf42fa7c200092f521acc4..9c26ec773dce71c2f7e41c31e8dd38200287297c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -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
index 87f160a43b818eea44e08908bacfade94a64f0e5..fb70db38cf842d7701df7b155c15d15be155612e 100644 (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
diff --git a/zsh_completion b/zsh_completion
new file mode 100644 (file)
index 0000000..936114e
--- /dev/null
@@ -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 "$@"