mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-12-25 19:53:50 +08:00
262e2d5fe6
* feat(function): move cmd completion function to a separate file * feat(completion): support wine cmd subcommand * feat(completion): support wine control subcommand * feat(completion): support wine eject subcommand * feat(completion): support wine explorer subcommand * feat(completion): support wine explorer subcommand for desktops * feat(completion): support wine start subcommand * feat(completion): support wine winemenubuilder subcommand * feat(completion): support wine winepath subcommand * fix(function): rename function for cmd argument completion * feat(function): implement function to complete registry keys * feat(completion): support wine regedit subcommand * feat(function): add top-level key descriptions * fix(completion): remove redundant comment * feat(completion): support wine msiexec subcommand * refactor(completion): group code into functions * feat(completion): enhance subcommand descriptions
396 lines
14 KiB
Fish
396 lines
14 KiB
Fish
function __fish_wine_explorer__complete_desktop_arg
|
|
set -l current_token (commandline -tc)
|
|
|
|
switch "$current_token"
|
|
case '/desktop=*x*'
|
|
return
|
|
case '/desktop=*'
|
|
printf '%sx' "$current_token"
|
|
end
|
|
end
|
|
|
|
function __fish_msiexec__option_completion_condition
|
|
set -l token (commandline -oc)[3]
|
|
|
|
not string match --quiet --regex '^/(uninstall|[ipyz])$|^/[fjql]' -- "$token"
|
|
end
|
|
|
|
function __fish_msiexec_complete_option_arg
|
|
set -l current_token (commandline -tc)
|
|
|
|
switch "$current_token"
|
|
case '/f*'
|
|
set values 'p\tReinstall the file if it is missing' \
|
|
'o\tReinstall the file if it is missing or if any older version is installed' \
|
|
'e\tReinstall the file if it is missing, or if the installed version is equal or older' \
|
|
'd\tReinstall the file if it is missing or a different version is installed' \
|
|
'c\tReinstall the file if it is missing or the checksum does not match' \
|
|
'a\tReinstall all files' \
|
|
'u\tRewrite all required user registry entries' \
|
|
'm\tRewrite all required machine registry entries' \
|
|
's\tOverwrite any conflicting shortcuts' \
|
|
'v\tRecache the local installation package from the source installation package'
|
|
|
|
case '/q*'
|
|
set values 'n\tDisable UI' \
|
|
'b\tShow the basic UI' \
|
|
'r\tShow the reduced UI' \
|
|
'f\tShow the full UI'
|
|
|
|
case '/l*'
|
|
set values '*\tEnable all options except v and x' \
|
|
'i\tEnable status messages' \
|
|
'w\tEnable warning messages' \
|
|
'e\tEnable error messages' \
|
|
'a\tEnable messages for action startups' \
|
|
'r\tEnable messages for action records' \
|
|
'u\tEnable messages for user requests' \
|
|
'c\tEnable messages for initial UI parameters' \
|
|
'm\tEnable messages for out of memory errors' \
|
|
'o\tEnable messages for out of disk space errors' \
|
|
'p\tEnable messages for terminal properties' \
|
|
'v\tEnable verbose messages' \
|
|
'x\tEnable messages for debugging' \
|
|
'+\tAppend messages to a file' \
|
|
'!\tFlush each line of messages'
|
|
end
|
|
|
|
for value in $values
|
|
echo -e "$current_token$value"
|
|
end
|
|
end
|
|
|
|
function __fish_wine__complete_cmd_subcommand --argument-names command
|
|
set -l condition '__fish_seen_subcommand_from cmd'
|
|
complete -c $command -a '(__fish_cmd__complete_args)' -n $condition
|
|
|
|
set -l c_and_k_condition 'not __fish_seen_argument -w c -w k'
|
|
|
|
complete -c $command -a /c \
|
|
-d 'Run the command and stop' \
|
|
-n "$condition && $c_and_k_condition"
|
|
|
|
complete -c $command -a /k \
|
|
-d 'Run the command and continue' \
|
|
-n "$condition && $c_and_k_condition"
|
|
|
|
complete -c $command -a /s \
|
|
-d 'Modify the treatment of string after /c or /k' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /q -d 'Turn echo off' -n $condition
|
|
|
|
complete -c $command -a /d \
|
|
-d 'Disable execution of AutoRun commands' \
|
|
-n $condition
|
|
|
|
set -l a_and_u_condition 'not __fish_seen_argument -w a -w u'
|
|
|
|
complete -c $command -a /a \
|
|
-d 'Format internal command output as ANSI' \
|
|
-n "$condition && $a_and_u_condition"
|
|
|
|
complete -c $command -a /u \
|
|
-d 'Format internal command output as Unicode' \
|
|
-n "$condition && $a_and_u_condition"
|
|
|
|
complete -c $command -a /t \
|
|
-d 'Set the background and foreground color' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /e -d 'Manage command extensions' -n $condition
|
|
|
|
complete -c $command -a /f \
|
|
-d 'Manage file and directory name completion' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /v \
|
|
-d 'Manage delayed environment variable expansion' \
|
|
-n $condition
|
|
|
|
complete -c $command -a '/?' -d 'Show help' -n $condition
|
|
end
|
|
|
|
function __fish_wine__complete_control_subcommand --argument-names command
|
|
set -l condition '__fish_seen_subcommand_from control'
|
|
|
|
complete -c $command \
|
|
-a 'COLOR DATE/TIME DESKTOP INTERNATIONAL KEYBOARD MOUSE PORTS PRINTERS' \
|
|
-n $condition
|
|
end
|
|
|
|
function __fish_wine__complete_eject_subcommand --argument-names command
|
|
set -l condition '__fish_seen_subcommand_from eject'
|
|
complete -c $command -s h -d 'Show help' -n $condition
|
|
complete -c $command -s a -d 'Eject all the CD drives' -n $condition
|
|
complete -c $command -s u -d 'Unmount the CD drives' -n $condition
|
|
end
|
|
|
|
function __fish_wine__complete_explorer_subcommand --argument-names command
|
|
set -l condition '__fish_seen_subcommand_from explorer'
|
|
|
|
complete -c $command -a '(__fish_wine_explorer__complete_desktop_arg)' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /n -d 'Use the single pain view' -n $condition
|
|
complete -c $command -a /e, -d 'Use the default view' -n $condition
|
|
|
|
complete -c $command -a /root, -d 'Specify the root level of a view' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /select, -d 'Specify the selection in a view' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /desktop= -d 'Specify the desktop name' \
|
|
-n $condition
|
|
end
|
|
|
|
function __fish_wine__complete_msiexec_subcommand --argument-names command
|
|
set -l condition '__fish_seen_subcommand_from msiexec'
|
|
complete -c $command -a '/? /h' -d 'Show help' -n $condition
|
|
|
|
complete -c $command -a '(__fish_msiexec_complete_option_arg)' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /i \
|
|
-d 'Install the software' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
|
|
set -l a_condition '__fish_seen_argument -w i -w p'
|
|
|
|
complete -c $command -a /a \
|
|
-d 'Use the administrator network' \
|
|
-n "$condition && $a_condition"
|
|
|
|
complete -c $command -a /f \
|
|
-d 'Repair the installation of software' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
|
|
complete -c $command -a /uninstall \
|
|
-d 'Uninstall the software' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
|
|
complete -c $command -a /j \
|
|
-d 'Advertise the software' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
|
|
complete -c $command -a /p \
|
|
-d 'Apply the patch to software' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
|
|
complete -c $command -a /q \
|
|
-d 'Change the UI while installing software' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
|
|
complete -c $command -a /l \
|
|
-d 'Change the logging' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
|
|
complete -c $command -a /y \
|
|
-d 'Register the MSI service' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
|
|
complete -c $command -a /z \
|
|
-d 'Register the MSI service' \
|
|
-n "$condition && __fish_msiexec__option_completion_condition"
|
|
end
|
|
|
|
function __fish_wine__complete_regedit_subcommand --argument-names command
|
|
set -l condition '__fish_seen_subcommand_from regedit'
|
|
complete -c $command -a '/?' -d 'Show help' -n $condition
|
|
|
|
complete -c $command -a /L \
|
|
-d 'Specify the location of system.dat file' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /R \
|
|
-d 'Specify the location of user.dat file' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /C \
|
|
-d 'Import contents of a registry file' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /D \
|
|
-d 'Delete a registry key' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /E \
|
|
-d 'Export contents to a registry file' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /S \
|
|
-d 'Do not display messages' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /V \
|
|
-d 'Launch the GUI in an advanced mode' \
|
|
-n $condition
|
|
|
|
complete -c $command -a '(__fish_reg__complete_keys)' \
|
|
-n $condition
|
|
end
|
|
|
|
function __fish_wine__complete_start_subcommand --argument-names command
|
|
set -l condition '__fish_seen_subcommand_from start'
|
|
complete -c $command -a '/?' -d 'Show help' -n $condition
|
|
|
|
complete -c $command -a /d \
|
|
-d 'Specify the directory for a program' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /b \
|
|
-d "Don't create the new console for a progra" \
|
|
-n $condition
|
|
|
|
complete -c $command -a /i \
|
|
-d 'Clear the environment for a program' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /min \
|
|
-d 'Start a program in the minimized window' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /max \
|
|
-d 'Start a program in the minimized window' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /low \
|
|
-d 'Start a program in the idle priority class' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /normal \
|
|
-d 'Start a program in the normal priority class' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /high \
|
|
-d 'Start a program in the high priority class' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /realtime \
|
|
-d 'Start a program in the realtime priority class' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /abovenormal \
|
|
-d 'Start a program in the abovenormal priority class' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /belownormal \
|
|
-d 'Start a program in the belownormal priority class' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /node \
|
|
-d 'Specify the NUMA node for a program' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /affinity \
|
|
-d 'Specify the affinity mask for a program' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /wait \
|
|
-d 'Wait for a program to exit' \
|
|
-n $condition
|
|
|
|
complete -c $command -a /unix \
|
|
-d 'Use the Unix filename for a program' \
|
|
-n $condition
|
|
end
|
|
|
|
function __fish_wine__complete_winemenubuilder_subcommand --argument-names command
|
|
complete -c $command -a /w \
|
|
-d 'Wait till the shortcut can be created' \
|
|
-n '__fish_seen_subcommand_from winemenubuilder'
|
|
end
|
|
|
|
function __fish_wine__complete_winepath_subcommand --argument-names command
|
|
set -l condition '__fish_seen_subcommand_from winepath'
|
|
complete -c $command -s h -d 'Show help' -n $condition
|
|
complete -c $command -s v -d 'Show version' -n $condition
|
|
|
|
complete -c $command -s u -l unix \
|
|
-d 'Convert a Windows path to the Unix one' \
|
|
-n $condition
|
|
|
|
complete -c $command -s w -l windows \
|
|
-d 'Convert a Unix path to the Windows one' \
|
|
-n $condition
|
|
|
|
complete -c $command -s l -l long \
|
|
-d 'Convert a Windows path to the long format' \
|
|
-n $condition
|
|
|
|
complete -c $command -s s -l short \
|
|
-d 'Convert a Windows path to the short format' \
|
|
-n $condition
|
|
end
|
|
|
|
set -l command wine
|
|
complete -c $command -f
|
|
|
|
complete -c $command -l help -d 'Show help'
|
|
complete -c $command -l version -d 'Show version'
|
|
|
|
set -l subcommands_with_descriptions 'cacls\t"Edit ACLs"' \
|
|
'clock\t"Open the clock"' \
|
|
'cmd\t"Open the command prompt"' \
|
|
'cmdlgtst\t"commdlg.dll test jig"' \
|
|
'control\t"Open control panel"' \
|
|
'eject\t"Eject optical discs"' \
|
|
'expand\t"Expand cabinet files"' \
|
|
'explorer\t"Open Explorer"' \
|
|
'hh\t"Open HTML help"' \
|
|
'icinfo\t"List installed video compressors"' \
|
|
'iexplore\t"Open Internet Explorer"' \
|
|
'lodctr\t"Load performance monitor counters"' \
|
|
'msiexec\t"Open an installer for .msi files"' \
|
|
'net\t"Manage services"' \
|
|
'notepad\t"Notepad, a simple text editor"' \
|
|
'oleview\t"Browse and explore COM objects as well as configure DCOM"' \
|
|
'progman\t"Open Program manager"' \
|
|
'reg\t"Edit registry though command line"' \
|
|
'regedit\t"Edit registry"' \
|
|
'regsvr32\t"Register OLE components in the registry"' \
|
|
'rpcss\t"Open rpcss.exe"' \
|
|
'rundll32\t"Load a DLL and run an entry point"' \
|
|
'secedit\t"Edit security configuration"' \
|
|
'services\t"Manages services"' \
|
|
'spoolsv\t"Print documents"' \
|
|
'start\t"Start a program or open a file in the program"' \
|
|
'svchost\t"Host process for services"' \
|
|
'taskmgr\t"Open Task Manager"' \
|
|
'uninstaller\t"Uninstall a program"' \
|
|
'unlodctr\t"Unload performance monitor counters"' \
|
|
'view\t"View metafiles"' \
|
|
'wineboot\t"Reboot Wine"' \
|
|
'winebrowser\t"Launch native OS browser or mail client"' \
|
|
'winecfg\t"Configure wine through a GUI"' \
|
|
'wineconsole\t"Open Windows console"' \
|
|
'winedbg\t"Open debugger core"' \
|
|
'winedevice\t"Manages devices"' \
|
|
'winefile\t"Open file explorer"' \
|
|
'winemenubuilder\t"Build Unix menu entries"' \
|
|
'winemine\t"classic minesweeper game"' \
|
|
'winepath\t"Translate between Windows and Unix paths formats"' \
|
|
'winetest\t"Run DLL conformance test programs"' \
|
|
'winevdm\t"Open DOS"' \
|
|
'winhelp\t"Open help"' \
|
|
'winhlp32\t"HOpen help"' \
|
|
'winver\t"Show about information"' \
|
|
'wordpad\t"Open WordPad"' \
|
|
'write\t"Open WordPad"' \
|
|
'xcopy\t"Run xcopy"'
|
|
|
|
set -l subcommands (string replace --regex '\\\t.+' '' -- $subcommands_with_descriptions)
|
|
set -l root_condition "not __fish_seen_subcommand_from $subcommands"
|
|
complete -c $command -a "$subcommands_with_descriptions" -n $root_condition
|
|
|
|
__fish_wine__complete_cmd_subcommand $command
|
|
__fish_wine__complete_control_subcommand $command
|
|
__fish_wine__complete_eject_subcommand $command
|
|
__fish_wine__complete_explorer_subcommand $command
|
|
__fish_wine__complete_msiexec_subcommand $command
|
|
__fish_wine__complete_regedit_subcommand $command
|
|
__fish_wine__complete_start_subcommand $command
|
|
__fish_wine__complete_winemenubuilder_subcommand $command
|
|
__fish_wine__complete_winepath_subcommand $command
|