bash: Add smarter completion of add/commit/remove/forget/diff/revert
authormpm@selenic.com
Wed, 17 Aug 2005 12:22:12 -0800
changeset 935 925563ff1b18
parent 934 ff484cc157d6
child 936 b62d1e738fa9
bash: Add smarter completion of add/commit/remove/forget/diff/revert Use hg status to determine which files are interesting for various commands. Thus, hg add [tab] finds unknown files, and hg commit [tab] finds added, modified, or removed files.
contrib/bash_completion
--- a/contrib/bash_completion	Wed Aug 17 00:36:36 2005 -0800
+++ b/contrib/bash_completion	Wed Aug 17 12:22:12 2005 -0800
@@ -19,6 +19,12 @@
     COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$paths" -- "$cur" ))
 }
 
+_hg_status()
+{
+    local files="$( hg status -$1 | cut -b 3- )"
+    COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$files" -- "$cur" ))
+}
+
 _hg_tags()
 {
     local tags="$(hg tags | sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$//')"
@@ -104,6 +110,24 @@
 	paths)
 	    _hg_paths
 	;;
+	add)
+	    _hg_status "u"
+	;;
+	commit)
+	    _hg_status "mra"
+	;;
+	remove)
+	    _hg_status "r"
+	;;
+	forget)
+	    _hg_status "a"
+	;;
+	diff)
+	    _hg_status "mra"
+	;;
+	revert)
+	    _hg_status "mra"
+	;;
 	clone)
 	    local count=$(_hg_count_non_option)
 	    if [ $count = 1 ]; then
@@ -126,4 +150,4 @@
 
 }
 
-complete -o filenames -F _hg hg
+complete -o default -F _hg hg