fish-shell/share/functions/__fish_toggle_comment_commandline.fish
Gokul Soumya 2fd78fd5c2
Uncomment most recent comment if commandline is empty when using toggle comment binding (#7137)
* functions/__fish_toggle_comment_commandline: Uncomment most recent comment if commandline is empty

* Refactor variable setting in functions/__fish_toggle_comment_commandline.fish

* Update changelog regarding toggle comment binding
2020-06-24 18:35:36 +02:00

20 lines
1017 B
Fish

# This is meant to be bound to key sequences such as \e#. It provides a simple way to quickly
# comment/uncomment the current command. This is something introduced by the Korn shell (ksh) in
# 1993. It allows you to capture a command in the shell history without executing it. Then
# retrieving the command from the shell history and removing the comment chars.
#
# This deliberately does not execute the command when removing the comment characters to give you an
# opportunity to modify the command. Also if the commandline is empty, the most recently commented
# out history item is uncommented and presented.
function __fish_toggle_comment_commandline --description 'Comment/uncomment the current command'
set -l cmdlines (commandline -b)
if test "$cmdlines" = ""
history search -p "#" -z | read -z cmdlines
end
set -l cmdlines (printf '%s\n' '#'$cmdlines | string replace -r '^##' '')
commandline -r $cmdlines
string match -q '#*' $cmdlines[1]
and commandline -f execute
end