Navigation Menu

Skip to content

Commit

Permalink
* __fish_complete_subcommand_root now passes arguments to
Browse files Browse the repository at this point in the history
  __fish_complete_subcommand

* sudo:
  - now can be completed bu group and user (-u and -g keys).
  - subcommand completion is fixed

* __fish_complete_proc.fish is added to complete killall command with
  list of running processes

* __fish_complete_tex.fish is updated with common options

* __fish_make_completion_signals.fish is added to make a list of kill
  signals for kill and killall

* completions:
 - minor filetype completions are added for djview, xpdf, mupdf, gv,
   xdvi
 - adduser is copmleted by user and group
 - dlocate and dpkg are completed by packages
 - find: -executable options is added
 - htop: options
 - funced and funcsave are completed by function names
 - ifdown and ifup are copmleted by interfaces
 - kill and killall: options, signals and processes
 - latexmk, ln, nm: options
 - lualatex and xelatex copmletions
 - sudo: -u and -g options
 - wvdial: presets
  • Loading branch information
gonchar committed Sep 23, 2011
1 parent c25c48f commit c66ec4d
Show file tree
Hide file tree
Showing 30 changed files with 175 additions and 39 deletions.
9 changes: 5 additions & 4 deletions share/completions/adduser.fish
Expand Up @@ -5,18 +5,19 @@
# have been hand edited since.
#

complete -c adduser -l conf --description 'Specify config file" -r
complete -x -c adduser -a "(__fish_complete_users; __fish_complete_groups)"
complete -c adduser -l conf --description 'Specify config file' -r
complete -c adduser -l disabled-login --description 'Do not run passwd to set the password'
complete -c adduser -l disabled-password --description 'Like --disabled-login, but logins are still possible (for example using SSH RSA keys) but not using password authentication'
complete -c adduser -l force-badname --description 'By default, user and group names are checked against the configurable regular expression NAME_REGEX (or NAME_REGEX if --system is specified) specified in the configuration file'
complete -c adduser -l gecos --description 'Set the gecos field for the new entry generated' -r
complete -c adduser -l gid --description 'When creating a group, this option forces the new groupid to be the given number' -r
complete -c adduser -l group --description 'When combined with --system, a group with the same name and ID as the system user is created'
complete -c adduser -l help --description 'Display brief instructions'
complete -c adduser -l home --description 'Use specified directory as the user's home directory' -x -a '(__fish_complete_directories)'
complete -c adduser -l shell --description 'Use shell as the user's login shell, rather than the default specified by the configuration file' -x -a '(cat /etc/shells)'
complete -c adduser -l home --description 'Use specified directory as the user\'s home directory' -x -a '(__fish_complete_directories)'
complete -c adduser -l shell --description 'Use shell as the user\'s login shell, rather than the default specified by the configuration file' -x -a '(cat /etc/shells)'
complete -c adduser -l ingroup --description 'Add the new user to GROUP instead of a usergroup or the default group defined by USERS_GID in the configuration file' -x -a '(cat /etc/group|cut -d : -f 1)'
complete -c adduser -l no-create-home --description 'Do not create the home directory, even if it doesn't exist'
complete -c adduser -l no-create-home --description 'Do not create the home directory, even if it doesni\'t exist'
complete -c adduser -l quiet --description 'Suppress informational messages, only show warnings and errors'
complete -c adduser -l debug --description 'Be verbose, most useful if you want to nail down a problem with adduser'
complete -c adduser -l system --description 'Create a system user or group'
Expand Down
3 changes: 3 additions & 0 deletions share/completions/djview.fish
@@ -0,0 +1,3 @@

complete -c djview -x -a "(__fish_complete_suffix .djvu)"

3 changes: 3 additions & 0 deletions share/completions/djview3.fish
@@ -0,0 +1,3 @@

complete -c djview3 -x -a "(__fish_complete_suffix .djvu)"

3 changes: 3 additions & 0 deletions share/completions/djview4.fish
@@ -0,0 +1,3 @@

complete -c djview4 -x -a "(__fish_complete_suffix .djvu)"

6 changes: 6 additions & 0 deletions share/completions/dlocate.fish
@@ -0,0 +1,6 @@

complete -c dlocate -s S -x -d 'List records that match filenames'
complete -c dlocate -s L -d 'List all files in the package' -xa '(__fish_print_packages)'
complete -c dlocate -o ls -d 'ls -ldF all files in the package' -xa '(__fish_print_packages)'
complete -c dlocate -o du -d 'du -sck all files in the package' -xa '(__fish_print_packages)'

6 changes: 6 additions & 0 deletions share/completions/dpkg.fish
@@ -0,0 +1,6 @@

complete -c dpkg -s i -l install -d 'Install .deb package' -xa '(__fish_complete_suffix .deb)'
complete -c dpkg -s r -l remove -d 'Remove package' -xa '(__fish_print_packages)'
complete -c dpkg -s P -l purge -d 'Purge package' -xa '(__fish_print_packages)'
complete -c dpkg -l force-all -d 'Continue on all problems'

5 changes: 3 additions & 2 deletions share/completions/find.fish
Expand Up @@ -36,8 +36,9 @@ complete -c find -o cmin --description "File status last changed specified numbe
complete -c find -o cnewer --description "File status last changed more recently than file was modified" -r
complete -c find -o ctime --description "File status last changed specified number of days ago" -r

complete -c find -o empty --description "File is empty and is either a regular file or a directory"
complete -c find -o false --description "Always false"
complete -c find -o empty --description "File is empty and is either a regular file or a directory"
complete -c find -o executable --description "File is executable"
complete -c find -o false --description "Always false"
complete -c find -o fstype --description "File is on filesystem of specified type" -a "(__fish_print_filesystems)" -r
complete -c find -o gid --description "Numeric group id of file" -r
complete -c find -o group --description "Group name of file" -a "(__fish_complete_groups)"
Expand Down
1 change: 1 addition & 0 deletions share/completions/funced.fish
@@ -0,0 +1 @@
complete -c funced -xa "(functions -na)" --description "Save function"
1 change: 1 addition & 0 deletions share/completions/funcsave.fish
@@ -0,0 +1 @@
complete -c funcsave -xa "(functions -na)" --description "Save function"
4 changes: 4 additions & 0 deletions share/completions/gv.fish
@@ -0,0 +1,4 @@
complete -c gv -x -a "(__fish_complete_suffix .ps)"
complete -c gv -x -a "(__fish_complete_suffix .ps.gz)"
complete -c gv -x -a "(__fish_complete_suffix .eps)"
complete -c gv -x -a "(__fish_complete_suffix .pdf)"
5 changes: 5 additions & 0 deletions share/completions/htop.fish
@@ -0,0 +1,5 @@
# Completions for top
complete -c htop -s d --description "Update interval" -x
complete -c htop -s u --description "Monitor effective UID" -x -a "(__fish_complete_users)"
complete -c htop -l sort-key -d 'Sort column' -xa "(htop --sort-key '')"

2 changes: 2 additions & 0 deletions share/completions/ifdown.fish
@@ -0,0 +1,2 @@
complete -x -c ifdown -a "(__fish_print_interfaces)" --description "Network interface"
complete -c ifdown -l force --description "force"
2 changes: 2 additions & 0 deletions share/completions/ifup.fish
@@ -0,0 +1,2 @@
complete -x -c ifup -a "(__fish_print_interfaces)" --description "Network interface"
complete -c ifup -l force --description "force"
31 changes: 3 additions & 28 deletions share/completions/kill.fish
@@ -1,38 +1,13 @@
# Completions for the kill command
__fish_make_completion_signals

set -l signals

if kill -L ^/dev/null >/dev/null

# Debian and some related systems use 'kill -L' to write out a numbered list
# of signals. Use this to complete on both number _and_ on signal name.

complete -c kill -s L --description "List codes and names of available signals"

set signals (kill -L | sed -e 's/\([0-9][0-9]*\) *\([A-Z,0-9][A-Z,0-9]*\)/\1 \2\n/g;s/ +/ /g' | sed -e 's/^ //' | sgrep -E '^[^ ]+')

else

# Posix systems print out the name of a signal using 'kill -l
# SIGNUM', so we use this instead.

complete -c kill -s l --description "List names of available signals"

for i in (seq 31)
set signals $signals $i" "(kill -l $i)
end

end

for i in $signals
for i in $__kill_signals
set number (echo $i | cut -d " " -f 1)
set name (echo $i | cut -d " " -f 2)
complete -c kill -o $number -d $name
complete -c kill -o $name -d $name
complete -c kill -o s -x -a \"$number\tSend\ $name\ signal\"
complete -c kill -o s -x -a \"$name\tSend\ $name\ signal\"
complete -c kill -o s -x -a \"$name\tSend\ $name\ signal\"
end
complete -c kill -xa '(__fish_complete_pids)'
20 changes: 20 additions & 0 deletions share/completions/killall.fish
@@ -0,0 +1,20 @@
__fish_make_completion_signals

for i in $__kill_signals
set number (echo $i | cut -d " " -f 1)
set name (echo $i | cut -d " " -f 2)
complete -c killall -o $number -d $name
complete -c killall -o $name -d $name
complete -c killall -o s -x -a \"$number\tSend\ $name\ signal\"
complete -c killall -o s -x -a \"$name\tSend\ $name\ signal\"
end
complete -c killall -xa '(__fish_complete_proc)'
complete -c killall -s e -l exact -d 'Require an exact match for very long names'
complete -c killall -s I -l ignore-case -d 'Do case insensitive process name match'
complete -c killall -s g -l process-group -d 'Kill the process group to which the process belongs. The kill signal is only sent once per group, even if multiple processes belonging to the same process group were found'
complete -c killall -s i -l interactive -d 'Interactively ask for confirmation before killing'
complete -c killall -s u -l user -d 'Kill only processes the specified user owns. Command names are optional'
complete -c killall -s w -l wait -d 'Wait for all killed processes to die. killall checks once per second if any of the killed processes still exist and only returns if none are left. Note that killall may wait forever if the signal was ignored, had no effect, or if the process stays in zombie state'
7 changes: 7 additions & 0 deletions share/completions/latexmk.fish
@@ -0,0 +1,7 @@
complete -c latexmk -x -a "(__fish_complete_suffix (commandline -ct) .tex '(La)TeX file')"
complete -c latexmk -o dvi -d "Make dvi"
complete -c latexmk -o ps -d "Make ps dvi->ps"
complete -c latexmk -o pdf -d "Make pdf"
complete -c latexmk -o pdfps -d "Make pdf dvi->ps->pdf"
complete -c latexmk -o pdfdvi -d "Make pdf dvi->pdf"

18 changes: 18 additions & 0 deletions share/completions/ln.fish
@@ -0,0 +1,18 @@
# completions for ln
# Author: SanskritFritz (gmail)

complete -c ln -f -s s -l symbolic -d 'make symbolic links instead of hard links'
complete -c ln -f -l backup=CONTROL -d 'make a backup of each existing destination file'
complete -c ln -f -s b -d 'like --backup but does not accept an argument'
complete -c ln -f -s d -l directory -d 'allow the superuser to attempt to hard link directories'
complete -c ln -f -s f -l force -d 'remove existing destination files'
complete -c ln -f -s i -l interactive -d 'prompt whether to remove destinations'
complete -c ln -f -s L -l logical -d 'make hard links to symbolic link references'
complete -c ln -f -s n -l no-dereference -d 'treat destination that is a symlink to a directory as if it were a normal file'
complete -c ln -f -s P -l physical -d 'make hard links directly to symbolic links'
complete -c ln -f -s S -l suffix=SUFFIX -d 'override the usual backup suffix'
complete -c ln -f -s t -l target-directory=DIRECTORY -d 'specify the DIRECTORY in which to create the links'
complete -c ln -f -s T -l no-target-directory -d 'treat LINK_NAME as a normal file'
complete -c ln -f -s v -l verbose -d 'print name of each linked file'
complete -c ln -f -l help -d 'display this help and exit'
complete -c ln -f -l version -d 'output version information and exit'
2 changes: 2 additions & 0 deletions share/completions/lualatex.fish
@@ -0,0 +1,2 @@
__fish_complete_tex lualatex

