Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support "$(cmd)" command substitution without line splitting #8059

Merged
merged 4 commits into from
Jul 13, 2021

Conversation

krobelus
Copy link
Member

@krobelus krobelus commented Jun 15, 2021

This adds support for

  • echo "$(cmd)" - quoted command substitution without line splitting
  • echo $(cmd) - same as echo (cmd)

Closes #159

TODOs:

  • Changes to fish usage are reflected in user documentation/manpages.
  • Tests have been added for regressions fixed
  • User-visible changes noted in CHANGELOG.rst

@krobelus krobelus added this to the fish-future milestone Jun 15, 2021
@zanchey zanchey requested a review from ridiculousfish June 20, 2021 15:03
@zanchey
Copy link
Member

zanchey commented Jun 20, 2021

If you can hold this for another few days, I think it would be worth waiting until after 3.3.0 to merge.

@krobelus krobelus force-pushed the quoted-command-substitution branch from cbcee44 to 7f5b3ff Compare June 23, 2021 20:03
@zx8
Copy link

zx8 commented Jun 27, 2021

Just want to drop a massive THANK YOU to @krobelus for getting the ball rolling on this – it's the one of the very few pieces of syntactic sugar (along with process substitution <(...) – the whole psub hack isn't great either) that I still sorely miss from my bash days... and I say that as someone who's been using fish for 6 years now.

I appreciate the implementation isn't perfect in its current form, but having compiled and briefly tested it locally, I'm a very happy end user and can't wait to see it merged! 🎉

The only thing I might suggest is that the following error message is improved slightly:

fish: $(...) is not supported. In fish, please use '(foo)'.

Perhaps something like this is more suitable now:

fish: $(...) without quotes is not supported. In fish, please use '(foo)'.

@krobelus
Copy link
Member Author

krobelus commented Jul 1, 2021

fish: $(...) without quotes is not supported. In fish, please use '(foo)'.

Good idea, maybe even fish: $(...) without quotes is not supported. In fish, please use '(foo)' or '"$(foo)"'.

@faho
Copy link
Member

faho commented Jul 1, 2021

Unquoted $() ist left unsupported for now. Maybe it's best to leave it at that, because even in Bash it should rarely be used.

In bash, it should rarely be used because it splits on spaces ($IFS, to be exact).

In fish, we could just split on newlines like we already do in (foo). That makes command substitutions easy - if you want to split (you typically do), use $(foo) without quotes. If you do, use it with quotes. Exactly like variables.

To be honest I find it weird to merge this without support outside of quotes, because it's weirdly in the middle between support and not.

@krobelus krobelus modified the milestones: fish-future, fish 3.4.0 Jul 1, 2021
@krobelus
Copy link
Member Author

krobelus commented Jul 1, 2021

Having read through the issues again, I think everyone agrees on adding "$(cmd)".
It adds fairly intuitive syntactic sugar for string collect, especially for users who are already familiar with other shells.

