Mercurial zsh completion with vim
How to re-format output of hg help <command> for use in Mercurial zsh_completion file.
We start with simple generic template copied from some other command like export:
_hg_cmd_graft() { _arguments -s -w : $_hg_global_opts \ '*:revision:_hg_labels' }
Let’s copy graft-specific options from hg help graft
output:
-c --continue resume interrupted graft -e --edit invoke editor on commit messages --log append graft info to log message -D --currentdate record the current date as commit date -U --currentuser record the current user as committer -d --date DATE record the specified date as commit date -u --user USER record the specified user as committer -t --tool VALUE specify merge tool -n --dry-run do not perform actions, just print output
Now select help text and reformat it with a bit of regexps:
:'<,'>s:^\s\+\(-[a-zA-Z0-9]\) \(--[a-z-]\+\)\s\+: '(\2 \1)'{\1,\2}'[ :'<,'>s:^\s\+\(--[a-z-]\+\)\s\+: '\1[ :'<,'>s:$:]' \ :'<,'>s:'\[[A-Z]\+\s\+:'[
And the result is:
_hg_cmd_graft() { _arguments -s -w : $_hg_global_opts \ '(--continue -c)'{-c,--continue}'[resume interrupted graft]' \ '(--edit -e)'{-e,--edit}'[invoke editor on commit messages]' \ '--log[append graft info to log message]' \ '(--currentdate -D)'{-D,--currentdate}'[record the current date as commit date]' \ '(--currentuser -U)'{-U,--currentuser}'[record the current user as committer]' \ '(--date -d)'{-d,--date}'[record the specified date as commit date]' \ '(--user -u)'{-u,--user}'[record the specified user as committer]' \ '(--tool -t)'{-t,--tool}'[specify merge tool]' \ '(--dry-run -n)'{-n,--dry-run}'[do not perform actions, just print output]' \ '*:revision:_hg_labels' }
Vim have helped you as it could, now decide is there anything left to be done.
Comments
Comments powered by Disqus