mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-11-01 18:30:55 +01:00
48166: add completion for ctags language options
This commit is contained in:
parent
e469b8c4e3
commit
ab166725dd
2 changed files with 249 additions and 199 deletions
|
|
@ -1,5 +1,8 @@
|
|||
2021-03-28 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* Jacob Gelbman: 48166: Completion/Unix/Command/_ctags:
|
||||
add completion for language options
|
||||
|
||||
* Arseny Maslennikov: 48210, 48211:
|
||||
Completion/Linux/Command/_setpriv: new completion for setpriv(1)
|
||||
|
||||
|
|
@ -53,8 +56,8 @@
|
|||
|
||||
2021-02-24 Peter Stephenson <p.stephenson@samsung.com>
|
||||
|
||||
* 48105: Jacob Gelbman:Completion/Unix/Command/_ctags: update and
|
||||
fix formatting nad import.
|
||||
* 48105: Jacob Gelbman: Completion/Unix/Command/_ctags: update and
|
||||
fix formatting and import.
|
||||
|
||||
2021-02-23 Peter Stephenson <p.stephenson@samsung.com>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,197 +1,244 @@
|
|||
#compdef ctags
|
||||
|
||||
local context state line expl
|
||||
local -A opt_args
|
||||
|
||||
if [ -z "$_ctags_type" ]; then
|
||||
local output=`ctags --version 2>&1`
|
||||
if [[ "$output" = *Universal\ Ctags* ]]; then
|
||||
_ctags_type="universal"
|
||||
elif [[ "$output" = *Exuberant\ Ctags* ]]; then
|
||||
_ctags_type="exuberant"
|
||||
elif [[ "$output" = *usage:\ ctags* ]]; then
|
||||
_ctags_type="bsd"
|
||||
elif [[ "$output" = *Emacs* ]]; then
|
||||
_ctags_type="etags"
|
||||
else
|
||||
_ctags_type="universal"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$_ctags_type" = "etags" ]; then
|
||||
_etags
|
||||
return $?
|
||||
fi
|
||||
|
||||
local -a arguments
|
||||
|
||||
if [ "$_ctags_type" = "universal" ]; then
|
||||
arguments=(
|
||||
"-?[help text]"
|
||||
"-a[append to tags file]"
|
||||
"-B[use backward searching patterns (?...?)]"
|
||||
"-D[give definition for macro]:macro definition:"
|
||||
"-e[output tag file for use with emacs]"
|
||||
"-f[write tags to specified file. - is stdout]:file:_files"
|
||||
"-F[use forward searching patterns (/.../)]"
|
||||
"-G[equivalent to --guess-language-eagerly]"
|
||||
"-h[specify list of file extensions to be treated as include files]:"
|
||||
"-I[a list of tokens to be specifically handled is read from either the command line or the specified file]:"
|
||||
"-L[a list of input file names is read from the specified file. - is stdin]:file:_files"
|
||||
"-n[equivalent to --excmd=number]"
|
||||
"-N[equivalent to --excmd=pattern]"
|
||||
"-o[alternative to -f]:file:_files"
|
||||
"-R[equivalent to --recurse]"
|
||||
"-u[equivalent to --sort=no]"
|
||||
"-V[equivalent to --verbose]"
|
||||
"-x[print a tabular cross reference file to stdout]"
|
||||
"--alias-<lang>=[add a pattern detecting a name, can be used as an alt name for lang]:pattern"
|
||||
"--append=[should tags be appended to existing tag file]:bool:(yes no)"
|
||||
"--etags-include=[include reference to file in emacs style tag file]:file:_files"
|
||||
"--exclude=[exclude files and directories matching pattern]:pattern"
|
||||
"--exclude-exception=[don't exclude files and directories matching pattern even if they match the pattern specified with --exclude]:pattern"
|
||||
"--excmd=[uses the specified type of ex command to locate tags]:ex command type:(number pattern mix combine)"
|
||||
"--extras=[include extra tag entries for selected information (flags fFgpqrs)]:flags"
|
||||
"--extras-<lang>=[include <lang> own extra tag entries for selected information]:flags"
|
||||
"--fields=[include selected extension fields (flags aCeEfFikKlmnNpPrRsStxzZ)]:flags"
|
||||
"--fields-<lang>=[include selected <lang> own extension fields]:flags"
|
||||
"--filter=[behave as a filter, reading file names from stdin and writing tags to stdout]:bool:(yes no)"
|
||||
"--filter-terminator=[specify string to print to stdout following the tags for each file parsed when --filter is enabled]:string"
|
||||
"--format=[force output of specified tag file format]:level"
|
||||
"--guess-language-eagerly[guess the language of input file more eagerly]"
|
||||
"--help[help text]"
|
||||
"--help-full[help text with experimental features]"
|
||||
"--if0=[should code within #if 0 conditionals be parsed]:bool:(yes no)"
|
||||
"--input-encoding=[specify encoding of all input files]:encoding"
|
||||
"--input-encoding-<lang>=[specify encoding of the <lang> input files]:encoding"
|
||||
"--kinddef-<lang>=[define new kind for <lang>]:kind"
|
||||
"--kinds-<lang>=[enable/disable tag kinds for <lang>]:kind"
|
||||
"--langdef=[define a new language to be parsed with regular expressions]:name"
|
||||
"--langmap=[override default mapping of language to input file extension]:maps"
|
||||
"--language-force=[force all files to be interpreted using specified language]:language:->language"
|
||||
"--languages=[restrict files scanned to these comma-separated languages]:language:->languages"
|
||||
"--license[print details of software license]"
|
||||
"--line-directives=[should #line directives be processed]:bool:(yes no)"
|
||||
"--links=[indicate whether symlinks should be followed]:bool:(yes no)"
|
||||
"--list-aliases=[list of alias patterns]:language:->language"
|
||||
"--list-excludes[list of exclude patterns for files/dirs]"
|
||||
"--list-extras=[list of extra tag flags]:language:->language"
|
||||
"--list-features[list of compiled features]"
|
||||
"--list-fields=[list of fields]:language:->language"
|
||||
"--list-kinds=[list of all tag kinds for lang]:language:->language"
|
||||
"--list-kinds-full=[list details of all tag kinds for lang]:language:->language"
|
||||
"--list-languages[list of supported languages]"
|
||||
"--list-map-extensions=[list of language extensions in mapping]:language:->language"
|
||||
"--list-map-patterns=[list of language patterns in mapping]:language:->language"
|
||||
"--list-maps=[list of language mappings (both extensions and patterns)]:language:->language"
|
||||
"--list-mline-regex-flags[list of flags which can be used in a multiline regex parser definition]"
|
||||
"--list-params=[list of language parameters. works with --machinable]:language:->language"
|
||||
"--list-pseudo-tags[list of pseudo tags]"
|
||||
"--list-regex-flags[list of flags which can be used in a regex parser definition]"
|
||||
"--list-roles=[list of all roles of tag kinds specified for langs]:language:->language"
|
||||
"--list-subparsers=[list of subparsers for the base lang]:language:->language"
|
||||
"--machinable=[use tab separated representation in --list-* output]:bool:(yes no)"
|
||||
"--map-<lang>=[set, add(+), or remove(-) the map for <lang>]:pattern"
|
||||
"--maxdepth=[specify maximum recursion depth]:depth"
|
||||
"--mline-regex-<lang>=[define multiline regex for locating tags in <lang>]:pattern"
|
||||
"--options=[specify file (or dir) from which command line options should be read]:file:_files"
|
||||
"--options-maybe=[same as --options but doesn't error]:file:_files"
|
||||
"--optlib-dir=[add or set dir to optlib search path]:dir:_files -/"
|
||||
"--output-encoding=[the encoding to write the tag file in]:encoding"
|
||||
"--output-format=[specify the output format]:format:(u-ctags e-ctags etags xref)"
|
||||
"--param-<lang>=[set <lang> specific parameter]:argument"
|
||||
"--pattern-length-limit=[cutoff patterns of tag entries after N characters]:number"
|
||||
"--print-language[don't make tags file but just print the guessed lang name for input file]"
|
||||
"--pseudo-tags=[enable/disable emitting pseudo tag named ptag. if *, enable emitting all pseudo tags]:ptag"
|
||||
"--put-field-prefix[put UCTAGS as prefix for the name of fields newly introducted in universal ctags]"
|
||||
"--quiet=[don't print notice class messages]:bool:(yes no)"
|
||||
"--recurse=[recurse]:bool:(yes no)"
|
||||
"--regex-<lang>=[define regex for locating tags in specific lang]:pattern"
|
||||
"--roles-<lang>.<kind>=[enable/disable tag roles for kinds of <lang>]:role"
|
||||
"--sort=[should tags be sorted]:argument:(yes no foldcase)"
|
||||
"--tag-relative=[should paths be relative to location of tag file]:argument:(yes no always never)"
|
||||
"--totals=[print stats about input and tag files]:arguments:(yes no extra)"
|
||||
"--verbose=[enable verbose messages describing actions]:bool:(yes no)"
|
||||
"--version[print version]"
|
||||
"--with-list-header=[prepend the column descriptions in --list-* output]:bool:(yes no)"
|
||||
"*:file:_files"
|
||||
)
|
||||
elif [ "$_ctags_type" = "exuberant" ]; then
|
||||
arguments=(
|
||||
"-a[append to tags file]"
|
||||
"-B[use backward searching patterns (?...?)]"
|
||||
"-e[output tag file for use with emacs]"
|
||||
"-f[write tags to specified file. - is stdout]:file:_files"
|
||||
"-F[use forward searching patterns (/.../)]"
|
||||
"-h[specify list of file extensions to be treated as include files]:"
|
||||
"-I[a list of tokens to be specifically handled is read from either the command line or the specified file]:"
|
||||
"-L[a list of input file names is read from the specified file. - is stdin]:file:_files"
|
||||
"-n[equivalent to --excmd=number]"
|
||||
"-N[equivalent to --excmd=pattern]"
|
||||
"-o[alternative to -f]:file:_files"
|
||||
"-R[equivalent to --recurse]"
|
||||
"-u[equivalent to --sort=no]"
|
||||
"-V[equivalent to --verbose]"
|
||||
"-x[print a tabular cross reference file to stdout]"
|
||||
"--append=[should tags be appended to existing tag file]:bool:(yes no)"
|
||||
"--etags-include=[include reference to file in emacs style tag file]:file:_files"
|
||||
"--exclude=[exclude files and directories matching pattern]:pattern"
|
||||
"--excmd=[uses the specified type of ex command to locate tags]:ex command type:(number pattern mix)"
|
||||
"--extra=[include extra tag entries for selected information (flags fq)]:flags"
|
||||
"--fields=[include selected extension fields (flags afmikKlnsStz)]:flags"
|
||||
"--file-scope=[should tags scoped only for a single file be included in output]:bool:(yes no)"
|
||||
"--filter=[behave as a filter, reading file names from stdin and writing tags to stdout]:bool:(yes no)"
|
||||
"--filter-terminator=[specify string to print to stdout following the tags for each file parsed when --filter is enabled]:string"
|
||||
"--format=[force output of specified tag file format]:level"
|
||||
"--help[help text]"
|
||||
"--if0=[should code within #if 0 conditionals be parsed]:bool:(yes no)"
|
||||
"--<lang>-kinds=[enable/disable tag kinds for <lang>]:kind"
|
||||
"--langdef=[define a new language to be parsed with regular expressions]:name"
|
||||
"--langmap=[override default mapping of language to input file extension]:maps"
|
||||
"--language-force=[force all files to be interpreted using specified language]:language:->language"
|
||||
"--languages=[restrict files scanned to these comma-separated languages]:language:->languages"
|
||||
"--license[print details of software license]"
|
||||
"--line-directives=[should #line directives be processed]:bool:(yes no)"
|
||||
"--links=[indicate whether symlinks should be followed]:bool:(yes no)"
|
||||
"--list-kinds=[list of all tag kinds for lang]:language:->language"
|
||||
"--list-languages[list of supported languages]"
|
||||
"--list-maps=[list of language mappings (both extensions and patterns)]:language:->language"
|
||||
"--options=[specify file (or dir) from which command line options should be read]:file:_files"
|
||||
"--recurse=[recurse]:bool:(yes no)"
|
||||
"--regex-<lang>=[define regex for locating tags in specific lang]:pattern"
|
||||
"--sort=[should tags be sorted]:argument:(yes no foldcase)"
|
||||
"--tag-relative=[should paths be relative to location of tag file]:argument:(yes no)"
|
||||
"--totals=[print stats about input and tag files]:arguments:(yes no)"
|
||||
"--verbose=[enable verbose messages describing actions]:bool:(yes no)"
|
||||
"--version[print version]”
|
||||
"*:file:_files"
|
||||
)
|
||||
elif [ "$_ctags_type" = "bsd" ]; then
|
||||
arguments=(
|
||||
"-a[append to tags file]"
|
||||
"-B[use backward searching patterns (?...?)]"
|
||||
"-d[create tags for #defines that don't take arguments]"
|
||||
"-F[use forward searching patterns (/.../)]"
|
||||
"-f[write tags to specified file]:file:_files"
|
||||
"-t[create tags for typedefs, structs, unions, and enums]"
|
||||
"-u[update the specified files in the tags file]"
|
||||
"-v[an index of the form expected by vgrind(1) is produced]"
|
||||
"-w[suppress warning diagnostics]"
|
||||
"-x[ctags produces a simple function index]"
|
||||
"*:file:_files"
|
||||
)
|
||||
fi
|
||||
|
||||
_arguments $arguments
|
||||
|
||||
if [[ "$state" = language* ]]; then
|
||||
local -a languages
|
||||
languages=(`ctags --list-languages | cut -d" " -f1`)
|
||||
if [ "$state" = "language" ]; then
|
||||
_wanted languages expl language compadd $languages
|
||||
elif [ "$state" = "languages" ]; then
|
||||
_values -s , languages $languages
|
||||
fi
|
||||
fi
|
||||
|
||||
return $(( compstate[nmatches] > 0 ? 0 : 1 ))
|
||||
#compdef ctags arduino-ctags ctags-exuberant ctags-universal
|
||||
|
||||
local context state line expl
|
||||
local -A opt_args
|
||||
local -a arguments
|
||||
|
||||
if [ -z "$_ctags_type" ]; then
|
||||
local output=`ctags --version 2>&1`
|
||||
if [[ "$output" = *Universal\ Ctags* ]]; then
|
||||
_ctags_type="universal"
|
||||
elif [[ "$output" = *Exuberant\ Ctags* ]]; then
|
||||
_ctags_type="exuberant"
|
||||
elif [[ "$output" = *usage:\ ctags* ]]; then
|
||||
_ctags_type="bsd"
|
||||
elif [[ "$output" = *Emacs* ]]; then
|
||||
_ctags_type="etags"
|
||||
else
|
||||
_ctags_type="universal"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$_ctags_type" = "etags" ]; then
|
||||
_etags
|
||||
return $?
|
||||
fi
|
||||
|
||||
_ctags_languages() {
|
||||
_call_program languages $service --list-languages | sed -n 's/^\([A-Za-z][A-Za-z0-9#_+]*\).*/\1/p'
|
||||
}
|
||||
|
||||
if [[ "$PREFIX" = --alias-*=* ]]; then
|
||||
_message pattern
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --extras-*=* ]]; then
|
||||
_message flags
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --fields-*=* ]]; then
|
||||
_message flags
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --input-encoding-*=* ]]; then
|
||||
_message encoding
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --kinddef-*=* ]]; then
|
||||
_message kind
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --kinds-*=* ]]; then
|
||||
_message kind
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --map-*=* ]]; then
|
||||
_message pattern
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --mline-regex-*=* ]]; then
|
||||
_message pattern
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --param-*=* ]]; then
|
||||
_message argument
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --regex-*=* ]]; then
|
||||
_message pattern
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --roles-*.*=* ]] then
|
||||
_message role
|
||||
return 1
|
||||
elif [[ "$PREFIX" = --roles-*.* ]] then
|
||||
_message kind
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ "$_ctags_type" = "universal" ]; then
|
||||
arguments=(
|
||||
"-a[append to tags file]"
|
||||
"-B[use backward searching patterns (?...?)]"
|
||||
"-D[give definition for macro]:macro definition:"
|
||||
"-e[output tag file for use with emacs]"
|
||||
{-f+,-o+}"[write tags to specified file]:output file:_files"
|
||||
"-F[use forward searching patterns (/.../)]"
|
||||
"-h[specify a list of file extensions to be treated as include files]:extensions"
|
||||
"-I[specify a list of tokens to be specially handled]:identifier list"
|
||||
"-L[read a list of input file names from the specified file]:input file:_files"
|
||||
"-n[equivalent to --excmd=number]"
|
||||
"-N[equivalent to --excmd=pattern]"
|
||||
"(--recurse -R)--recurse=-[search files recursively]::bool:(yes no)"
|
||||
"(--recurse -R)-R[search files recursively]"
|
||||
"-u[equivalent to --sort=no]"
|
||||
"-x[print a tabular cross reference file to stdout]"
|
||||
"--alias--[add a pattern detecting a name, can be used as an alt name for lang]:language:->languageequals"
|
||||
"--append=-[should tags be appended to existing tag file]:bool:(yes no)"
|
||||
"--etags-include=-[include reference to file in emacs style tag file]:file:_files"
|
||||
"--exclude=-[exclude files and directories matching pattern]:pattern"
|
||||
"--exclude-exception=-[don't exclude files and directories matching pattern even if they match the pattern specified with --exclude]:pattern"
|
||||
"--excmd=-[uses the specified type of ex command to locate tags]:ex command type:(number pattern mix combine)"
|
||||
"--extras=-[include extra tag entries for selected information]:flags (fFgpqrs)"
|
||||
"--extras--[include <lang> own extra tag entries for selected information]:language:->languageequals"
|
||||
"--fields=-[include selected extension fields]:flags (aCeEfFikKlmnNpPrRsStxzZ)"
|
||||
"--fields--[include selected <lang> own extension fields]:language:->languageequals"
|
||||
"--filter=-[behave as a filter, reading file names from stdin and writing tags to stdout]:bool:(yes no)"
|
||||
"--filter-terminator=-[specify string to print to stdout following the tags for each file parsed when --filter is enabled]:string"
|
||||
"--format=-[force output of specified tag file format]:level"
|
||||
"(--guess-language-eagerly -G)"{--guess-language-eagerly,-G}"[guess the language of input file more eagerly]"
|
||||
{--help,-?}"[display help text]"
|
||||
"--help-full[display help text with experimental features]"
|
||||
"--if0=-[should code within #if 0 conditionals be parsed]:bool:(yes no)"
|
||||
"--input-encoding=-[specify encoding of all input files]:encoding"
|
||||
"--input-encoding--[specify encoding of the <lang> input files]:language:->languageequals"
|
||||
"--kinddef--[define new kind for <lang>]:language:->languageequals"
|
||||
"--kinds--[enable/disable tag kinds for <lang>]:language:->languageequals"
|
||||
"--langdef=-[define a new language to be parsed with regular expressions]:name"
|
||||
"--langmap=-[override default mapping of language to input file extension]:maps"
|
||||
"--language-force=-[force all files to be interpreted using specified language]:language:->language"
|
||||
"--languages=-[restrict files scanned to these comma-separated languages]:language:->languages"
|
||||
"--license[print details of software license]"
|
||||
"--line-directives=-[should #line directives be processed]:bool:(yes no)"
|
||||
"--links=-[indicate whether symlinks should be followed]:bool:(yes no)"
|
||||
"--list-aliases=-[list of alias patterns]:language:->language"
|
||||
"--list-excludes[list of exclude patterns for files/dirs]"
|
||||
"--list-extras=-[list of extra tag flags]:language:->language"
|
||||
"--list-features[list of compiled features]"
|
||||
"--list-fields=-[list of fields]:language:->language"
|
||||
"--list-kinds=-[list of all tag kinds for lang]:language:->language"
|
||||
"--list-kinds-full=-[list details of all tag kinds for lang]:language:->language"
|
||||
"--list-languages[list of supported languages]"
|
||||
"--list-map-extensions=-[list of language extensions in mapping]:language:->language"
|
||||
"--list-map-patterns=-[list of language patterns in mapping]:language:->language"
|
||||
"--list-maps=-[list of language mappings (both extensions and patterns)]:language:->language"
|
||||
"--list-mline-regex-flags[list of flags which can be used in a multiline regex parser definition]"
|
||||
"--list-params=-[list of language parameters. works with --machinable]:language:->language"
|
||||
"--list-pseudo-tags[list of pseudo tags]"
|
||||
"--list-regex-flags[list of flags which can be used in a regex parser definition]"
|
||||
"--list-roles=-[list of all roles of tag kinds specified for langs]:language:->language"
|
||||
"--list-subparsers=-[list of subparsers for the base lang]:language:->language"
|
||||
"--machinable=-[use tab separated representation in --list-* output]:bool:(yes no)"
|
||||
"--map--[set, add(+), or remove(-) the map for <lang>]:language:->languageequals"
|
||||
"--maxdepth=-[specify maximum recursion depth]:depth"
|
||||
"--mline-regex--[define multiline regex for locating tags in <lang>]:language:->languageequals"
|
||||
"--options=-[specify file (or dir) from which command line options should be read]:file:_files"
|
||||
"--options-maybe=-[same as --options but doesn't error]:file:_files"
|
||||
"--optlib-dir=-[add or set dir to optlib search path]:dir:_files -/"
|
||||
"--output-encoding=-[the encoding to write the tag file in]:encoding"
|
||||
"--output-format=-[specify the output format]:format:(u-ctags e-ctags etags xref)"
|
||||
"--param--[set <lang> specific parameter]:language:->languageequals"
|
||||
"--pattern-length-limit=-[cutoff patterns of tag entries after N characters]:number"
|
||||
"--print-language[don't make tags file but just print the guessed lang name for input file]"
|
||||
"--pseudo-tags=-[enable/disable emitting pseudo tag named ptag. if *, enable emitting all pseudo tags]:ptag"
|
||||
"--put-field-prefix[put UCTAGS as prefix for the name of fields newly introducted in universal ctags]"
|
||||
"--quiet=-[don't print notice class messages]:bool:(yes no)"
|
||||
"--regex--[define regex for locating tags in specific lang]:language:->languageequals"
|
||||
"--roles--[enable/disable tag roles for kinds of <lang>]:language:->languagedot"
|
||||
"--sort=-[should tags be sorted]:argument:(yes no foldcase)"
|
||||
"--tag-relative=-[should paths be relative to location of tag file]:argument:(yes no always never)"
|
||||
"--totals=-[print stats about input and tag files]:arguments:(yes no extra)"
|
||||
"(--verbose -V)--verbose=-[enable verbose messages describing actions]:bool:(yes no)"
|
||||
"(--verbose -V)-V[enable verbose messages describing actions]"
|
||||
"--version[print version]"
|
||||
"--with-list-header=-[prepend the column descriptions in --list-* output]:bool:(yes no)"
|
||||
"*:file:_files"
|
||||
)
|
||||
elif [ "$_ctags_type" = "exuberant" ]; then
|
||||
arguments=(
|
||||
"-a[append to tags file]"
|
||||
"-B[use backward searching patterns (?...?)]"
|
||||
"-e[output tag file for use with emacs]"
|
||||
{-f+,-o+}"[write tags to specified file]:output file:_files"
|
||||
"-F[use forward searching patterns (/.../)]"
|
||||
"-h[specify a list of file extensions to be treated as include files]:extensions"
|
||||
"-I[specify a list of tokens to be specially handled]:identifier list"
|
||||
"-L[read a list of input file names from the specified file]:input file:_files"
|
||||
"-n[equivalent to --excmd=number]"
|
||||
"-N[equivalent to --excmd=pattern]"
|
||||
"(--recurse -R)--recurse=-[search files recursively]::bool:(yes no)"
|
||||
"(--recurse -R)-R[search files recursively]"
|
||||
"-u[equivalent to --sort=no]"
|
||||
"-x[print a tabular cross reference file to stdout]"
|
||||
"--append=-[should tags be appended to existing tag file]:bool:(yes no)"
|
||||
"--etags-include=-[include reference to file in emacs style tag file]:file:_files"
|
||||
"--exclude=-[exclude files and directories matching pattern]:pattern"
|
||||
"--excmd=-[uses the specified type of ex command to locate tags]:ex command type:(number pattern mix)"
|
||||
"--extra=-[include extra tag entries for selected information]:flags (fg)"
|
||||
"--fields=-[include selected extension fields]:flags (afmikKlnsStz)"
|
||||
"--file-scope=-[should tags scoped only for a single file be included in output]:bool:(yes no)"
|
||||
"--filter=-[behave as a filter, reading file names from stdin and writing tags to stdout]:bool:(yes no)"
|
||||
"--filter-terminator=-[specify string to print to stdout following the tags for each file parsed when --filter is enabled]:string"
|
||||
"--format=-[force output of specified tag file format]:level"
|
||||
"--help[display help text]"
|
||||
"--if0=-[should code within #if 0 conditionals be parsed]:bool:(yes no)"
|
||||
"--langdef=-[define a new language to be parsed with regular expressions]:name"
|
||||
"--langmap=-[override default mapping of language to input file extension]:maps"
|
||||
"--language-force=-[force all files to be interpreted using specified language]:language:->language"
|
||||
"--languages=-[restrict files scanned to these comma-separated languages]:language:->languages"
|
||||
"--license[print details of software license]"
|
||||
"--line-directives=-[should #line directives be processed]:bool:(yes no)"
|
||||
"--links=-[indicate whether symlinks should be followed]:bool:(yes no)"
|
||||
"--list-kinds=-[list of all tag kinds for lang]:language:->language"
|
||||
"--list-languages[list of supported languages]"
|
||||
"--list-maps=-[list of language mappings (both extensions and patterns)]:language:->language"
|
||||
"--options=-[specify file (or dir) from which command line options should be read]:file:_files"
|
||||
"--regex--[define regex for locating tags in specific lang]:language:->language"
|
||||
"--sort=-[should tags be sorted]:argument:(yes no foldcase)"
|
||||
"--tag-relative=-[should paths be relative to location of tag file]:argument:(yes no)"
|
||||
"--totals=-[print stats about input and tag files]:arguments:(yes no)"
|
||||
"(--verbose -V)--verbose=-[enable verbose messages describing actions]:bool:(yes no)"
|
||||
"(--verbose -V)-V[enable verbose messages describing actions]"
|
||||
"--version[print version]"
|
||||
"*:file:_files"
|
||||
)
|
||||
if [[ "$PREFIX" = -* ]]; then
|
||||
local -a languages=(`_ctags_languages`)
|
||||
local -a languages2
|
||||
for language in $languages; do
|
||||
arguments+=("--$language-kinds=-:kinds")
|
||||
done
|
||||
fi
|
||||
elif [ "$_ctags_type" = "bsd" ]; then
|
||||
arguments=(
|
||||
"-a[append to tags file]"
|
||||
"-B[use backward searching patterns (?...?)]"
|
||||
"-d[create tags for #defines that don't take arguments]"
|
||||
"-F[use forward searching patterns (/.../)]"
|
||||
"-f+[write tags to specified file]:output file:_files"
|
||||
"-t[create tags for typedefs, structs, unions, and enums]"
|
||||
"-u[update the specified files in the tags file]"
|
||||
"-v[an index of the form expected by vgrind(1) is produced]"
|
||||
"-w[suppress warning diagnostics]"
|
||||
"-x[ctags produces a simple function index]"
|
||||
"*:file:_files"
|
||||
)
|
||||
fi
|
||||
|
||||
_arguments -s $arguments
|
||||
|
||||
if [ "$state" = "language" ]; then
|
||||
local -a languages=(`_ctags_languages`)
|
||||
_wanted languages expl language compadd -a languages
|
||||
elif [ "$state" = "languageequals" ]; then
|
||||
local -a languages=(`_ctags_languages`)
|
||||
_wanted languages expl language compadd -S = -a languages
|
||||
elif [ "$state" = "languagedot" ]; then
|
||||
local -a languages=(`_ctags_languages`)
|
||||
_wanted languages expl language compadd -S . -a languages
|
||||
elif [ "$state" = "languages" ]; then
|
||||
local -a languages=(`_ctags_languages`)
|
||||
_values -s , languages $languages
|
||||
fi
|
||||
|
||||
return $(( compstate[nmatches] > 0 ? 0 : 1 ))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue