Files
dotfiles/.config/helix/config.toml
T
2026-05-10 18:00:11 +03:00

254 lines
6.4 KiB
TOML

theme = "custom" # monokai_soda, kaolin-valley-dark, material_deep_ocean, carbonfox
[editor]
# mouse = false
# middle-click-paste = false
# scroll-lines = 0
shell = ["fish", "-c"]
line-number = "relative"
cursorline = true
continue-comments = true # doc comments
auto-completion = true
completion-replace = false # STOP deleting stuff
auto-format = true
auto-info = true # TODO: idle-timeout?
# true-color = true
# undercurl = true
# terminal-background-color = true
rulers = [80, 100]
bufferline = "multiple" # never, always, multiple
color-modes = false # mode indicator color
insert-final-newline = true # POSIX lines finish with \n
popup-border = "all" # popup, menu, all, none
jump-label-alphabet = "tneiouykhsrafwvd"
end-of-line-diagnostics = "hint" # disable, error, warning, info, hint
[editor.inline-diagnostics]
cursor-line = "warning"
other-lines = "error"
prefix-len = 1
max-diagnostics = 5 # 10
[editor.statusline]
mode = { normal = "N", insert = "I", select = "S" }
left = [
"mode",
"file-name",
"read-only-indicator",
"file-modification-indicator",
"file-type",
"file-line-ending",
"file-encoding",
]
right = [
"spinner",
"spacer",
"diagnostics",
"workspace-diagnostics",
"version-control",
"register",
"selections",
"primary-selection-length",
"position",
"position-percentage",
"total-line-numbers",
]
[editor.lsp]
display-progress-messages = true # looks cool
auto-signature-help = false
# auto-document-highlight = false
display-inlay-hints = false # meh
[editor.cursor-shape]
normal = "block"
insert = "bar"
select = "underline"
[editor.file-picker]
hidden = true
[editor.whitespace.render]
tab = "all"
nbsp = "all"
nnbsp = "all"
space = "none"
newline = "none"
[editor.whitespace.characters]
tab = '󰌒'
nbsp = '⍽'
nnbsp = '␣'
space = '🞄'
newline = ''
[editor.indent-guides]
render = true
character = "┆" # "╎", "▏", "┆", "┊", "⸽"
skip-levels = 1
[editor.gutters]
layout = ["diff", "diagnostics", "line-numbers", "spacer"] # TODO: don't like
line-numbers.min-width = 1
[editor.soft-wrap]
enable = true
max-wrap = 20 # increase to reduce forced wrapping
max-indent-retain = 24 # 40
wrap-indicator = "↪"
[keys.insert]
tab = "completion"
S-tab = "insert_tab"
# A-tab = "move_parent_node_end"
C-space = "signature_help"
C-backspace = "delete_word_backward"
A-o = "open_below"
A-O = "open_above"
A-e = "move_parent_node_end"
A-b = "move_parent_node_start"
C-p = [
':insert-output set p (wl-paste -t text/html 2>/dev/null); and printf "%%s" "$p" | html2text -b0 | head -c -1; or wl-paste --no-newline 2>/dev/null',
"append_mode",
"collapse_selection",
]
[keys.select]
";" = ["collapse_selection", "normal_mode"]
# a = ["collapse_selection", "append_mode"]
X = "extend_line_above"
# V = ["extend_to_line_bounds", "trim_selections"]
D = ["ensure_selections_forward", "extend_to_line_end"]
V = [
"save_selection",
"collapse_selection",
"normal_mode",
"goto_line_start",
"extend_to_line_end_newline",
"delete_selection",
"jump_backward",
"select_mode",
]
C-y = "yank_joined"
C-space = "signature_help"
C-backspace = "delete_word_backward"
tab = "expand_selection"
S-tab = "shrink_selection"
# A-tab = "insert_tab"
# tab = "extend_parent_node_end"
# S-tab = "extend_parent_node_start"
L = "goto_next_buffer"
H = "goto_previous_buffer"
C-l = "@:e<space><C-r>%<ret>:bc<ret>:<up><up><ret>" # move buffer to the end
C-g = ":reset-diff-change"
C-p = ':insert-output set p (wl-paste -t text/html 2>/dev/null); and printf "%%s" "$p" | html2text -b0; or wl-paste --no-newline 2>/dev/null'
# C-k = "jump_view_up"
# C-h = "jump_view_left"
# C-j = "jump_view_down"
# C-l = "jump_view_right"
[keys.normal]
"=" = ":format"
"A-=" = "format_selections"
# a = ["collapse_selection", "append_mode"]
X = "extend_line_above"
# V = ["extend_to_line_bounds", "trim_selections"]
D = ["ensure_selections_forward", "extend_to_line_end"]
V = ["goto_line_start", "extend_to_line_end_newline", "delete_selection"]
C-y = "yank_joined"
C-space = "signature_help"
tab = "expand_selection"
S-tab = "shrink_selection"
# A-tab = "insert_tab"
# tab = "move_parent_node_end"
# S-tab = "move_parent_node_start"
L = "goto_next_buffer"
H = "goto_previous_buffer"
C-l = "@:e<space><C-r>%<ret>:bc<ret>:<up><up><ret>" # move buffer to the end
C-g = ":reset-diff-change"
C-p = ':insert-output set p (wl-paste -t text/html 2>/dev/null); and printf "%%s" "$p" | html2text -b0; or wl-paste --no-newline 2>/dev/null'
# C-q = "wclose"
# C-k = "jump_view_up"
# C-h = "jump_view_left"
# C-j = "jump_view_down"
# C-l = "jump_view_right"
A-j = ["extend_to_line_bounds", "delete_selection", "paste_after"]
A-k = [
"extend_to_line_bounds",
"delete_selection",
"move_line_up",
"paste_before",
]
# A-J = ["extend_to_line_bounds", "yank", "paste_after"]
A-K = [
"save_selection",
"extend_to_line_bounds",
"yank",
"paste_before",
"jump_backward",
]
[keys.normal.space]
'.' = ":config-reload"
i = ":reload"
I = ":reload-all"
q = ":buffer-close"
Q = ":buffer-close-all"
o = ":buffer-close-others"
n = "file_picker_in_current_buffer_directory"
ret = "insert_newline"
# Toggle
[keys.normal.space.t]
f = ":toggle auto-format"
c = ":toggle cursorline"
w = ":toggle soft-wrap.enable"
n = ":toggle line-number absolute relative"
b = ":toggle bufferline never multiple"
r = ":toggle rulers [] [80,100]"
g = ":toggle indent-guides.render"
e = ":toggle end-of-line-diagnostics disable hint"
d = ":toggle inline-diagnostics.cursor-line disable warning"
D = ":toggle inline-diagnostics.other-lines disable error"
s = ":toggle lsp.auto-signature-help"
h = ":toggle lsp.auto-document-highlight"
i = ":toggle lsp.display-inlay-hints"
l = ":lsp-stop"
L = ":lsp-restart"
A-l = ":run-shell-command systemctl --user restart lspmux.service"
# t = [":toggle cursorline", ":toggle line-number absolute relative"]
# https://github.com/helix-editor/helix/issues/13187
# t = [ # TODO: not work
# ":set-option cursorline true",
# ":set-option rulers [100]",
# ":set-option soft-wrap.enable false",
# ":set-option line-number relative",
# ':set-option gutters.layout ["line-numbers","spacer"]',
# ":set-option bufferline never",
# ":set-option indent-guides.render true",
# ":set-option lsp.display-inlay-hints false",
# ":set-option end-of-line-diagnostics disable",
# ":set-option inline-diagnostics.other-lines disable",
# ":set-option inline-diagnostics.cursor-line disable",
# ]