aboutsummaryrefslogtreecommitdiffhomepage
path: root/share/functions/__fish_toggle_comment_commandline.fish
blob: 8bdd7e82252c23a9bf5715def2d35c2eb8e7d2eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 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.

function __fish_toggle_comment_commandline --description 'Comment/uncomment the current command'
    set -l cmdlines (commandline -b)
    if test "$cmdlines" = ""
        return
    end
    set -l cmdlines (printf '%s\n' '#'$cmdlines | string replace -r '^##' '')
    commandline -r $cmdlines
    string match -q '#*' $cmdlines[1]; and commandline -f execute
end