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

[PATCH] _hg completion: Complete bookmark names for -r



Patch to make 'hg checkout <TAB>' complete bookmark names in addition to
tag names.

This patch also modifies the parsing of 'hg tags' in the same context in
two ways.  It employs --quiet to simplify the hg output being parsed,
and stops using _describe, which makes tag names containing backslashes
complete correctly.  (The problem is that _describe parses colons and
backslashes within its arguments, and hg tag names were passed to
_describe without escaping.  Only backslashes may trigger the problem
because hg does not permit tag names to have colons.)

Cheers,

Daniel
(In the above, 'tag names' means hg tags, not zshcompsys tags)
From 3da817ab8b083587b9350b5d8e1fac423c900ffd Mon Sep 17 00:00:00 2001
From: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>
Date: Sun, 25 Jan 2015 11:22:18 +0000
Subject: [PATCH] _hg completion: Complete bookmark names for -r

While there, simplify `hg tags` parsing.
---
 Completion/Unix/Command/_hg | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/Completion/Unix/Command/_hg b/Completion/Unix/Command/_hg
index c18500b..e7c21b9 100644
--- a/Completion/Unix/Command/_hg
+++ b/Completion/Unix/Command/_hg
@@ -162,15 +162,24 @@ _hg_revrange() {
   _hg_tags "$@"
 }
 
-_hg_tags() {
-  typeset -a tags
-  local tag rev
+_hg_tags_internal() {
+  local expl
+  typeset -a hgtags
+  hgtags=( ${(f)"$(_hg_cmd tags -q 2>/dev/null)"} )
+  _wanted tags expl 'tags' compadd -a - hgtags
+}
 
-  _hg_cmd tags 2> /dev/null | while read tag
-  do
-    tags+=(${tag/ #    [0-9]#:*})
-  done
-  (( $#tags )) && _describe -t tags 'tags' tags
+_hg_bookmarks_internal() {
+  local expl
+  typeset -a hgbookmarks
+  hgbookmarks=( ${(f)"$(_hg_cmd bookmarks -q 2>/dev/null)"} )
+  _wanted bookmarks expl 'bookmarks' compadd -a - hgbookmarks
+}
+
+_hg_tags() {
+  _alternative \
+    'bookmarks:bookmark:_hg_bookmarks_internal' \
+    'tags:tag:_hg_tags_internal'
 }
 
 # likely merge candidates
-- 
1.9.1



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