If we make $(cmd) equivalent to (cmd) this means we probably want to phase out (cmd) eventually. I'm not sure if that's worth the trouble. If we could change it with no repercussions, then $(cmd) would probably be better. Not because this syntax is cleaner (I don't think so), but because of the mainstream appeal.

We could also look at how often the "$(cmd)" behavior is needed over (cmd). If "$(cmd) is only used in rare cases, then the inconsistency might not matter that much?

To be honest I find it weird to merge this without support outside of quotes, because it's weirdly in the middle between support and not.

I'm probably guilty of doublethink, but I think it's sort of consistent, because it's the obvious way to evaluate a command substitution inside double quotes. So I wouldn't mind adding it earlier.

I'm not against $(cmd) - I haven't fully formed my opinion - but adding it means we will have to support it alongside (cmd) for many years, so it should be a conscious decision.


Another random idea: disable the line splitting in $(cmd). This way (cmd) will remain. This is probably a bad idea because the behavior is fairly subtle.

@faho
Copy link
Member

faho commented Jul 1, 2021

I'm probably guilty of doublethink, but I think it's sort of consistent, because it's the obvious way to evaluate a command substitution inside double quotes.

That's just the thing - if it's the obvious way to do a command substitution inside double quotes, then it's also the obvious way to do it outside.

Or, to come at it from another angle: This is an FAQ (not formally - there's a question about backticks instead - but given what we see. There is also an entry in fish-for-bash-users). We have users asking for this all the time. We have the opportunity to entirely remove that.

I don't see the benefit in removing (), but I also don't see any great harm in having both.

@kopischke
Copy link

I’m with @faho: once $() is available in quotes, people will start expecting it to work unquoted too. I agree there is no harm in keeping the legacy () form besides unquoted $(); there are other cases where fish supports such variants, like and / or and && / ||.

@krobelus
Copy link
Member Author

krobelus commented Jul 1, 2021

The current error message on $() should already answer user questions.
The advantages of $() that I see are improved consistency and that it's easier to paste (sloppy) bash commands.
Okay I guess it's fine to have both.

people will start expecting it to work too

I wonder if that will happen for var=val cmd vs. var=val

@krobelus krobelus force-pushed the quoted-command-substitution branch from 7f5b3ff to 095d2eb Compare July 3, 2021 06:25
@ridiculousfish
Copy link
Member

Sorry for delay in getting to this - I've also been working on this but it looks like yours is a lot further along! Agreed with supporting unquoted $() I'll certainly review, very exciting!

@bugsbugsbux
Copy link
Contributor

i like the idea of supporting a way of quoted command substitution because it removes worries about a substitution returning a list or nothing and "corrupting" the string you're building.

however i heavily disagree on supporting unquoted $() as an alternative to (). fish is not bash, it doesn't even try to be fully posix compliant, so doing this just because new users have to relearn some concept is just wrong. on the contrary: i would love to have this error message removed allowing for variable expansion like:

$ set 1 one; set 2 two; set 3 three
$ echo $(seq 3)
one two three
$ echo $(echo 2)
two

if this is not supported and constructs with the new quoted substitution like

$ set foobar foo bar
$ echo $"foo$(echo -n bar)"
foo bar

dont work either, i fear we close the door to generative variable expansion forever and would miss out on a powerful feature for all the wrong reasons.

@ridiculousfish
Copy link
Member

ridiculousfish commented Jul 10, 2021

i fear we close the door to generative variable expansion forever

If I understand correctly, by "generative variable expansion" you mean for a command substitution to output the name of a variable, and then expand that, as a shorthand:

 echo $(echo foo) ; # equivalent to set tmp (echo foo); echo $$tmp

Can you say more about why that's a powerful feature? Do other shells support this?

@krobelus
Copy link
Member Author

That sounds like a nice feature for power users but I think it's rarely used in practice. Moreover, most users will probably expect the Bash behavior, so anything but that or an error message will catch them offguard.

@ridiculousfish
Copy link
Member

@krobelus I stand in awe. My approach was to teach fish about cmdsubs in quotes everywhere, which meant a lot of complexity and recursion. Your trick of making cmdsubs "temporarily close" quotes is so brilliantly simple, I would not have believed it possible! I learned from it today.

There's a bug with escaping the output in expand_cmdsubst if the output itself contains a quote:

> echo "$(echo '"')" # should output one double-quote

because the double-quote is not escaped. Backslash has the same problem. You may steal my function here which escapes a string so it may be inserted unchanged in double quotes.

A second point is brackets:

> echo (seq 3)[2] # outputs 2
> echo "$(seq 3)[2]" # outputs 1\n2\n3[2]

do we want to support these? I go back and forth on this: the argument for support is consistency with variable expansion, but it feels like it would be a rarely used feature that users might trip over. Either way we should be deliberate about it and mention it in the docs.

@bugsbugsbux
Copy link
Contributor

rediculousfish yes, i think you understand correctly.

Do other shells support this?

im not sure

Can you say more about why that's a powerful feature?

its about composability. shell scripting is awesome because you just make up whatever you need by connecting and substituting whats needed. but this is severely hindered when its painful to get the value of a variable you know the name of but cant access by simply throwing a dollar at it.

fish doesn't have dictionaries and can't store lists in lists. allowing explicit variable expansion would make getting around that way more easy, performant, intuitive and powerful. having these data structures enables a whole new level of expressivness in your code.

@faho
Copy link
Member

faho commented Jul 10, 2021

allowing explicit variable expansion would make getting around that way more easy, performant, intuitive and powerful.

@marcusatiliusregulus

From what little explanation you've given here, it would not be more powerful, as it's simply a shortcut. Would it be any easier, more performant or more intuitive? I'm not sold.

Anyway, if you really wanted this supported, the way to do it would be to write up a proposal and ideally submit a patch, not vaguely allude to it in an entirely different PR.

And if you want $() as the syntax: Sorry, I don't think so. We had discussed $() for command substitutions before (#159), and it has a lot of alluring properties - one that it's simply (), but with a $ in front (so it already looks sorta like a command substitution in fish), one that it's literally the syntax taken from elsewhere (so that it looks like a command substitution if you come from elsewhere), one that it uses a $ which is already special in double-quotes so it's entirely backwards-compatible.

Pick something else, and explain where the power comes from!

@krobelus krobelus force-pushed the quoted-command-substitution branch 2 times, most recently from 68846ff to 04eb08f Compare July 10, 2021 19:13
@bugsbugsbux
Copy link
Contributor

bugsbugsbux commented Jul 10, 2021

ok, let me try to explain. why is it more powerful (imo):

variable assignment and -lookup are quicker than manipulating lists
of key-value pairs and other dict tricks. they are intuitive because
well known (appending, prepending, indexing etc), powerful because
they simply support multiline- and multiple elements without any
escaping-unescaping magic and simple as they come for free because
set is already there.

is it simply a shortcut? argueably. but considere this: if i cannot
access the variable by expanding it, it is impossible to reliably
get the value from inside the current command; i have to create a
new variable outside of the current command and expand this one.
why? because i can't return from the substitution (or any function
really) other than by writing to stdout and this mangles the
items. so for every time i want to read a value i have to create
a new var before the current command. and all this time i
already have the processed value in its own var whose name i know.

@kopischke
Copy link

kopischke commented Jul 11, 2021

A second point is brackets:

echo (seq 3)[2] # outputs 2
echo "$(seq 3)[2]" # outputs 1\n2\n3[2]

do we want to support these? I go back and forth on this: the argument for support is consistency with variable expansion, but it feels like it would be a rarely used feature that users might trip over. Either way we should be deliberate about it and mention it in the docs.

May I point out that it's not just consistency with variable expansion, but also consistency with unquoted command substitutions? If fish supports unquoted $(), making it an equivalent to () – and I am in favour of that –, I think bracket expansion should be supported, both in quotes and unquoted. If it were not, this would end up creating a second, subtly different set of command expansion operators instead of a more powerful substitute.

I always find it helpful to imagine how I’d explain the feature to a fish newbie: of “command substitution is $(); for legacy reasons, you can also use () unquoted“ and “command substitution can be $() in or outside quotes, or () outside them, with the latter supporting bracket expansion”, I know which I find easier to follow.

@krobelus krobelus force-pushed the quoted-command-substitution branch from 04eb08f to 409415e Compare July 13, 2021 06:12
@krobelus
Copy link
Member Author

My approach was to teach fish about cmdsubs in quotes everywhere, which meant a lot of complexity and recursion.

Yeah, it's simpler to just reuse the existing command-substitution parsing, since the behavior is almost the same.
It's a bit of a hack, but I haven't found any serious problems.

Fixed the bug with " and added index range expansion since that seems more consistent, though I'm not also not sure which one is better.
I also fixed a bug in parse_util_locate_brackets_of_type, and added some comments - I wrote most of this a while ago and it got a bit hard to understand.

Copy link
Member

@ridiculousfish ridiculousfish left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This LGTM, it's really great!

krobelus added 2 commits July 13, 2021 21:32
This adds a hack to the parser. Given a command

	echo "x$()y z"

we virtually insert double quotes before and after the command
substitution, so the command internally looks like

	echo "x"$()"y z"

This hack allows to reuse the existing logic for handling (recursive)
command substitutions.

This makes the quoting syntax more complex; external highlighters
should consider adding this if possible.

The upside (more Bash compatibility) seems worth it.

Closes fish-shell#159
@lilyball
Copy link
Contributor

@marcusatiliusregulus If I understand what you want correctly, surely you can define a function using --no-scope-shadowing that takes the name of a variable and returns the value. Maybe call it get (as a dual to set). This way your proposed echo $(echo 2) would be written like get (echo 2).

@faho
Copy link
Member

faho commented Jul 20, 2021

If we wanted this the most natural syntax would be $$(echo foo) - take the command substitution and expand it, now you have $foo, expand that. Two expansions, two dollars, done.

As it stands, I'd recommend spelling it out with a temp variable over having to define your own function with "--no-scope-shadowing":

set -l tmp (echo foo)
echo $$tmp

In my experience it's rarely needed - not never, but also not particularly often. So I'm not sold that we need a shortcut for it, but if we did $$(thing) seems like the obvious winner.

@bugsbugsbux
Copy link
Contributor

yeah, looks good to me, ill use that. thanks

krobelus added a commit to krobelus/fish-shell that referenced this pull request Dec 12, 2021
I used the command from fish-shell#8092 to list issues/PRs with missing changelog entries,
and went through most of them.

Each issue gets three lines
- subject
- URL
- verdict

If the verdict ends with ", ignoring", I added it the the ignored list in the changelog.

The issues are grouped by verdict, with the interesting/leftover ones
on top (obviously no need to double check *everything*).

The "gh" script is already a quantum leap we can still find better
ways to share the changelog burden.
I noticed that there are many minor updates that can probably be
ignored.  Filtering them out doesn't take much time but it adds up,
especially if it's a single person doing it.

---

Issue/PR title: Make --no-config mode more comfortable
fish-shell#8493
in-flight

Issue/PR title: Debian fish binary package difficult to install
fish-shell#7845
TODO

Issue/PR title: Work around `setpgid` error on older Apple platforms
fish-shell#8153
this extends 7474, which wasn't listed either, we should probably mention it?

Issue/PR title: Abbr -q return status inconsistent
fish-shell#8431
fixes return status of "abbr -q", should we mention this?

Issue/PR title: math: (n n): incorrect error
fish-shell#8511
improved error output, which is very nice but too minor?

Issue/PR title: Fish autocomplete error on iOS procursus
fish-shell#8205
niche fix, ignoring

Issue/PR title: Fix `fish_key_reader` wrapper check
fish-shell#8271
minor update to not create a harmless alias for fish_key_reader, ignoring

Issue/PR title: funced dosn't like backslash escapes in function names
fish-shell#8289
minor escaping fix, ignoring

Issue/PR title: Hide whatis database building from the user
fish-shell#8310
not something many users would notice in the first place, ignoring

Issue/PR title: Duplicated "Type 'help argparse' for related documentation" for argparse
fish-shell#8368
minor update to error message, ignoring

Issue/PR title: Variable highlight color does not span lines
fish-shell#8444
very obscure fix, ignoring

---

Issue/PR title: Add --function to `read`
fish-shell#8295
added to existing entry (565)

Issue/PR title: Added completions for ethtool
fish-shell#8283
added to existing entry

Issue/PR title: Add dart completion
fish-shell#8315
added to existing entry

Issue/PR title: Add common lisp completions(sbcl/roswell)
fish-shell#8330
added to existing entry

Issue/PR title: Fix st issue with shift+tab
fish-shell#8354
added to existing entry (8352)

Issue/PR title: Support vi-mode cursors in Foot Terminal 
fish-shell#8391
added to existing entry (8167)

Issue/PR title: Completions pager should redraw if the subbed completion wraps/unwraps the line
fish-shell#8405
added to existing entry (8509)

---

Issue/PR title: Binding escape as user binding breaks escape sequence bindings (arrows, etc)
fish-shell#8428
added new entry

Issue/PR title: Windows "color" command completion
fish-shell#8483
added new entry

Issue/PR title: Doesn't build when using netbsd curses on Linux
fish-shell#8087
added new entry

Issue/PR title: Don't override linker
fish-shell#8152
added new entry

Issue/PR title: Add completions for `git-sizer`
fish-shell#8156
added new entry

Issue/PR title: `d3ceba107e88b6c6e1a0358ebcb30366aeef653f` causes issues with repainting multi-line prompt
fish-shell#8163
added new entry

Issue/PR title: Builtin math ncr can be extremely slow
fish-shell#8170
added new entry

Issue/PR title: Completion sometimes missing the last token
fish-shell#8175
added new entry

Issue/PR title: `set -S` should mark read-only variables
fish-shell#8179
added new entry

Issue/PR title: Errors when trying to autocomplete (invalid) UTF-8 escapes
fish-shell#8195
added new entry

Issue/PR title: Always use LC_NUMERIC=C internally
fish-shell#8204
added new entry

Issue/PR title: Slow interaction between backgrounding, universal variables, and repainting
fish-shell#8209
added new entry

Issue/PR title: Unsetting `$fish_emoji_width` doesn't clear the cached width
fish-shell#8274
added new entry

Issue/PR title: If prompt ends in an empty line, the commandline is inserted at the width of the line before
fish-shell#8298
added new entry

Issue/PR title: assertion normal_exited() failed related to paged builtin help
fish-shell#8308
added new entry

Issue/PR title: colors don't kick in for ls on macOS Big Sur, Monterey (and maybe FreeBSD)
fish-shell#8309
added new entry

Issue/PR title: Adds sub-command clear-session to history command. Issue fish-shell#5791
fish-shell#8337
added new entry (as 5791)

Issue/PR title: Display local branches before unique remote branches in git completion
fish-shell#8338
added new entry

Issue/PR title: Fix delete-key in st
fish-shell#8352
added new entry

Issue/PR title: sigsegv on set --show variable (when LANG is set to fr_FR.utf8)
fish-shell#8358
added new entry

Issue/PR title: Add clasp completion
fish-shell#8373
added new entry

Issue/PR title: `cargo run --example` completions break with nested example directories
fish-shell#8429
added new entry

Issue/PR title: argparse completions
fish-shell#8434
added new entry

Issue/PR title: Stop linking to StackOverflow
fish-shell#8495
added new entry

Issue/PR title: fish_key_reader ^C warning isn't right
fish-shell#8510
added new entry

Issue/PR title: Use `--almost-all` in `la` function
fish-shell#8519
added new entry

---

Issue/PR title: improve the experience of using fish over mosh
fish-shell#1363
listed as 8376, ignoring

Issue/PR title: incomplete man page completions
fish-shell#8305
listed as 8309, ignoring

Issue/PR title: Support "$(cmd)" command substitution without line splitting
fish-shell#8059
listed as 159, ignoring

Issue/PR title: fish_config: Read colorschemes from .theme files
fish-shell#8127
listed as 8132, ignoring

Issue/PR title: funced: edit the whole file, not just the function definition
fish-shell#8130
listed as 391, ignoring

Issue/PR title: builtin cd: print error about broken symlink
fish-shell#8270
listed as 8264, ignoring

Issue/PR title: fix man completion for BSD's mandoc
fish-shell#8306
listed as 8305, ignoring

Issue/PR title: Don't escape tildes that come from custom completions
fish-shell#8441
listed as 8441, ignoring

Issue/PR title: Use `cargo run --example` to get list of examples
fish-shell#8446
listed as 8429, ignoring

---

Issue/PR title: Node completion: add v8 sparkplug option
fish-shell#8118
update to existing completions, ignoring

Issue/PR title: Add zypper subcommands completion
fish-shell#8183
update to existing completions, ignoring

Issue/PR title: completion nmap: suppress warning when local scripts folder exists
fish-shell#8184
update to existing completions, ignoring

Issue/PR title: add missing `git commit` completions
fish-shell#8191
update to existing completions, ignoring

Issue/PR title: Updated ping completions
fish-shell#8192
update to existing completions, ignoring

Issue/PR title: Add `--function` to `set` completion
fish-shell#8202
update to existing completions, ignoring

Issue/PR title: completion: support `--no` prefixes for mpv flag options
fish-shell#8219
update to existing completions, ignoring

Issue/PR title: complete "mpc load"
fish-shell#8241
update to existing completions, ignoring

Issue/PR title: Add and fix completions for new options
fish-shell#8243
update to existing completions, ignoring

Issue/PR title: Fix completions/ls.fish
fish-shell#8249
update to existing completions, ignoring

Issue/PR title: Fix completions/coredumpctl.fish and add new complete
fish-shell#8256
update to existing completions, ignoring

Issue/PR title: completions/git: Handle "1 .T" & "1 AT" files
fish-shell#8311
update to existing completions, ignoring

Issue/PR title: completions/xbps-query: add missing `-p` completions
fish-shell#8323
update to existing completions, ignoring

Issue/PR title: Update ldapsearch.fish
fish-shell#8326
update to existing completions, ignoring

Issue/PR title: small fix completions/duply.fish
fish-shell#8327
update to existing completions, ignoring

Issue/PR title: Update ip.fish
fish-shell#8334
update to existing completions, ignoring

Issue/PR title: Fix ant completion
fish-shell#8344
update to existing completions, ignoring

Issue/PR title: Update dmesg completions
fish-shell#8365
update to existing completions, ignoring

Issue/PR title: No hints for -g|--global and -U|--universal flags for abbr command
fish-shell#8367
update to existing completions, ignoring

Issue/PR title: Updated systemd-analyze completions
fish-shell#8381
update to existing completions, ignoring

Issue/PR title: vmctl completion function call needs to be quoted
fish-shell#8406
update to existing completions, ignoring

Issue/PR title: pabcnetcclear command completion update
fish-shell#8480
update to existing completions, ignoring

---

Issue/PR title: document `--no-config`
fish-shell#8176
doc update, ignoring

Issue/PR title: Theme demo needs to be adjusted so that only unmatched quote is an error
fish-shell#8260
doc update, ignoring

Issue/PR title: no error about wrong >>? redirection operator
fish-shell#8380
doc update, ignoring

Issue/PR title: set -l works outside of command block
fish-shell#8385
doc update, ignoring

Issue/PR title: Some enhancements to "for" and "while" loop pages
fish-shell#8409
doc update, ignoring

Issue/PR title: Html docs: Remove link underlines again?
fish-shell#8439
doc update, ignoring

Issue/PR title: Old-style options support "=" assignment operator in complete builtin
fish-shell#8457
doc update, ignoring

Issue/PR title: Document prompt_hostname
fish-shell#8522
doc update, ignoring

---

Issue/PR title: edit_command_buffer: use "command" to ignore any functions with the same name
fish-shell#8221
only helps broken systems, ignoring

Issue/PR title: Prepend command to cat
fish-shell#8287
only helps broken systems, ignoring

Issue/PR title: Make less version check compatible with older Fish
fish-shell#8299
only helps broken systems, ignoring

Issue/PR title: Skip leading `command` in `__fish_man_page`
fish-shell#8447
only helps broken systems, ignoring

Issue/PR title: fish_config doesn't work without curses module
fish-shell#8487
only helps broken systems, ignoring

---

Issue/PR title: fix 'socket file name too long' error
fish-shell#8128
test fix with long tempdirs (macOS), not really user-visible, ignoring

Issue/PR title: Give tests a more generic name
fish-shell#8449
not user-visible, ignoring

Issue/PR title: string tests sometimes failing on macOS (Github Actions)
fish-shell#8353
not user-visible, ignoring

Issue/PR title: history merge test fails on OpenBSD
fish-shell#6477
not user-visible, ignoring

---

Issue/PR title: Obtain Deno completions from itself
fish-shell#8471
update to an unreleased feature (7138), ignoring

Issue/PR title: `string length --visible` performance
fish-shell#8253
update to an unreleased feature, ignoring

Issue/PR title: Backspace character is ignored when calculating string widths
fish-shell#8277
update to an unreleased feature, ignoring

Issue/PR title: `fish_config choose` leaves previous right prompt in place
fish-shell#8314
update to an unreleased feature, ignoring

Issue/PR title: parenthesis characters outer of $(command substitution) in string cause error
fish-shell#8394
update to an unreleased feature, ignoring

Issue/PR title: Parser bug with command substitutions in strings inside parenthesis
fish-shell#8500
update to an unreleased feature, ignoring

Issue/PR title: fish_config: silently doesn't set color schemes.
fish-shell#8419
regression, not in any release, ignoring

Issue/PR title: :program: in sphinx doesn't link
fish-shell#8438
regression, not in any release, ignoring

Issue/PR title: __fish_seen_argument.fish throws exception when autocompleting
fish-shell#8478
regression, not in any release, ignoring

---

Issue/PR title: Fix typo in abbr docs
fish-shell#8280
typofix, ignoring

Issue/PR title: Fix typo in `set_colors` command documentation
fish-shell#8321
typofix, ignoring

Issue/PR title: Typo funcions -> functions
fish-shell#8257
typofix, ignoring

---

Issue/PR title: remove make_pair
fish-shell#8206
no behavior change, ignoring

Issue/PR title: replace push_back with emplate_back
fish-shell#8222
no behavior change, ignoring

Issue/PR title: clang-tidy: remove pointless virtual
fish-shell#8224
no behavior change, ignoring

Issue/PR title: change value to rvalue reference
fish-shell#8227
no behavior change, ignoring

Issue/PR title: convert const ref to rvalue ref
fish-shell#8228
no behavior change, ignoring

Issue/PR title: clang-tidy: use for range loops
fish-shell#8229
no behavior change, ignoring

Issue/PR title: fix deleted constructors
fish-shell#8230
nno behavior change, ignoring

Issue/PR title: clang-tidy: const reference conversions
fish-shell#8231
no behavior change, ignoring

Issue/PR title: clang-tidy: simplify two bool returns
fish-shell#8235
no behavior change, ignoring

Issue/PR title: clang-tidy: replace size comparisons with empty
fish-shell#8237
no behavior change, ignoring

Issue/PR title: clang-tidy: replace NULL with nullptr
fish-shell#8239
no behavior change, ignoring

Issue/PR title: add constexpr
fish-shell#8252
no behavior change, ignoring

Issue/PR title: __fish_seen_subcommand_from and __fish_seen_argument update
fish-shell#8430
no behavior change (apart from a regression that's fixed), ignoring

Issue/PR title: Run fish_indent on all non-test .fish files
fish-shell#8476
no behavior change, ignoring

Issue/PR title: Use test command instead of bracket command
fish-shell#8477
no behavior change, ignoring

Issue/PR title: Fix code scanning alert - Wrong type of arguments to formatting function
fish-shell#8521
no behavior change, ignoring

Issue/PR title: clang-tidy: replace push_back with emplace_back
fish-shell#8236
no behavior change, ignoring

---
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 12, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cannot save multi-line output in a variable (support $() command substitution syntax)
8 participants