1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
#compdef less -value-,LESS,-default- -value-,LESSCHARSET,-default-
local curcontext="$curcontext" fgbg=foreground ret=1
local -a state line expl files basic suf
case $service in
*LESSCHARSET*)
_wanted charsets expl 'character set' compadd ascii iso8859 latin1 latin9 \
dos ebcdic IBM-1047 koi8-r next utf-8
return
;;
*LESS*)
compset -q
words=( fake "$words[@]" )
(( CURRENT++ ))
;;
*)
files=( '*:file:_files' )
;;
esac
if compset -P '+[-0-9]#'; then
_describe 'less command' '(
g:goto\ line
F:scroll\ to\ end\ and\ keep\ reading\ file
G:go\ to\ end\ of\ file
%:go\ to\ position\ in\ file
p:go\ to\ position\ in\ file
)'
return
fi
_arguments -S -s -A "[-+]*" \
'(-? --help)'{-\?,--help}'[display summary of less commands]' \
'(-a --search-skip-screen)'{-a,--search-skip-screen}'[skip current screen in searches]' \
'(-A --SEARCH-SKIP-SCREEN)'{-A,--SEARCH-SKIP-SCREEN}"[start searches just after target line]" \
'(-b --buffers)'{-b+,--buffers=}'[specify amount of buffer space used for each file]:buffer space (kilobytes)' \
'(-B --auto-buffers)'{-B,--auto-buffers}"[don't automatically allocate buffers for pipes]" \
'(-C --CLEAR-SCREEN -c --clear-screen)'{-c,--clear-screen}'[repaint screen instead of scrolling]' \
'!(-c --clear-screen)'{-C,--CLEAR-SCREEN} \
'(-d --dumb)'{-d,--dumb}'[suppress error message if terminal is dumb]' \
'*'{-D+,--color=}'[set screen colors]: :->colors' \
'(-e -E --quit-at-eof --QUIT-AT-EOF)'{-e,--quit-at-eof}'[exit the second time end-of-file is reached]' \
'(-e -E --quit-at-eof --QUIT-AT-EOF)'{-E,--QUIT-AT-EOF}'[exit when end-of-file is reached]' \
'(-f --force)'{-f,--force}'[force opening of non-regular files]' \
'(-F --quit-if-one-screen)'{-F,--quit-if-one-screen}'[exit if entire file fits on first screen]' \
'(-G --HILITE-SEARCH -g --hilite-search)'{-g,--hilite-search}'[highlight only one match for searches]' \
'(-g --hilite-search -G --HILITE-SEARCH)'{-G,--HILITE-SEARCH}'[disable highlighting of search matches]' \
'(-h --max-back-scroll)'{-h+,--max-back-scroll=}'[specify backward scroll limit]:backward scroll limit (lines)' \
'(-I --IGNORE-CASE -i --ignore-case)'{-i,--ignore-case}'[ignore case in searches that lack uppercase]' \
'(-i --ignore-case -I --IGNORE-CASE)'{-I,--IGNORE-CASE}'[ignore case in all searches]' \
'(-j --jump-target)'{-j+,--jump-target}'[specify screen position of target lines]:position (line)' \
'(-J --status-column)'{-J,--status-column}'[display status column on the left]' \
\*{-k+,--lesskey-file=}'[use specified lesskey file]:lesskey file:_files' \
'(-K --quit-on-intr)'{-K,--quit-on-intr}'[exit less in response to ctrl-c]' \
'(-L --no-lessopen)'{-L,--no-lessopen}'[ignore the LESSOPEN environment variable]' \
'(-M --LONG-PROMPT -m --long-prompt)'{-m,--long-prompt}'[prompt verbosely]' \
'(-m --long-prompt -M --LONG-PROMPT)'{-M,--LONG-PROMPT}'[prompt very verbosely]' \
'(-N --LINE-NUMBERS -n --line-numbers)'{-n,--line-numbers}"[don't keep track of line numbers]" \
'(-n --line-numbers -N --LINE-NUMBERS)'{-N,--LINE-NUMBERS}'[show line numbers]' \
'(* -O --LOG-FILE -o --log-file)'{-o+,--log-file=}'[copy input to file]:file:_files' \
'(* -o --log-file -O --LOG-FILE)'{-O+,--LOG-FILE=}'[copy input to file, overwriting if necessary]:file:_files' \
'(-p --pattern)'{-p+,--pattern=}'[start at specified pattern]:pattern' \
\*{-P+,--prompt=}'[specify prompt format]:prompt:->prompts' \
'(-Q --QUIET --SILENT -q --quiet --silent)'{-q,--quiet,--silent}'[never use bell]' \
'(-q --quiet --silent -Q --QUIET --SILENT)'{-Q,--QUIET,--SILENT}'[limit use of bell]' \
'(-r -R --raw-control-chars --RAW-CONTROL-CHARS)'{-r,--raw-control-chars}'[display raw control characters]' \
'(-r -R --raw-control-chars --RAW-CONTROL-CHARS)'{-R,--RAW-CONTROL-CHARS}'[display control chars; keep track of screen effects]' \
'(-s --squeeze-blank-lines)'{-s,--squeeze-blank-lines}'[squeeze consecutive blank lines down to one]' \
'(-S --chop-long-lines)'{-S,--chop-long-lines}'[truncate long lines instead of folding]' \
'(-t --tag)'{-t+,--tag=}'[edit file containing tag]:tag:->tags' \
'(-T --tag-file)'{-T+,--tag-file=}'[specify tags file]:tags file:_files' \
'(-u --underline-special)'{-u,--underline-special}'[send backspaces and carriage returns to the terminal]' \
'(-U --UNDERLINE-SPECIAL)'{-U,--UNDERLINE-SPECIAL}'[treat backspaces, tabs and carriage returns as control characters]' \
'(* -)'{-V,--version}'[display version information]' \
'(-W --HILITE-UNREAD -w --hilite-unread)'{-w,--hilite-unread}'[highlight first unread line after forward page]' \
'(-w --hilite-unread -W --HILITE-UNREAD)'{-W,--HILITE-UNREAD}'[highlight first unread line after forward movement]' \
'(-x --tabs)'{-x+,--tabs=}'[set tab stops]:tab stops' \
'(-X --no-init)'{-X,--no-init}'[disable use of terminal init string]' \
'--no-keypad[disable use of keypad terminal init string]' \
'(-y --max-forw-scroll)'{-y,--max-forw-scroll}'[specify forward scroll limit]' \
'(-z --window)'{-z+,--window=}'[specify scrolling window size]:lines' \
'(-\" --quotes)'{'-\"+',--quotes=}'[change quoting character]:quoting characters' \
'(-~ --tilde)'{-~,--tilde}"[don't display tildes after end of file]" \
'(-\# --shift)'{'-\#+',--shift=}"[specify amount to move when scrolling horizontally]:number" \
'--file-size[automatically determine the size of the input file]' \
'--incsearch[search file as each pattern character is typed in]' \
'--line-num-width=[set the width of line number field]:width [7]' \
'--follow-name[the F command changes file if the input file is renamed]' \
'--mouse[enable mouse input]' \
'--no-histdups[remove duplicates from command history]' \
'--rscroll=[set the character used to mark truncated lines]:character [>]' \
'--save-marks[retain marks across invocations of less]' \
'--status-col-width=[set the width of the -J status column]:width [2]' \
'--use-backslash[subsequent options use backslash as escape char]' \
'--use-color[enable colored text]' \
'--wheel-lines=[specify lines to move for each click of the mouse wheel]:lines' \
"$files[@]" && ret=0
if [[ -n "$state" ]]; then
case $state in
colors)
if compset -P 1 \?; then
[[ $IPREFIX[-1] != [a-z] ]] || compset -P 1 + || _describe 'color application' '( +:add\ to\ existing\ attribute )'
suf=( -S '' )
compset -P 1 '([-a-zA-Z]|*.)' && fgbg=background && suf=()
basic=( B:blue C:cyan G:green K:black M:magenta R:red W:white Y:yellow )
_describe -t colors "$fgbg color" \
"( -:default ${(j. .)${(@)basic/:/:light\ }} ${(Lj. .)basic} )" "$suf[@]" && ret=0
else
_describe 'text' '(
B:binary\ characters
C:control\ characters
E:errors\ and\ informational\ messages
M:mark\ letters\ in\ the\ status\ column
N:line\ numbers\ enabled\ via\ the\ -N\ option
P:prompts
R:the\ rscroll\ character
S:search\ results
W:the\ highlight\ enabled\ via\ the\ -w\ option
d:bold\ text
k:blinking\ text
s:standout\ text
u:underlined\ text
)' -S '' && ret=0
fi
;;
prompts)
if compset -p 1; then
_message -e prompt
else
_describe 'prompt' '(
s:short\ prompt
m:medium\ prompt
M:long\ prompt
h:help\ screen\ prompt
\=:\=\ command\ prompt
w:waiting\ prompt
)' && ret=0
fi
;;
tags)
if (( $+LESSGLOBALTAGS )); then
_global_tags && ret=0
else
_ctags_tags && ret=0
fi
;;
esac
fi
return ret
|