Switch abbreviation '-r' flag from --rename to --regex

This will be the more common option and provides consistency with
`string`.
This commit is contained in:
ridiculousfish 2022-12-10 14:16:26 -08:00
parent e08f4db1f9
commit d8dbb9b259
4 changed files with 22 additions and 29 deletions

View file

@ -44,6 +44,7 @@ Deprecations and removed features
- The ``fish_git_prompt`` will now only turn on features if the corresponding boolean variable has been set to a true value (of "1", "yes" or "true") instead of just checking if it is defined. This allows specifically turning features *off* without having to erase variables, e.g. via universal variables. If you have defined a variable to a different value and expect it to count as true, you need to change it (:issue:`9274`). - The ``fish_git_prompt`` will now only turn on features if the corresponding boolean variable has been set to a true value (of "1", "yes" or "true") instead of just checking if it is defined. This allows specifically turning features *off* without having to erase variables, e.g. via universal variables. If you have defined a variable to a different value and expect it to count as true, you need to change it (:issue:`9274`).
For example, ``set -g __fish_git_prompt_show_informative_status 0`` previously would have enabled informative status (because any value would have done so), now it turns it off. For example, ``set -g __fish_git_prompt_show_informative_status 0`` previously would have enabled informative status (because any value would have done so), now it turns it off.
- Abbreviations are no longer stored in universal variables. Existing universal abbreviations are still imported, but new abbreviations should be added to ``config.fish``. - Abbreviations are no longer stored in universal variables. Existing universal abbreviations are still imported, but new abbreviations should be added to ``config.fish``.
- The short option ``-r`` for abbreviations has changed from ``rename`` to ``regex``, for consistency with ``string``.
Scripting improvements Scripting improvements
---------------------- ----------------------

View file

@ -8,7 +8,7 @@ Synopsis
.. synopsis:: .. synopsis::
abbr --add NAME [--position command | anywhere] [--regex PATTERN] abbr --add NAME [--position command | anywhere] [-r | --regex PATTERN]
[--set-cursor[=MARKER]] [--set-cursor[=MARKER]]
[-f | --function] EXPANSION [-f | --function] EXPANSION
abbr --erase NAME ... abbr --erase NAME ...
@ -37,9 +37,8 @@ Abbreviations may be added to :ref:`config.fish <configuration>`. Abbreviations
.. synopsis:: .. synopsis::
abbr [-a | --add] NAME [--position command | anywhere] [--regex PATTERN] abbr [-a | --add] NAME [--position command | anywhere] [-r | --regex PATTERN]
[--set-cursor[=MARKER]] [--set-cursor[=MARKER]] [-f | --function] EXPANSION
[-f | --function] EXPANSION
``abbr --add`` creates a new abbreviation. With no other options, the string **NAME** is replaced by **EXPANSION**. ``abbr --add`` creates a new abbreviation. With no other options, the string **NAME** is replaced by **EXPANSION**.
@ -104,7 +103,7 @@ Other subcommands
:: ::
abbr [-r | --rename] OLD_NAME NEW_NAME abbr --rename OLD_NAME NEW_NAME
Renames an abbreviation, from *OLD_NAME* to *NEW_NAME* Renames an abbreviation, from *OLD_NAME* to *NEW_NAME*

View file

