mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-29 18:51:15 -03:00
Strip "$ " prefixes on paste
Code blocks are often written like $ echo hello world hello world The "$ " is widely understood to introduce a shell command. It's often easier to copy the whole line than copying everything after "$ ". This gets more pronounced when there are multiple commands without interleaved output (either due to omission or the rule of silence). Copying the whole code block is the most natural first step. You could argue that this is a presentation issue - the dollar prefix should be rendered but not copied to clipboard. But in my experience there are many cases where there is no HTML or Javascript that would allow the copy-to-clipboard functionality to strip the prefixes. The "$ " prefix is almost never useful when pasting; strip it automatically. Privileged commands use "# " as prefix which overlaps with comments, so do not strip that until we can disambiguate (another potential reason not to do that would be safety but it's unclear if that really matters). Add the new logic to the commandline builtin, because we don't know about the AST in fish script. (Technically, the tokenizer already knows whether a "$ " is in command position and at the beginning of a line, but we don't have that either (yet).) Maybe we should move the rest of __fish_paste over as well. I'm not sure what difference that would make; for one, pasting could no longer be cancelled by ctrl-c (in theory), which seems like a good direction?
This commit is contained in:
@@ -45,8 +45,9 @@ The following options change the way ``commandline`` updates the command line bu
|
||||
**-a** or **--append**
|
||||
Do not remove the current commandline, append the specified string at the end of it.
|
||||
|
||||
**-i** or **--insert**
|
||||
Do not remove the current commandline, insert the specified string at the current cursor position
|
||||
**-i**, **--insert** or **--insert-smart**
|
||||
Do not remove the current commandline, insert the specified string at the current cursor position.
|
||||
The **--insert-smart** option turns on a Do-What-I-Mean (DWIM) mode: it strips any **$** prefix from the first command on each line.
|
||||
|
||||
**-r** or **--replace**
|
||||
Remove the current commandline and replace it with the specified string (default)
|
||||
|
||||
Reference in New Issue
Block a user