Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[PATCH] - some preliminary gitk completion support



Probably this patch must be tweaked. It's not complete.
However you can complete branch names now on gitk..

Should I add the completion code to the $+functions hash?

Sincerly
Marc Weber

--- zsh-git	2009-04-21 02:08:35.000000000 +0200
+++ zsh-git-modified	2009-04-21 02:08:23.000000000 +0200
@@ -1,4 +1,4 @@
-#compdef git git-add git-am git-annotate git-apply git-applymbox git-applypatch git-archimport git-archive git-bisect git-blame git-branch git-cat-file git-check-attr git-check-ref-format git-checkout git-checkout-index git-cherry git-cherry-pick git-clean git-clone git-clone-pack git-commit git-commit-tree git-convert-objects git-count-objects git-cvsexportcommit git-cvsimport git-cvsserver git-daemon git-describe git-diff git-diff-files git-diff-index git-diff-stages git-diff-tree git-fast-import git-fetch git-fetch-pack git-fmt-merge-msg git-for-each-ref git-format-patch git-fsck git-gc git-get-tar-commit-id git-grep git-hash-object git-http-fetch git-http-push git-imap-send git-index-pack git-init git-instaweb git-local-fetch git-log git-lost-found git-ls-files git-ls-remote git-ls-tree git-mailinfo git-mailsplit git-merge git-merge-base git-merge-file git-merge-index git-merge-one-file git-merge-tree git-mergetool git-mktag git-mktree git-mv git-name-rev git-pack-objects git-pack-redundant git-pack-refs git-patch-id git-peek-remote git-prune git-prune-packed git-pull git-push git-quiltimport git-read-tree git-rebase git-receive-pack git-reflog git-relink git-remote git-repack gut-runstatus git-config git-request-pull git-rerere git-reset git-rev-list git-rev-parse git-revert git-rm git-send-email git-send-pack git-sh-setup git-shell git-shortlog git-show git-show-branch git-show-index git-show-ref git-ssh-fetch git-ssh-upload git-status git-stripspace git-svn git-svnimport git-symbolic-ref git-tag git-tar-tree git-unpack-file git-unpack-objects git-update-index git-update-ref git-update-server-info git-upload-archive git-upload-pack git-var git-verify-pack git-verify-tag git-whatchanged git-write-tree
+#compdef git git-add git-am git-annotate git-apply git-applymbox git-applypatch git-archimport git-archive git-bisect git-blame git-branch git-cat-file git-check-attr git-check-ref-format git-checkout git-checkout-index git-cherry git-cherry-pick git-clean git-clone git-clone-pack git-commit git-commit-tree git-convert-objects git-count-objects git-cvsexportcommit git-cvsimport git-cvsserver git-daemon git-describe git-diff git-diff-files git-diff-index git-diff-stages git-diff-tree git-fast-import git-fetch git-fetch-pack git-fmt-merge-msg git-for-each-ref git-format-patch git-fsck git-gc git-get-tar-commit-id git-grep git-hash-object git-http-fetch git-http-push git-imap-send git-index-pack git-init git-instaweb git-local-fetch git-log git-lost-found git-ls-files git-ls-remote git-ls-tree git-mailinfo git-mailsplit git-merge git-merge-base git-merge-file git-merge-index git-merge-one-file git-merge-tree git-mergetool git-mktag git-mktree git-mv git-name-rev git-pack-objects git-pack-redundant git-pack-refs git-patch-id git-peek-remote git-prune git-prune-packed git-pull git-push git-quiltimport git-read-tree git-rebase git-receive-pack git-reflog git-relink git-remote git-repack gut-runstatus git-config git-request-pull git-rerere git-reset git-rev-list git-rev-parse git-revert git-rm git-send-email git-send-pack git-sh-setup git-shell git-shortlog git-show git-show-branch git-show-index git-show-ref git-ssh-fetch git-ssh-upload git-status git-stripspace git-svn git-svnimport git-symbolic-ref git-tag git-tar-tree git-unpack-file git-unpack-objects git-update-index git-update-ref git-update-server-info git-upload-archive git-upload-pack git-var git-verify-pack git-verify-tag git-whatchanged git-write-tree gitk
 
 # TODO: All if (( words[(I)-option] )) should be turned into
 # if (( words[(I)-option] > 0 && words[(I)-option] < CURRENT )), as the user
@@ -4296,31 +4296,48 @@
   unset tmpwords expalias
 fi
 
-if [[ $service == git ]]; then
-  local state line
-  declare -A opt_args
-  _arguments -C \
-    '(- :)--version[display version information]' \
-    '(- :)--help[display help message]' \
-    '--exec-path=-[path containing core git-programs]::directory:_directories' \
-    '(-p --paginate)'{-p,--paginate}'[pipe output into $PAGER]' \
-    '--no-pager[do not pipe git output into a pager]' \
-    '--git-dir=-[path to repository]:directory:_directories' \
-    '--bare[use $PWD as repository]' \
-    '*::arg:->cmd_or_options' && return
-  case $state in
-    (cmd_or_options)
-      if (( CURRENT == 1 )); then
-        __git_aliases_and_commands
-      else
-        curcontext="${curcontext%:*:*}:git-$words[1]:"
-        _call_function ret _git-$words[1]
-      fi
-      ;;
-  esac
-else
+case $service in
+  git)
+    local state line
+    declare -A opt_args
+    _arguments -C \
+      '(- :)--version[display version information]' \
+      '(- :)--help[display help message]' \
+      '--exec-path=-[path containing core git-programs]::directory:_directories' \
+      '(-p --paginate)'{-p,--paginate}'[pipe output into $PAGER]' \
+      '--no-pager[do not pipe git output into a pager]' \
+      '--git-dir=-[path to repository]:directory:_directories' \
+      '--bare[use $PWD as repository]' \
+      '*::arg:->cmd_or_options' && return
+    case $state in
+      (cmd_or_options)
+        if (( CURRENT == 1 )); then
+          __git_aliases_and_commands
+        else
+          curcontext="${curcontext%:*:*}:git-$words[1]:"
+          _call_function ret _git-$words[1]
+        fi
+        ;;
+    esac
+  ;;
+  gitk)
+    # move this into an extra function?
+    typeset -A opt_args
+    _arguments -S \
+         '-n+:Limits the number of commits to show:' \
+         '--max-count:Limits the number of commits to show:' \
+         '--since:commits more recent than a specific date:' \
+         '--until:commits older than a specific date:' \
+         '--all::' \
+         '--merge:list files leading to conflict:' \
+         '--argscmd:cmd outputting revs to show one per line:' \
+         '--select-commit:cmd outputting revs to show one per line:' \
+         '::commits to show:__git_commit_ranges2'
+    ;;
+  *)
   _call_function ret _$service
-fi
+  ;;
+esac
 }
 
 _git



Messages sorted by: Reverse Date, Date, Thread, Author