1
0
mirror of https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles.git synced 2025-09-15 09:45:58 +03:00

fix(fish-helix): 🐛 Fix argparse syntax and add select_line command

- Remove single quotes around `h/help` flag in argparse call
- Add new `select_line` command case to handle line selection
- Clean up string quoting consistency throughout the function
- Improve indentation and formatting for better readability

The argparse syntax fix resolves potential parsing issues while the
new select_line command provides consistent line selection behavior
across different modes.
This commit is contained in:
xnm
2025-08-31 16:44:16 +03:00
parent 76f078cd17
commit 6940f6d195
2 changed files with 133 additions and 141 deletions

View File

@@ -2,7 +2,7 @@
# because of unsynchronized `commandline -f` and `commandline -C` # because of unsynchronized `commandline -f` and `commandline -C`
function fish_helix_command function fish_helix_command
argparse 'h/help' -- $argv argparse h/help -- $argv
or return 1 or return 1
if test -n "$_flag_help" if test -n "$_flag_help"
echo "Helper function to handle modal key bindings mostly outside of insert mode" echo "Helper function to handle modal key bindings mostly outside of insert mode"
@@ -78,7 +78,6 @@ function fish_helix_command
(?: \\n+.? | (?<=\\s)\\S | ) ' (?: \\n+.? | (?<=\\s)\\S | ) '
__fish_helix_prev_word $fish_bind_mode $count $regex __fish_helix_prev_word $fish_bind_mode $count $regex
case till_next_char case till_next_char
__fish_helix_find_char $fish_bind_mode $count forward-jump-till forward-char __fish_helix_find_char $fish_bind_mode $count forward-jump-till forward-char
case find_next_char case find_next_char
@@ -147,18 +146,20 @@ function fish_helix_command
case paste_after case paste_after
__fish_helix_paste_after "commandline -f yank" __fish_helix_paste_after "commandline -f yank"
case replace_selection case replace_selection
__fish_helix_replace_selection "$fish_killring[1]" "true" __fish_helix_replace_selection "$fish_killring[1]" true
case paste_before_clip case paste_before_clip
__fish_helix_paste_before "fish_clipboard_paste" __fish_helix_paste_before fish_clipboard_paste
case paste_after_clip case paste_after_clip
__fish_helix_paste_after "fish_clipboard_paste" --clip __fish_helix_paste_after fish_clipboard_paste --clip
case replace_selection_clip case replace_selection_clip
__fish_helix_replace_selection "" "fish_clipboard_paste" --clip __fish_helix_replace_selection "" fish_clipboard_paste --clip
case select_all case select_all
commandline -f beginning-of-buffer begin-selection end-of-buffer end-of-line backward-char commandline -f beginning-of-buffer begin-selection end-of-buffer end-of-line backward-char
case select_line
commandline -f beginning-of-line begin-selection end-of-line
case '*' case '*'
echo "[fish-helix]" Unknown command $command >&2 echo "[fish-helix]" Unknown command $command >&2
@@ -383,7 +384,7 @@ function __fish_helix_paste_after -a cmd_paste
commandline -C $end commandline -C $end
$cmd_paste $cmd_paste
if test "$argv[2]" = "--clip" if test "$argv[2]" = --clip
commandline -C (math $end - 1) commandline -C (math $end - 1)
else else
for i in (seq 0 (string length "$fish_killring[1]")) for i in (seq 0 (string length "$fish_killring[1]"))

View File