2 changes: 2 additions & 0 deletions share/completions/mupdf.fish
@@ -0,0 +1,2 @@
complete -c mupdf -x -a "(__fish_complete_suffix .pdf)"

29 changes: 29 additions & 0 deletions share/completions/nm.fish
@@ -0,0 +1,29 @@
complete -c nm -s a -l debug-syms -d 'Display debugger-only symbols'
complete -c nm -s A -l print-file-name -d 'Print name of the input file before every symbol'
#complete -c nm -C -l demangle[=STYLE] Decode low-level symbol names into user-level names
# Same as --format=bsd
# The STYLE, if specified, can be `auto' (the default),
# `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java' or `gnat'
complete -c nm -l no-demangle -d 'Do not demangle low-level symbol names'
complete -c nm -s D -l dynamic -d 'Display dynamic symbols instead of normal symbols'
complete -c nm -l defined-only -d 'Display only defined symbols'
complete -c nm -s f -l format=FORMAT -d 'Use the output format FORMAT. FORMAT can be "bsd", "sysv" or "posix". The default is "bsd"'
complete -c nm -s g -l extern-only -d 'Display only external symbols'
complete -c nm -s l -l line-numbers -d 'Use debugging information to find a filename and line number for each symbol'
complete -c nm -s n -l numeric-sort -d 'Sort symbols numerically by address'
complete -c nm -s o -d 'Print name of the input file before every symbol'
complete -c nm -s p -l no-sort -d 'Do not sort the symbols'
complete -c nm -s P -l portability -d 'Same as --format=posix'
complete -c nm -s r -l reverse-sort -d 'Reverse the sense of the sort'
complete -c nm -l plugin -d 'Load the specified plugin'
complete -c nm -s S -l print-size -d 'Print size of defined symbols'
complete -c nm -s s -l print-armap -d 'Include index for symbols from archive members'
complete -c nm -l size-sort -d 'Sort symbols by size'
complete -c nm -l special-syms -d 'Include special symbols in the output'
complete -c nm -l synthetic -d 'Display synthetic symbols as well'
complete -c nm -s t -l radix=RADIX -d 'Use RADIX for printing symbol values'
complete -c nm -l target=BFDNAME -d 'Specify the target object format as BFDNAME'
complete -c nm -s u -l undefined-only -d 'Display only undefined symbols'
complete -c nm -s h -l help -d 'Display this information'
complete -c nm -s V -l version -d "Display this program's version number"

10 changes: 8 additions & 2 deletions share/completions/sudo.fish
Expand Up @@ -2,10 +2,16 @@
# Completion for sudo
#

complete -c sudo --description "Command to run" -x -a '(__fish_complete_subcommand_root)'

complete -c sudo -s h -n "__fish_no_arguments" --description "Display help and exit"
complete -c sudo -s v -n "__fish_no_arguments" --description "Validate"
complete -c sudo -s u -a "(__fish_complete_users)" -x -d "Run command as user"
complete -c sudo -s g -a "(__fish_complete_groups)" -x -d "Run command as group"
complete -c sudo -s E -d "Preserve environment"
complete -c sudo -s P -d "Preserve group vector"
complete -c sudo -s S -d "Read password from stdin"
complete -c sudo -s H -d "Set home"
complete -c sudo -s e -r -d "Edit"
complete -c sudo --description "Command to run" -x -a "(__fish_complete_subcommand_root -u -g)"

# Since sudo runs subcommands, it can accept any switches
complete -c sudo -u
1 change: 1 addition & 0 deletions share/completions/wvdial.fish
@@ -0,0 +1 @@
complete -x -c wvdial -a "(print_wvdial)" --description "wvdial connections"
1 change: 1 addition & 0 deletions share/completions/xdvi.fish
@@ -0,0 +1 @@
complete -c xdvi -x -a "(__fish_complete_suffix .dvi)"
2 changes: 2 additions & 0 deletions share/completions/xelatex.fish
@@ -0,0 +1,2 @@
__fish_complete_tex xelatex

