dotfiles/.config/helix/config.toml.bak

406 lines
10 KiB
TOML

theme = "ashen"
[editor]
line-number = "relative"
undercurl = true
default-yank-register = '+'
cursorline = true
bufferline = "multiple"
color-modes = true
shell = ['fish', '-c']
text-width = 80
mouse = true
continue-comments = true
auto-completion = true
path-completion = true
completion-replace = false
completion-trigger-len = 2
scrolloff = 2
jump-label-alphabet = "tnseriplfuwydhcxoaqz"
# minimum severity to show
end-of-line-diagnostics = "disable"
# rulers = [82]
[editor.smart-tab]
enable = false
[editor.whitespace.render]
tab = "none"
space = "none"
newline = "all"
[editor.whitespace.characters]
newline = ""
tab = ""
tabpad = " "
# tabpad = "·"
[editor.cursor-shape]
insert = "bar"
normal = "block"
# select = "underline"
[editor.statusline]
mode.normal = "NRM"
left = [
"mode",
"spinner",
"version-control",
# "spacer",
# "separator",
# "file-name",
"file-base-name",
"read-only-indicator",
"file-modification-indicator",
# "workspace-diagnostics",
]
center = ["diagnostics"]
right = [
"primary-selection-length",
"selections",
"register",
# "position",
"position-percentage",
"total-line-numbers",
"file-encoding",
]
separator = "|"
diagnostics = ["warning", "error"]
workspace-diagnostics = ["warning", "error"]
[editor.lsp]
# enable = false
display-inlay-hints = true
display-messages = true
display-progress-messages = true
# use C-k manually instead
auto-signature-help = false
[editor.inline-diagnostics]
cursor-line = "disable"
other-lines = "disable"
[editor.indent-guides]
render = true
# character = "|"
skip-levels = 1
[editor.soft-wrap]
enable = true
# prevents words from being split
# max-wrap = 25
wrap-indicator = ""
[keys.insert]
C-k = "signature_help"
C-c = "completion"
S-tab = "move_parent_node_start"
# sticky mode!
[keys.normal.Z]
e = "scroll_up"
n = "scroll_down"
j = "search_next"
J = "search_prev"
[keys.normal]
tab = "trim_selections"
# swap select_mode and regex keys
v = "select_regex"
V = "split_selection"
s = "select_mode"
# reload lsp
C-r = ":lsp-restart"
# toggle lsp
# C-r = '@:toggle lsp.enable<ret>:echo %sh{sleep 0.1}<ret>:lsp-restart<ret>'
A-o = '@o<esc>O<esc>h'
C-A-r = ":lsp-stop"
# config file stuff
# execute current file
# A-x = ':sh "%sh{pwd}/%{buffer_name}"'
# Treesitter selections
# Left <-> Right: Sibling nodes
# Up <-> Down: Parent/Child nodes
A-S-n = "move_parent_node_end"
A-S-e = "move_parent_node_start"
A-a = "select_all_siblings"
A-m = "select_prev_sibling"
A-n = "shrink_selection"
A-e = "expand_selection"
A-i = "select_next_sibling"
"{" = "rotate_selections_backward"
"}" = "rotate_selections_forward"
"A-{" = "rotate_selection_contents_backward"
"A-}" = "rotate_selection_contents_forward"
C-f = "jump_forward"
C-p = "jump_backward"
# a = "append_mode_same_line"
C-k = "signature_help"
"\\" = ":format"
"+" = ":reflow"
ret = "goto_word"
# master
m = "move_char_left"
i = "move_char_right"
# # axel
# m = "move_same_line_char_left"
# i = "move_same_line_char_right"
n = "move_visual_line_down"
e = "move_visual_line_up"
N = "move_line_down"
E = "move_line_up"
h = "insert_mode"
H = "insert_at_line_start"
L = "move_next_long_word_end"
j = ["search_next", "align_view_center"]
J = ["search_prev", "align_view_center"]
A-j = "join_selections"
A-J = "join_selections_space"
C-q = ":qa"
C-S-q = ":qa!"
# C-m = ":bp"
M = ":bp"
# C-i = ":bn"
C-m = "jump_view_left"
C-n = "jump_view_down"
C-i = "jump_view_right"
C-e = "jump_view_up"
I = ":bn"
X = "extend_line_above"
x = "extend_line_below"
# A-x = "toggle_line_select"
D = "kill_to_line_end"
A-d = "kill_to_line_start"
# Sub-word Movement
w = "move_next_word_start"
C-w = "move_next_sub_word_start"
b = "move_prev_word_start"
C-b = "move_prev_sub_word_start"
l = "move_next_word_end"
C-l = "move_next_sub_word_end"
A-l = "move_prev_sub_word_start"
# Navigation
C-d = ["page_cursor_half_down", "align_view_center"]
C-u = ["page_cursor_half_up", "align_view_center"]
# language specific commands
[keys.normal.space.l]
# open pdf preview for typst
p = ':sh ~/dev/utils/helix-pdf/hx-typ-zathura.fish --watch --kill-on-exit %{buffer_name}'
# p = ':sh ~/.config/helix/scripts/hx-typ-zathura.fish -k %{buffer_name}'
# git stuff
[keys.normal.space.g]
# blame
b = ":sh git -C $(dirname $(realpath %{buffer_name})) blame -L %{cursor_line},%{cursor_line} $(realpath %{buffer_name})"
# lazygit
g = ":sh footclient -d error lazygit"
# URL to current line
o = ":sh ~/.config/helix/scripts/get_git_provider_url.fish %{buffer_name} %{cursor_line}"
r = ":reset-diff-change"
# minimap fun!
m = ':sh code-minimap (path resolve %{buffer_name})'
[keys.normal."["]
x = "extend_line_above"
[keys.normal.space.m]
m = '@ks*'
t = '@:insert-output cat <C-r>% | markdown-toc --bullets - --no-firsth1 -<ret>'
[keys.select.space.m]
m = '@ks*'
t = '@:insert-output cat <C-r>% | markdown-toc --bullets - --no-firsth1 -<ret>'
[keys.normal.space]
A-r = ":config-reload"
A-o = ":config-open"
A-w = ":config-open-workspace"
y = ':w'
Y = ':w!'
# create line above and below selection
O = '@ks<ret>'
o = '@xks<ret>'
t = "move_parent_node_end"
T = "move_parent_node_start"
# yazi integration
space = [
':sh rm -f /tmp/yazi-path',
':insert-output footclient -d error yazi %{buffer_name} --chooser-file=/tmp/yazi-path',
':open %sh{cat /tmp/yazi-path}',
':redraw',
':set mouse false',
':set mouse true',
]
# insert markdown toc :)
p = '''
:append-output clipcat-menu --finder custom --custom-finder-program-path fuzzel --custom-finder-arguments=--dmenu,--placeholder=Clipboard --config <(printf "[log]\nemit_stdout = true\n") | grep -q 'Nothing is selected' && exit 1 || wl-paste'''
P = '''
:insert-output clipcat-menu --finder custom --custom-finder-program-path fuzzel --custom-finder-arguments=--dmenu,--placeholder=Clipboard --config <(printf "[log]\nemit_stdout = true\n") | grep -q 'Nothing is selected' && exit 1 || wl-paste'''
x = ":bc"
# UI settings and stuff
[keys.normal.space.u]
# Toggle insert cursor shape
C = ':toggle cursor-shape.insert bar block'
# Toggle Cursor Always Centered
z = ':toggle scrolloff 2 99'
d = ':toggle statusline.center ["diagnostics"] ["workspace-diagnostics","diagnostics"] []'
# # Toggle End of line diagnostics
# D = ':toggle end-of-line-diagnostics hint disable'
# # Toggle Inline diagnostics
# d = ':toggle inline-diagnostics.cursor-line disable hint'
# Toggle soft-wrap
w = ':toggle soft-wrap.enable'
# Soft wrap at specified text width
s = ':set soft-wrap.wrap-at-text-width true'
S = ':set soft-wrap.wrap-at-text-width false'
# Toggle signature help (off by default)
k = ":toggle lsp.auto-signature-help"
# toggle auto completion (on by default)
c = ":toggle auto-completion"
# toggle inlay hints (on by default)
h = ':toggle lsp.display-inlay-hints'
# Toggle git display
g = ':toggle gutters.layout ["diagnostics", "spacer", "line-numbers", "spacer", "diff"] ["diagnostics", "spacer", "line-numbers", "spacer", "spacer"]'
# Toggle Ruler
r = ':toggle rulers [82] []'
[keys.select.g]
m = "extend_to_line_start"
i = "extend_to_line_end"
I = "extend_to_line_end_newline"
l = "extend_to_file_end"
L = "extend_to_last_line"
[keys.select.space]
t = "extend_parent_node_end"
T = "extend_parent_node_start"
# yazi integration
space = [
':sh rm -f /tmp/yazi-path',
':insert-output footclient -d error yazi %{buffer_name} --chooser-file=/tmp/yazi-path',
':open %sh{cat /tmp/yazi-path}',
':redraw',
':set mouse false',
':set mouse true',
]
# insert markdown toc :)
p = '''
:append-output clipcat-menu --finder custom --custom-finder-program-path fuzzel --custom-finder-arguments=--dmenu,--placeholder=Clipboard --config <(printf "[log]\nemit_stdout = true\n") | grep -q 'Nothing is selected' && exit 1 || wl-paste'''
P = '''
:insert-output clipcat-menu --finder custom --custom-finder-program-path fuzzel --custom-finder-arguments=--dmenu,--placeholder=Clipboard --config <(printf "[log]\nemit_stdout = true\n") | grep -q 'Nothing is selected' && exit 1 || wl-paste'''
x = ":bc"
[keys.select]
tab = "trim_selections"
"{" = "rotate_selections_backward"
"}" = "rotate_selections_forward"
"A-{" = "rotate_selection_contents_backward"
"A-}" = "rotate_selection_contents_forward"
# swap select_mode and regex keys
v = "select_regex"
V = "split_selection"
s = "normal_mode"
# Treesitter selections
# Left <-> Right: Sibling nodes
# Up <-> Down: Parent/Child nodes
A-S-n = "move_parent_node_end"
A-S-e = "move_parent_node_start"
A-a = "select_all_siblings"
A-m = "select_prev_sibling"
A-n = "shrink_selection"
A-e = "expand_selection"
A-i = "select_next_sibling"
X = "extend_line_above"
x = "extend_line"
ret = "extend_to_word"
# master
m = "extend_char_left"
i = "extend_char_right"
# # axel
# m = "extend_same_line_char_left"
# i = "extend_same_line_char_right"
n = "extend_visual_line_down"
e = "extend_visual_line_up"
j = ["extend_search_next", "align_view_center"]
J = ["extend_search_prev", "align_view_center"]
C-l = "extend_next_sub_word_end"
l = "extend_next_word_end"
C-w = "extend_next_sub_word_start"
C-b = "extend_prev_sub_word_start"
L = "extend_next_long_word_end"
A-l = "extend_prev_sub_word_start"
[keys.normal.k]
m = "match_brackets"
k = "match_brackets"
s = "surround_add"
r = "surround_replace"
d = "surround_delete"
a = "select_textobject_around"
i = "select_textobject_inner"
[keys.select.k]
m = "match_brackets"
k = "match_brackets"
s = "surround_add"
r = "surround_replace"
d = "surround_delete"
a = "select_textobject_around"
i = "select_textobject_inner"
# Window Mode
[keys.normal.space.w]
m = "jump_view_left"
C-m = "jump_view_left"
n = "jump_view_down"
C-n = "jump_view_down"
i = "jump_view_right"
C-i = "jump_view_right"
e = "jump_view_up"
C-e = "jump_view_up"
M = "swap_view_left"
N = "swap_view_down"
E = "swap_view_up"
I = "swap_view_right"
d = "wclose"
V = ":vsplit-new"
S = ":hsplit-new"
h = "no_op"
j = "no_op"
k = "no_op"
l = "no_op"
H = "no_op"
J = "no_op"
K = "no_op"
L = "no_op"
[keys.normal.g]
z = "goto_window_center"
m = "goto_first_nonwhitespace"
i = "goto_line_end"
I = "goto_line_end_newline"
n = "move_line_down"
e = "move_line_up"
l = "goto_file_end"
L = "goto_last_line"
[keys.normal.backspace]
d = "delete_selection_noyank"
c = "change_selection_noyank"
[keys.select.backspace]
d = "delete_selection_noyank"
c = "change_selection_noyank"