From c435a8cc618dba0d149405959d65da130e0982e0 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Mon, 14 May 2012 15:32:26 +0000 Subject: 30466: Add prompt format and printf format completion. --- Completion/Unix/Type/.distfiles | 1 + Completion/Unix/Type/_ps1234 | 109 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 Completion/Unix/Type/_ps1234 (limited to 'Completion/Unix/Type') diff --git a/Completion/Unix/Type/.distfiles b/Completion/Unix/Type/.distfiles index 4c0d688ac..a9dc0d147 100644 --- a/Completion/Unix/Type/.distfiles +++ b/Completion/Unix/Type/.distfiles @@ -36,6 +36,7 @@ _pids _ports _printers _ps +_ps1234 _pspdf _services _signals diff --git a/Completion/Unix/Type/_ps1234 b/Completion/Unix/Type/_ps1234 new file mode 100644 index 000000000..13c90b50c --- /dev/null +++ b/Completion/Unix/Type/_ps1234 @@ -0,0 +1,109 @@ +#compdef -value-,PROMPT,-default- -value-,PROMPT2,-default- -value-,PROMPT3,-default- -value-,PROMPT4,-default- -value-,RPROMPT,-default- -value-,RPROMPT2,-default- -value-,PS1,-default- -value-,PS2,-default- -value-,PS3,-default- -value-,PS4,-default- -value-,RPS1,-default- -value-,RPS2,-default- -value-,SPROMPT,-default- + +local -a specs +local expl paren + +if [[ -n $compstate[quote] ]]; then + paren='(' +else + paren='\(' +fi + +if [[ $PREFIX == *%(-|)<-># ]]; then + specs=( + 'm:hostname up to first .' + '_:status of parser' + 'd:current working directory' + '/:current working directory' + '~:current working directory, with ~ replacement' + 'N:name of current script or shell function' + 'x:name of file containing code being executed' + 'c:deprecated' + '.:deprecated' + 'C:deprecated' + 'F:start using fg color' + 'K:start using bg color' + 'G:counts as extra character inside %{...%}' + ) + if [[ $PREFIX == *% ]]; then + if [[ $service == -value-,SPROMPT,* ]]; then + specs+=( + 'r:suggested correction' + 'R:corrected string' + ) + fi + specs+=( + '%:A %' + '):A )' + 'l:current line (tty) with /dev/tty stripped' + 'M:full hostname' + 'n:username' + 'y:current line (tty)' + '#:a # when root, % otherwise' + '?:return status of last command' + 'h:current history event number' + '!:current history event number' + 'i:current line number' + 'I:current source line number' + 'j:number of jobs' + 'L:$SHLVL' + 'D:date in yy-mm-dd format' + 'T:current time of day, 24-hour format' + 't:current time of day, 12-hour am/pm format' + '@:current time of day, 12-hour am/pm format' + '*:current time of day, 24-hour format with seconds' + 'w:the date in day-dd format' + 'W:the date in mm/dd/yy format' + 'D{}:format string like strftime' + 'B:start bold' + 'b:stop bold' + 'E:clear to end of line' + 'U:start underline' + 'u:stop underline' + 'S:start standout' + 's:stop standout' + 'f:reset fg color' + 'k:reset bg color' + '{:start literal escape sequence' + '}:stop literal escape sequence' + 'v:value from $psvar array' + '(:ternary expression %(x.true-string.false-string)' + '<<:truncation from left %len>:truncation from right %len>string>' + '[]:truncation from who knows where' + ) + fi + compset -P "*" + _describe -t prompt-format-specifier 'prompt format specifier' specs -S '' + _message -e prompt-format-specifier number +elif [[ $PREFIX == *%$paren(-|)<-># ]]; then + specs=( + '!:running with privileges' + '#:effective uid' + '?:exit status' + '_:at least n shell constructs started' + 'C:at least n path elements' + '/:at least n path elements' + '.:at least n path elements' + 'c:at least n path elements' + '~:at least n path elements' + 'D:month' + 'd:day of month' + 'g:effective gid' + 'j:number of jobs' + 'L:SHLVL' + 'l:number of characters already printed' + 'S:SECONDS parameter at least n' + 'T:current hour' + 't:current minute' + 'v:psvar has at least n elements' + 'V:element n of psvar is set and non-empty' + 'w:day of week (Sunday = 0)' + ) + compset -P "*" + _describe -t ternary-prompt-expression 'ternary prompt format test character' specs -S '' + _message -e ternary-prompt-expression number +else + _describe -t prompt-format-specifier 'prompt format specifier' '(%)' -S '' + _default "$@" +fi -- cgit 1.4.1