@@ -101,16 +101,15 @@ function fish_helix_key_bindings --description 'helix-like key bindings for fish
bind -s --preset -M visual -m default $key repaint-mode bind -s --preset -M visual -m default $key repaint-mode
end end
# Motion and actions in normal/select mode # Motion and actions in normal/select mode
for mode in default visual for mode in default visual
if test $mode = default if test $mode = default
set -f n_begin_selection "begin-selection" # only begin-selection if current mode is Normal set -f n_begin_selection begin-selection # only begin-selection if current mode is Normal
set -f ns_move_extend "move" set -f ns_move_extend move
set -f commandline_v_repaint "" set -f commandline_v_repaint ""
else else
set -f n_begin_selection set -f n_begin_selection
set -f ns_move_extend "extend" set -f ns_move_extend extend
set -f commandline_v_repaint "commandline -f repaint-mode" set -f commandline_v_repaint "commandline -f repaint-mode"
end end
@@ -220,6 +219,8 @@ function fish_helix_key_bindings --description 'helix-like key bindings for fish
bind -s --preset -M $mode % "fish_helix_command select_all" bind -s --preset -M $mode % "fish_helix_command select_all"
bind -s --preset -M $mode x "fish_helix_command select_line"
# FIXME x X \ex # FIXME x X \ex
# FIXME J # FIXME J
# FIXME \cc # FIXME \cc
@@ -238,7 +239,6 @@ function fish_helix_key_bindings --description 'helix-like key bindings for fish
bind -s --preset -M replace_one -m default \r 'commandline -f delete-char; commandline -i \n; commandline -f backward-char; commandline -f repaint-mode' bind -s --preset -M replace_one -m default \r 'commandline -f delete-char; commandline -i \n; commandline -f backward-char; commandline -f repaint-mode'
bind -s --preset -M replace_one -m default \e cancel repaint-mode bind -s --preset -M replace_one -m default \e cancel repaint-mode
## FIXME Insert mode keys ## FIXME Insert mode keys
## Old config from vi: ## Old config from vi:
@@ -259,36 +259,27 @@ function fish_helix_key_bindings --description 'helix-like key bindings for fish
bind -s --preset -M insert -k sdc backward-delete-char # shifted delete bind -s --preset -M insert -k sdc backward-delete-char # shifted delete
bind -s --preset -M default -k sdc backward-delete-char # shifted delete bind -s --preset -M default -k sdc backward-delete-char # shifted delete
# bind -s --preset '~' togglecase-char forward-single-char
# bind -s --preset '~' togglecase-char forward-single-char # bind -s --preset gu downcase-word
# bind -s --preset gu downcase-word # bind -s --preset gU upcase-word
# bind -s --preset gU upcase-word #
# # bind -s --preset J end-of-line delete-char
# bind -s --preset J end-of-line delete-char # bind -s --preset K 'man (commandline -t) 2>/dev/null; or echo -n \a'
# bind -s --preset K 'man (commandline -t) 2>/dev/null; or echo -n \a' #
#
# same vim 'pasting' note as upper # same vim 'pasting' note as upper
bind -s --preset '"*p' forward-char "commandline -i ( xsel -p; echo )[1]" bind -s --preset '"*p' forward-char "commandline -i ( xsel -p; echo )[1]"
bind -s --preset '"*P' "commandline -i ( xsel -p; echo )[1]" bind -s --preset '"*P' "commandline -i ( xsel -p; echo )[1]"
# #
# visual mode # visual mode
# #
# bind -s --preset -M visual -m insert c kill-selection end-selection repaint-mode # bind -s --preset -M visual -m insert c kill-selection end-selection repaint-mode
# bind -s --preset -M visual -m insert s kill-selection end-selection repaint-mode # bind -s --preset -M visual -m insert s kill-selection end-selection repaint-mode
bind -s --preset -M visual -m default '"*y' "fish_clipboard_copy; commandline -f end-selection repaint-mode" bind -s --preset -M visual -m default '"*y' "fish_clipboard_copy; commandline -f end-selection repaint-mode"
bind -s --preset -M visual -m default '~' togglecase-selection end-selection repaint-mode bind -s --preset -M visual -m default '~' togglecase-selection end-selection repaint-mode
# Set the cursor shape # Set the cursor shape
# After executing once, this will have defined functions listening for the variable. # After executing once, this will have defined functions listening for the variable.
# Therefore it needs to be before setting fish_bind_mode. # Therefore it needs to be before setting fish_bind_mode.