@ -277,27 +277,20 @@ maybe_t<int> builtin_abbr(parser_t &parser, io_streams_t &streams, const wchar_t
const wchar_t *cmd = argv[0]; const wchar_t *cmd = argv[0];
abbr_options_t opts; abbr_options_t opts;
// Note 1 is returned by wgetopt to indicate a non-option argument. // Note 1 is returned by wgetopt to indicate a non-option argument.
enum { NON_OPTION_ARGUMENT = 1, REGEX_SHORT, SET_CURSOR_SHORT }; enum { NON_OPTION_ARGUMENT = 1, SET_CURSOR_SHORT, RENAME_SHORT };
// Note the leading '-' causes wgetopter to return arguments in order, instead of permuting // Note the leading '-' causes wgetopter to return arguments in order, instead of permuting
// them. We need this behavior for compatibility with pre-builtin abbreviations where options // them. We need this behavior for compatibility with pre-builtin abbreviations where options
// could be given literally, for example `abbr e emacs -nw`. // could be given literally, for example `abbr e emacs -nw`.
static const wchar_t *const short_options = L"-afrseqgUh"; static const wchar_t *const short_options = L"-afr:seqgUh";
static const struct woption long_options[] = { static const struct woption long_options[] = {
{L"add", no_argument, 'a'}, {L"add", no_argument, 'a'}, {L"position", required_argument, 'p'},
{L"position", required_argument, 'p'}, {L"regex", required_argument, 'r'}, {L"set-cursor", optional_argument, SET_CURSOR_SHORT},
{L"regex", required_argument, REGEX_SHORT}, {L"function", no_argument, 'f'}, {L"rename", no_argument, RENAME_SHORT},
{L"set-cursor", optional_argument, SET_CURSOR_SHORT}, {L"erase", no_argument, 'e'}, {L"query", no_argument, 'q'},
{L"function", no_argument, 'f'}, {L"show", no_argument, 's'}, {L"list", no_argument, 'l'},
{L"rename", no_argument, 'r'}, {L"global", no_argument, 'g'}, {L"universal", no_argument, 'U'},
{L"erase", no_argument, 'e'}, {L"help", no_argument, 'h'}, {}};
{L"query", no_argument, 'q'},
{L"show", no_argument, 's'},
{L"list", no_argument, 'l'},
{L"global", no_argument, 'g'},
{L"universal", no_argument, 'U'},
{L"help", no_argument, 'h'},
{}};
int argc = builtin_count_args(argv); int argc = builtin_count_args(argv);
int opt; int opt;
@ -337,7 +330,7 @@ maybe_t<int> builtin_abbr(parser_t &parser, io_streams_t &streams, const wchar_t
} }
break; break;
} }
case REGEX_SHORT: { case 'r': {
if (opts.regex_pattern.has_value()) { if (opts.regex_pattern.has_value()) {
streams.err.append_format(_(L"%ls: Cannot specify multiple regex patterns\n"), streams.err.append_format(_(L"%ls: Cannot specify multiple regex patterns\n"),
CMD); CMD);
@ -359,7 +352,7 @@ maybe_t<int> builtin_abbr(parser_t &parser, io_streams_t &streams, const wchar_t
case 'f': case 'f':
opts.function = true; opts.function = true;
break; break;
case 'r': case RENAME_SHORT:
opts.rename = true; opts.rename = true;
break; break;
case 'e': case 'e':

View file

@ -56,30 +56,30 @@ abbr | grep 'a b c'
# Test renaming # Test renaming
abbr __abbr4 omega abbr __abbr4 omega
abbr | grep __abbr5 abbr | grep __abbr5
abbr -r __abbr4 __abbr5 abbr --rename __abbr4 __abbr5
abbr | grep __abbr5 abbr | grep __abbr5
# CHECK: abbr -a -- __abbr5 omega # CHECK: abbr -a -- __abbr5 omega
abbr -e __abbr5 abbr -e __abbr5
abbr | grep __abbr4 abbr | grep __abbr4
# Test renaming a nonexistent abbreviation # Test renaming a nonexistent abbreviation
abbr -r __abbr6 __abbr abbr --rename __abbr6 __abbr
# CHECKERR: abbr --rename: No abbreviation named __abbr6 # CHECKERR: abbr --rename: No abbreviation named __abbr6
# Test renaming to a abbreviation with spaces # Test renaming to a abbreviation with spaces
abbr __abbr4 omega abbr __abbr4 omega
abbr -r __abbr4 "g h i" abbr --rename __abbr4 "g h i"
# CHECKERR: abbr --rename: Abbreviation 'g h i' cannot have spaces in the word # CHECKERR: abbr --rename: Abbreviation 'g h i' cannot have spaces in the word
abbr -e __abbr4 abbr -e __abbr4
# Test renaming without arguments # Test renaming without arguments
abbr __abbr7 omega abbr __abbr7 omega
abbr -r __abbr7 abbr --rename __abbr7
# CHECKERR: abbr --rename: Requires exactly two arguments # CHECKERR: abbr --rename: Requires exactly two arguments
# Test renaming with too many arguments # Test renaming with too many arguments
abbr __abbr8 omega abbr __abbr8 omega
abbr -r __abbr8 __abbr9 __abbr10 abbr --rename __abbr8 __abbr9 __abbr10
# CHECKERR: abbr --rename: Requires exactly two arguments # CHECKERR: abbr --rename: Requires exactly two arguments
abbr | grep __abbr8 abbr | grep __abbr8
abbr | grep __abbr9 abbr | grep __abbr9
@ -89,7 +89,7 @@ abbr | grep __abbr10
# Test renaming to existing abbreviation # Test renaming to existing abbreviation
abbr __abbr11 omega11 abbr __abbr11 omega11
abbr __abbr12 omega12 abbr __abbr12 omega12
abbr -r __abbr11 __abbr12 abbr --rename __abbr11 __abbr12
# CHECKERR: abbr --rename: Abbreviation __abbr12 already exists, cannot rename __abbr11 # CHECKERR: abbr --rename: Abbreviation __abbr12 already exists, cannot rename __abbr11
abbr __abbr-with-dashes omega abbr __abbr-with-dashes omega