# HG changeset patch # User Kevin Bullock # Date 1298933115 21600 # Node ID 8aea95ec128f2dfa5044722548e71303f5a8a0c9 # Parent 0396ca8015becbb55c2854048e92f4a25992a26a bash_completion: complete bookmarks Since bookmarks moved into core and are no longer merged with the list of tags (d012d95499f7), they don't get completed in bash_completion along with other revision specifiers. This adds a new function to provide the list of bookmarks for completion, and another, _hg_labels(), to list all tags, branches, and bookmarks. It further modifies completion for all commands where '_hg_tags; _hg_branches' was used to use '_hg_labels' instead. diff -r 0396ca8015be -r 8aea95ec128f contrib/bash_completion --- a/contrib/bash_completion Mon Feb 28 17:41:40 2011 -0600 +++ b/contrib/bash_completion Mon Feb 28 16:45:15 2011 -0600 @@ -101,6 +101,20 @@ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$branches' -- "$cur")) } +_hg_bookmarks() +{ + local bookmarks="$(_hg_cmd bookmarks -q)" + local IFS=$'\n' + COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$bookmarks' -- "$cur")) +} + +_hg_labels() +{ + _hg_tags + _hg_branches + _hg_bookmarks +} + # this is "kind of" ugly... _hg_count_non_option() { @@ -200,12 +214,10 @@ if [ "$cmd" != status ] && [ "$prev" = -r ] || [ "$prev" == --rev ]; then if [ $canonical = 1 ]; then - _hg_tags - _hg_branches + _hg_labels return 0 elif [[ status != "$cmd"* ]]; then - _hg_tags - _hg_branches + _hg_labels return 0 else return 1 @@ -220,12 +232,10 @@ if _hg_ext_mq_patchlist qapplied && [ "${COMPREPLY[*]}" ]; then return 0 fi - _hg_tags - _hg_branches + _hg_labels ;; manifest|update) - _hg_tags - _hg_branches + _hg_labels ;; pull|push|outgoing|incoming) _hg_paths @@ -238,8 +248,7 @@ _hg_status "u" ;; merge) - _hg_tags - _hg_branches + _hg_labels ;; commit|record) _hg_status "mar" @@ -378,8 +387,7 @@ _hg_cmd_strip() { - _hg_tags - _hg_branches + _hg_labels } _hg_cmd_qcommit() @@ -497,8 +505,7 @@ case "$subcmd" in good|bad) - _hg_tags - _hg_branches + _hg_labels ;; esac @@ -534,8 +541,7 @@ ;; esac - _hg_tags - _hg_branches + _hg_labels return } @@ -543,8 +549,7 @@ # gpg _hg_cmd_sign() { - _hg_tags - _hg_branches + _hg_labels } @@ -564,8 +569,7 @@ esac # all other transplant options values and command parameters are revisions - _hg_tags - _hg_branches + _hg_labels return }