mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-16 23:52:46 +08:00
Add feature to fish_commandline_prepend and fix minor issue (#9261)
* Prepending will now respect leading spaces instead of doubling it up. * Removing a prefix no longer sends the cursor to the end of the line.
This commit is contained in:
parent
f82537bcdc
commit
1dd8a113f2
|
@ -3,14 +3,24 @@ function fish_commandline_prepend --description "Prepend the given string to the
|
||||||
commandline -r $history[1]
|
commandline -r $history[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
set -l escaped (string escape --style=regex -- $argv[1])
|
|
||||||
set -l process (commandline -p | string collect)
|
set -l process (commandline -p | string collect)
|
||||||
if set process (string replace -r -- "^$escaped " "" $process)
|
|
||||||
commandline --replace -p -- $process
|
set -l to_prepend "$argv[1] "
|
||||||
else
|
if string match -qr '^ ' "$process"
|
||||||
set -l cursor (commandline -C)
|
set to_prepend " $argv[1]"
|
||||||
commandline -C 0 -p
|
|
||||||
commandline -i -- "$argv[1] "
|
|
||||||
commandline -C (math $cursor + (string length -- "$argv[1] "))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
set -l length_diff (string length -- "$to_prepend")
|
||||||
|
set -l cursor_location (commandline -pC)
|
||||||
|
|
||||||
|
set -l escaped (string escape --style=regex -- $to_prepend)
|
||||||
|
if set process (string replace -r -- "^$escaped" "" $process)
|
||||||
|
commandline --replace -p -- $process
|
||||||
|
set length_diff "-$length_diff"
|
||||||
|
else
|
||||||
|
commandline -pC 0
|
||||||
|
commandline -pi -- "$to_prepend"
|
||||||
|
end
|
||||||
|
|
||||||
|
commandline -pC (math "max 0,($cursor_location + $length_diff)")
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user