# HG changeset patch # User mpm@selenic.com # Date 1124310132 28800 # Node ID 925563ff1b188641ebbfcd2f934ce057dbfb7aae # Parent ff484cc157d67d254e2d269ba4514f4187e47998 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. diff -r ff484cc157d6 -r 925563ff1b18 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