From 7324904db9cd7acec2111a6dbc3c7aa711139d49 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sun, 19 Jan 2025 22:08:46 +0100 Subject: [PATCH] helix all options --- home-modules/helix.nix | 192 ++++++++++++++++++++++++++++++++++------- 1 file changed, 161 insertions(+), 31 deletions(-) diff --git a/home-modules/helix.nix b/home-modules/helix.nix index 70ee40f..a0da2e3 100644 --- a/home-modules/helix.nix +++ b/home-modules/helix.nix @@ -6,6 +6,7 @@ # nil # nix language server # nixd # specified in nixd.nix gopls + delve python311Packages.python-lsp-server jdt-language-server ruff @@ -33,45 +34,175 @@ # theme = "base16_terminal"; theme = "base16"; editor = { + scrolloff = 5; + mouse = true; + # default-yank-register = "\""; + middle-click-paste = false; + scroll-lines = 3; + shell = ["sh" "-c"]; + line-number = "relative"; + cursorline = true; + cursorcolumn = true; + # continue-comments = false; + auto-completion = true; + path-completion = true; + auto-format = false; + idle-timeout = 250; + completion-timeout = 5; + preview-completion-insert = true; + completion-trigger-len = 1; + auto-info = true; + true-color = false; # is detected automatically if set to false + undercurl = false; # is detected automatically if set to false + rulers = []; + bufferline = "always"; + color-modes = true; + text-width = 120; + workspace-lsp-roots = []; + default-line-ending = "native"; + insert-final-newline = false; + popup-border = "all"; + indent-heuristic = "hybrid"; + jump-label-alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + # clip-board-provider = # selected automatically + end-of-line-diagnostics = "hint"; + statusline = { + left = [ "mode" + "spinner" + "file-name" + "read-only-indicator" + "file-type" + "version-control" + ]; + center = [ + "position-percentage" + "total-line-numbers" + "register" + ]; + right = [ + "spinner" + "diagnostics" + "selections" + "primary-selection-length" + "register" + "position" + "file-encoding" + ]; + # separator = " "; + mode = { + normal = "NORMAL"; + insert = "INSERT"; + select = "SELECT"; + }; + }; + lsp = { + enable = true; + display-messages = false; + auto-signature-help = true; + display-inlay-hints = true; + }; cursor-shape = { normal = "block"; insert = "bar"; select = "underline"; }; - soft-wrap = { - enable = true; + file-picker = { + hidden = false; # Enables ignoring hidden files + follow-symlinks = true; # Follow symlinks instead of ignoring them + deduplicate-links = true; # Ignore symlinks that point at files already shown in the picker + parents = true; # Enables reading ignore files from parent directories + ignore = true; # Enables reading .ignore files + git-ignore = true; # Enables reading .gitignore files + git-global = true; # Enables reading global .gitignore, whose path is specified in git's config: core.excludesfile option + git-exclude = true; # Enables reading .git/info/exclude files + # max-depth unset = ; # Set with an integer value for maximum depth to recurse + }; + auto-pairs = { + "(" = ")"; + "{" = "}"; + "[" = "]"; + "\"" = "\""; + "`" = "`"; + "<" = ">"; + # "/* " = " */"; + }; + auto-save = { + focus-lost = false; + after-delay = { + enable = false; + timeout = 3000; + }; + }; + search = { + smart-case = true; + wrap-around = true; + }; + whitespace = { + render = { + skip-levels = "none"; + space = "none"; + nbsp = "none"; + nnbsp = "none"; + tab = "none"; + newline = "none"; + tabpad = "none"; + }; + characters = { + skip-levels = 1; + space = "·"; + nbsp = "⍽"; + nnbsp = "␣"; + tab = "→"; + newline = "⏎"; + tabpad = "·"; + }; }; - line-number = "relative"; - color-modes = true; - bufferline = "always"; - popup-border = "all"; - completion-trigger-len = 1; - completion-timeout = 5; - file-picker.hidden = false; - middle-click-paste = false; - cursorline = true; indent-guides = { render = true; character = "╎"; + skip-levels = 0; }; - lsp.display-inlay-hints = true; - statusline.center = [ "position-percentage" ]; - true-color = true; - whitespace.characters = { - newline = "↴"; - tab = "⇥"; - skip-levels = 1; + gutters = [ + "diagnostics" + "spacer" + "line-numbers" + "spacer" + "diff" + ]; + # line-numbers = {}; + # layout.minwidth = 3; + # diagnostics = {}; + # diff = {}; + # spacer = {}; + soft-wrap = { + enable = true; + max-wrap = 20; + max-indent-retain = 40; + wrap-indicator = "↪"; + wrap-at-text-width = false; + }; + smart-tab = { + enable = false; + supersend-menu = false; + }; + inline-diagnostics = { + cursor-line = "hint"; + other-lines = "disable"; + prefix-len = 1; + # max-wrap = set above + max-diagnostics = 20; }; }; - keys.normal = { - "C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ]; - "A-`" = [ "no_op" ]; - "`" = [ "no_op" ]; - }; - keys.normal."ö" = { - "s" = [ "switch_case" ]; - "u" = [ "switch_to_uppercase" ]; - "l" = [ "switch_to_lowercase" ]; + keys = { + normal = { + "C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ]; + "A-`" = [ "no_op" ]; + "`" = [ "no_op" ]; + "ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; }; + }; + select = { + "ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; }; + }; }; }; languages = { @@ -94,7 +225,6 @@ file-types = [ "md" "MD" ]; scope = "text."; } - { name = "python"; language-servers = [ "pyright" "ruff" ]; @@ -173,7 +303,7 @@ base16 = with rice.color; { "attributes" = foreground; "comment" = { - "fg" = white.dark; + "fg" = black.bright; "modifiers" = [ "italic" ]; }; "constant" = accent.bright; @@ -319,8 +449,8 @@ "fg" = black.bright; }; "ui.virtual.inlay-hint" = { - "fg" = weird.bright; - "bg" = weird.dark; + "fg" = weird.dark; + "bg" = weird.base; }; "ui.virtual.ruler" = { "bg" = background;