mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-29 05:03:46 +08:00
e8a7f7eb8e
* Add `__reg_run_reg_safely` for quering keys, and: - `reg` placeholder - try make key ccompletion for `__reg_add_complete_args`: doesn't work * Simplify `__reg_run_reg_safely` * Fix key completion in `__reg_add_complete_args` * Add key completion to `delete` subcommand * Add key completion to `export` subcommand * Add key completion for `query` subcommand * Add key completion for `save` subcommand * Remove `reg` placeholder * Remove `which` check
194 lines
7.0 KiB
Fish
194 lines
7.0 KiB
Fish
function __reg_run_reg_safely
|
|
set -l output (reg $argv | tr -d '\r' | tail --lines +2 | string collect)
|
|
if not string match -q -r "reg: Invalid syntax*" -- $output
|
|
set output (string split \n -- $output)
|
|
echo $output | string replace -a " " \n
|
|
end
|
|
end
|
|
|
|
function __reg_add_complete_args -a previous_token
|
|
if test "$previous_token" = add
|
|
set -l current_token (commandline -tc)
|
|
__reg_run_reg_safely query $current_token
|
|
return
|
|
end
|
|
|
|
if test "$previous_token" = /t
|
|
echo 'REG_SZ
|
|
REG_MULTI_SZ
|
|
REG_DWORD_BIG_ENDIAN
|
|
REG_DWORD
|
|
REG_BINARY
|
|
REG_DWORD_LITTLE_ENDIAN
|
|
REG_LINK
|
|
REG_FULL_RESOURCE_DESCRIPTOR
|
|
REG_EXPAND_SZ'
|
|
return
|
|
end
|
|
|
|
if not __fish_seen_argument -w v -w ve
|
|
echo -e '/v\tSpecify the name of the add registry entry
|
|
/ve\tSpecify that the added registry entry has a null value'
|
|
end
|
|
|
|
echo -e '/t\tSpecify the type for the registry entry
|
|
/s\tSpecify the character to be used
|
|
/d\tSpecify the data for the new registry entry
|
|
/f\tAdd the registry entry without prompting for confirmation
|
|
/?\tShow help'
|
|
end
|
|
|
|
function __reg_compare_complete_args
|
|
if not __fish_seen_argument -w v -w ve
|
|
echo -e '/v\tSpecify the value name
|
|
/ve\tSpecify that only entries that have a value name of null should be compared'
|
|
end
|
|
|
|
if not __fish_seen_argument -w oa -w od -w os -w on
|
|
echo -e '/oa\tSpecify that all differences and matches are displayed
|
|
/od\tSpecify that only differences are displayed
|
|
/os\tSpecify that only matches are displayed
|
|
/on\tSpecify that nothing is displayed'
|
|
end
|
|
|
|
echo -e '/s\tCompare all subkeys and entries recursively
|
|
/?\tShow help'
|
|
end
|
|
|
|
function __reg_copy_complete_args
|
|
echo -e '/s\tCopy all subkeys and entries under the specified subkey
|
|
/f\tCopy the subkey without prompting for confirmation
|
|
/?\tShow help'
|
|
end
|
|
|
|
function __reg_delete_complete_args -a previous_token
|
|
if test "$previous_token" = delete
|
|
set -l current_token (commandline -tc)
|
|
__reg_run_reg_safely query $current_token
|
|
return
|
|
end
|
|
|
|
if not __fish_seen_argument -w v -w ve -w va
|
|
echo -e '/v\tDelete a specific entry under the subkey
|
|
/ve\tSpecify that only entries that have no value will be deleted
|
|
/va\tDelete all entries under the specified subkey'
|
|
end
|
|
|
|
echo -e '/f\tDelete the existing registry subkey or entry without asking for confirmation
|
|
/?\tShow help'
|
|
end
|
|
|
|
function __reg_export_complete_args -a previous_token
|
|
if test "$previous_token" = export
|
|
set -l current_token (commandline -tc)
|
|
__reg_run_reg_safely query $current_token
|
|
return
|
|
end
|
|
|
|
echo -e '/y\tOverwrite any existing file with the name filename without prompting for confirmation
|
|
/?\tShow help'
|
|
end
|
|
|
|
function __reg_query_complete_args -a previous_token
|
|
if test "$previous_token" = query
|
|
set -l current_token (commandline -tc)
|
|
__reg_run_reg_safely query $current_token
|
|
return
|
|
end
|
|
|
|
if test "$previous_token" = /t
|
|
echo 'REG_SZ
|
|
REG_MULTI_SZ
|
|
REG_EXPAND_SZ
|
|
REG_DWORD
|
|
REG_BINARY
|
|
REG_NONE'
|
|
return
|
|
end
|
|
|
|
if not __fish_seen_argument -w v -w ve
|
|
echo -e '/v\tSpecify the registry value name
|
|
/ve\tRun a query for value names that are empty'
|
|
end
|
|
|
|
if not __fish_seen_argument -w k -w d
|
|
echo -e '/k\tSpecify to search in key names only
|
|
/d\tSpecify to search in data only'
|
|
end
|
|
|
|
echo -e '/se\tSpecify the single value separator
|
|
/f\tSpecify the data or pattern to search for
|
|
/c\tSpecify that the query is case sensitive
|
|
/e\tSpecify to return only exact matches
|
|
/t\tSpecify registry types to search
|
|
/z\tSpecify to include the numeric equivalent for the registry type in search results
|
|
/?\tShow help'
|
|
end
|
|
|
|
function __reg_save_complete_args -a previous_token
|
|
if test "$previous_token" = save
|
|
set -l current_token (commandline -tc)
|
|
__reg_run_reg_safely query $current_token
|
|
return
|
|
end
|
|
|
|
echo -e '/y\tOverwrite an existing file with the name filename without prompting for confirmation
|
|
/?\tShow help'
|
|
end
|
|
|
|
function __reg_complete_args -d 'Function to generate args'
|
|
set -l previous_token (commandline -oc)[-1]
|
|
|
|
if __fish_seen_subcommand_from add
|
|
__reg_add_complete_args $previous_token
|
|
else if __fish_seen_subcommand_from compare
|
|
__reg_compare_complete_args
|
|
else if __fish_seen_subcommand_from copy
|
|
__reg_copy_complete_args
|
|
else if __fish_seen_subcommand_from delete
|
|
__reg_delete_complete_args $previous_token
|
|
else if __fish_seen_subcommand_from export
|
|
__reg_export_complete_args $previous_token
|
|
else if __fish_seen_subcommand_from query
|
|
__reg_query_complete_args $previous_token
|
|
else if __fish_seen_subcommand_from save
|
|
__reg_save_complete_args $previous_token
|
|
end
|
|
end
|
|
|
|
complete -c reg -f -a '(__reg_complete_args)'
|
|
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a add \
|
|
-d 'Add a new subkey or entry'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a compare \
|
|
-d 'Compare specified registry subkeys or entries'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a copy \
|
|
-d 'Copy a registry entry'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a delete \
|
|
-d 'Delete a subkey or entries'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a export \
|
|
-d 'Copy the specified subkeys, entries, and values of the local computer into a file'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a import \
|
|
-d 'Copy the contents of a file that contains registry data into the registry of the local computer'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a load \
|
|
-d 'Write saved subkeys and entries into a different subkey in the registry'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a query \
|
|
-d 'Return a list of the next tier of subkeys and entries'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a restore \
|
|
-d 'Write saved subkeys and entries back'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a save \
|
|
-d 'Save a copy of specified subkeys, entries, and values of the registry in a specified file'
|
|
complete -c reg -f \
|
|
-n 'not __fish_seen_subcommand_from add compare copy delete export import load query restore save unload' -a unload \
|
|
-d 'Remove a section of the registry that was loaded using the reg load operation'
|