{ ... }: let normalz = { e = "scroll_down"; i = "scroll_up"; j = "search_next"; J = "search_prev"; k = "no_op"; n = "no_op"; N = "no_op"; }; normalcw = { n = "jump_view_left"; C-n = "jump_view_left"; e = "jump_view_down"; C-e = "jump_view_down"; i = "jump_view_up"; C-i = "jump_view_up"; o = "jump_view_right"; C-o = "jump_view_right"; N = "swap_view_left"; E = "swap_view_down"; I = "swap_view_up"; O = "swap_view_right"; c.C-s = "hsplit_new"; c.s = "hsplit_new"; c.C-v = "vsplit_new"; c.v = "vsplit_new"; C-l = "wonly"; l = "wonly"; h = "no_op"; C-h = "no_op"; j = "no_op"; C-j = "no_op"; k = "no_op"; C-k = "no_op"; H = "no_op"; J = "no_op"; K = "no_op"; L = "no_op"; }; selectz = { e = "scroll_down"; i = "scroll_up"; j = "search_next"; J = "search_prev"; k = "no_op"; n = "no_op"; N = "no_op"; }; selectcw = { n = "jump_view_left"; C-n = "jump_view_left"; e = "jump_view_down"; C-e = "jump_view_down"; i = "jump_view_up"; C-i = "jump_view_up"; o = "jump_view_right"; C-o = "jump_view_right"; N = "swap_view_left"; E = "swap_view_down"; I = "swap_view_up"; O = "swap_view_right"; c.C-s = "hsplit_new"; c.s = "hsplit_new"; c.C-v = "vsplit_new"; c.v = "vsplit_new"; C-l = "wonly"; l = "wonly"; h = "no_op"; C-h = "no_op"; j = "no_op"; C-j = "no_op"; k = "no_op"; C-k = "no_op"; H = "no_op"; J = "no_op"; K = "no_op"; L = "no_op"; }; in { xdg.configFile."helix/themes/edge_neon.toml".source = ./edge_neon.toml; programs.helix = { enable = true; languages = { use-grammars.except = [ "gemini" ]; language-server = { rust-analyzer.config.check = { command = "clippy"; }; typst-lsp = { command = "typst-lsp"; }; clangd = { command = "clangd"; }; }; language = [ { name = "typst"; scope = "source.typst"; file-types = [ "typst" "typ" ]; indent = { tab-width = 2; unit = " "; }; comment-token = "//"; injection-regex = "typ(st)?"; language-servers = [ "typst-lsp" ]; roots = [ "template.typ" ]; auto-pairs = { "(" = ")"; "{" = "}"; "[" = "]"; "$" = "$"; "\"" = "\""; }; } ]; grammar = [ { name = "typst"; source = { git = "https://github.com/uben0/tree-sitter-typst"; rev = "master"; }; } ]; }; settings = { theme = "edge_neon"; editor = { indent-guides.render = true; bufferline = "always"; cursor-shape = { insert = "bar"; normal = "block"; select = "underline"; }; color-modes = true; auto-save = true; lsp.display-messages = true; }; keys = { normal = { n = "move_char_left"; e = "move_visual_line_down"; i = "move_visual_line_up"; o = "move_char_right"; k = "insert_mode"; K = "insert_at_line_start"; h = "open_below"; H = "open_above"; l = "goto_first_nonwhitespace"; L = "goto_line_end"; E = "keep_selections"; A-E = "remove_selections"; j = "search_next"; J = "search_prev"; "\\" = "join_selections"; "A-\\" = "join_selections_space"; "tab" = "goto_next_buffer"; "S-tab" = "goto_previous_buffer"; I = "no_op"; O = "no_op"; A-K = "no_op"; N = "no_op"; A-J = "no_op"; b = "no_op"; W = "no_op"; B = "no_op"; }; normal.w = { n = "move_prev_word_start"; e = "move_prev_word_end"; i = "move_next_word_start"; o = "move_next_word_end"; N = "move_prev_long_word_start"; E = "move_prev_long_word_end"; I = "move_next_long_word_start"; O = "move_next_long_word_end"; }; normal.z = normalz; normal.Z = normalz; normal.g = { n = "goto_line_start"; e = "move_line_down"; i = "move_line_up"; o = "goto_line_end"; I = "goto_implementation"; E = "goto_last_line"; h = "no_op"; j = "no_op"; k = "no_op"; l = "no_op"; p = "no_op"; }; normal.C-w = normalcw; normal.space.w = normalcw; select = { n = "extend_char_left"; e = "extend_visual_line_down"; i = "extend_visual_line_up"; o = "extend_char_right"; j = "extend_search_next"; J = "extend_search_prev"; k = "insert_mode"; K = "insert_at_line_start"; h = "open_below"; H = "open_above"; l = "extend_to_first_nonwhitespace"; L = "extend_to_line_end"; E = "keep_selections"; A-E = "remove_selections"; "\\" = "join_selections"; "A-\\" = "join_selections_space"; "tab" = "goto_next_buffer"; "S-tab" = "goto_previous_buffer"; I = "no_op"; O = "no_op"; A-K = "no_op"; N = "no_op"; A-J = "no_op"; b = "no_op"; W = "no_op"; B = "no_op"; }; select.w = { n = "extend_prev_word_start"; e = "extend_prev_word_end"; i = "extend_next_word_start"; o = "extend_next_word_end"; N = "extend_prev_long_word_start"; E = "extend_prev_long_word_end"; I = "extend_next_long_word_start"; O = "extend_next_long_word_end"; }; select.z = selectz; select.Z = selectz; select.g = { e = "extend_line_down"; i = "extend_line_up"; j = "no_op"; k = "no_op"; }; select.C-w = selectcw; select.space.w = selectcw; insert.C-c = "normal_mode"; }; }; }; }