1 change: 1 addition & 0 deletions share/completions/xpdf.fish
Expand Up @@ -2,6 +2,7 @@
# Completions for the xpdf command
# Vikas Gorur <vikas@80x25.org>
#
complete -c xpdf -x -a "(__fish_complete_suffix .pdf)"

complete -c xpdf -s g --description "Set the initial window geometry"
complete -c xpdf -o title --description "Set the window title"
Expand Down
4 changes: 4 additions & 0 deletions share/functions/__fish_complete_proc.fish
@@ -0,0 +1,4 @@
function __fish_complete_proc --description 'Complete by list of running processes'
ps a --no-headers --format comm | uniq

end
4 changes: 3 additions & 1 deletion share/functions/__fish_complete_subcommand_root.fish
Expand Up @@ -3,6 +3,8 @@
function __fish_complete_subcommand_root -d "Run the __fish_complete_subcommand function using a PATH containing /sbin and /usr/sbin"
set -l PATH_OLD $PATH
set PATH /sbin /usr/sbin $PATH
__fish_complete_subcommand
__fish_complete_subcommand $argv
set PATH $PATH_OLD


end
4 changes: 2 additions & 2 deletions share/functions/__fish_complete_suffix.fish
Expand Up @@ -26,10 +26,10 @@ function __fish_complete_suffix -d "Complete using files"
set suff $argv[2]
set desc (mimedb -d $suff)

case 2
case 3
set comp $argv[1]
set suff $argv[2]
set desc $argv[2]
set desc $argv[3]

end

Expand Down
11 changes: 11 additions & 0 deletions share/functions/__fish_complete_tex.fish
Expand Up @@ -7,4 +7,15 @@ function __fish_complete_tex -d "Common completions for all tex commands"
__fish_complete_suffix (commandline -ct) .tex '(La)TeX file'
)"

complete -c $argv -o file-line-error -d "Show errors in style file:line"
complete -c $argv -o no-file-line-error -d "Show errors not in style file:line"
complete -c $argv -o halt-on-error -d "Stop processing at the first error"
complete -c $argv -o interaction=batchmode -d "Set interation mode"
complete -c $argv -o interaction=nonstopmode -d "Set interation mode"
complete -c $argv -o interaction=scrollmode -d "Set interation mode"
complete -c $argv -o interaction=errorstopmode -d "Set interation mode"
complete -c $argv -o output-directory= -x -a "(__fish_complete_directories (commandline -ct))" -d "Output directory"
complete -c $argv -o shell-escape -d "Enable \write18{SHELL COMMAND}"
complete -c $argv -o no-shell-escape -d "Disable \write18{SHELL COMMAND}"
complete -c $argv -o src-specials -d "Insert source specials into the DVI file"
end
17 changes: 17 additions & 0 deletions share/functions/__fish_make_completion_signals.fish
@@ -0,0 +1,17 @@
function __fish_make_completion_signals --description 'Make list of kill signals for copmletion'
set -q __kill_signals; and return 0

if kill -L ^/dev/null >/dev/null
# Debian and some related systems use 'kill -L' to write out a numbered list
# of signals. Use this to complete on both number _and_ on signal name.
complete -c kill -s L --description "List codes and names of available signals"
set -g __kill_signals (kill -L | sed -e 's/\([0-9][0-9]*\) *\([A-Z,0-9][A-Z,0-9]*\)/\1 \2\n/g;s/ +/ /g' | sed -e 's/^ \+//' | sgrep -E '^[^ ]+')
else
# Posix systems print out the name of a signal using 'kill -l
# SIGNUM', so we use this instead.
complete -c kill -s l --description "List names of available signals"
for i in (seq 31)
set -g __kill_signals $signals $i" "(kill -l $i)
end
end
end

0 comments on commit c66ec4d

Please sign in to comment.