diff --git a/configuration.nix b/configuration.nix index 0864fed..6c2cb26 100644 --- a/configuration.nix +++ b/configuration.nix @@ -89,7 +89,9 @@ inputs: let enable = true; fillChar = null; eolChar = null; - showCurrContext = true; + scope = { + showCurrContext = true; + }; }; cursorline = { diff --git a/flake.lock b/flake.lock index da9a8ff..ec3057f 100644 --- a/flake.lock +++ b/flake.lock @@ -584,11 +584,11 @@ "indent-blankline": { "flake": false, "locked": { - "lastModified": 1688727830, - "narHash": "sha256-efMRkxjbr6o7kSKAEn0Kaw8lsDubRmc1N0Kd1BZ3A7k=", + "lastModified": 1697081010, + "narHash": "sha256-e8gn4pJYALaQ6sGA66SFf8p6VLJBPxT/BimQhOd5eBs=", "owner": "lukas-reineke", "repo": "indent-blankline.nvim", - "rev": "4541d690816cb99a7fc248f1486aa87f3abce91c", + "rev": "0fe34b4c1b926e106d105d3ae88ef6cbf6743572", "type": "github" }, "original": { diff --git a/modules/visuals/config.nix b/modules/visuals/config.nix index 5cdd4f4..17ed23e 100644 --- a/modules/visuals/config.nix +++ b/modules/visuals/config.nix @@ -12,7 +12,7 @@ in { vim.startPlugins = ["indent-blankline"]; vim.luaConfigRC.indent-blankline = nvim.dag.entryAnywhere '' -- highlight error: https://github.com/lukas-reineke/indent-blankline.nvim/issues/59 - vim.wo.colorcolumn = "99999" + -- vim.wo.colorcolumn = "99999" vim.opt.list = true ${optionalString (cfg.indentBlankline.eolChar != null) '' @@ -22,12 +22,20 @@ in { vim.opt.listchars:append({ space = "${cfg.indentBlankline.fillChar}" }) ''} - require("indent_blankline").setup { + require("ibl").setup { enabled = true, - char = "${cfg.indentBlankline.listChar}", - show_current_context = ${boolToString cfg.indentBlankline.showCurrContext}, - show_end_of_line = ${boolToString cfg.indentBlankline.showEndOfLine}, - use_treesitter = ${boolToString cfg.indentBlankline.useTreesitter}, + debounce = ${toString cfg.indentBlankline.debounce}, + indent = { char = "${cfg.indentBlankline.indent.char}" }, + + viewport_buffer = { + min = ${toString cfg.indentBlankline.viewportBuffer.min}, + max = ${toString cfg.indentBlankline.viewportBuffer.max}, + }, + + scope = { + enabled = ${boolToString cfg.indentBlankline.scope.showCurrContext}, + show_end = ${boolToString cfg.indentBlankline.scope.showEndOfLine} + }, } ''; }) diff --git a/modules/visuals/visuals.nix b/modules/visuals/visuals.nix index 97ace23..fe1e0f8 100644 --- a/modules/visuals/visuals.nix +++ b/modules/visuals/visuals.nix @@ -3,10 +3,16 @@ lib, ... }: let - inherit (lib) mkEnableOption mkMappingOption mkOption types literalExpression; + inherit (lib) mkEnableOption mkMappingOption mkOption types literalExpression mkRenamedOptionModule mkRemovedOptionModule; cfg = config.vim.visuals; in { + imports = [ + (mkRenamedOptionModule ["vim" "visuals" "indentBlankline" "showCurrContext"] ["vim" "visuals" "indentBlankline" "scope" "showCurrContext"]) + (mkRenamedOptionModule ["vim" "visuals" "indentBlankline" "showEndOfLine"] ["vim" "visuals" "indentBlankline" "scope" "showEndOfLine"]) + (mkRemovedOptionModule ["vim" "visuals" "indentBlankline" "useTreesitter"] "`vim.visuals.indentBlankline.useTreesitter` has been removed upstream and can safely be removed from your configuration.") + ]; + options.vim.visuals = { enable = mkEnableOption "Visual enhancements."; @@ -60,6 +66,35 @@ in { indentBlankline = { enable = mkEnableOption "indentation guides [indent-blankline]"; + debounce = mkOption { + type = types.int; + description = "Debounce time in milliseconds"; + default = 200; + }; + + viewportBuffer = { + min = mkOption { + type = types.int; + description = "Number of lines above and below of what is currently + visible in the window"; + default = 30; + }; + + max = mkOption { + type = types.int; + description = "Number of lines above and below of what is currently + visible in the window"; + default = 500; + }; + }; + + indent = { + char = mkOption { + type = types.str; + description = "Character for indentation line"; + default = "│"; + }; + }; listChar = mkOption { type = types.str; @@ -79,28 +114,23 @@ in { default = "↴"; }; - showEndOfLine = mkOption { - description = '' - Displays the end of line character set by [](#opt-vim.visuals.indentBlankline.eolChar) instead of the - indent guide on line returns. - ''; - type = types.bool; - default = cfg.indentBlankline.eolChar != null; - defaultText = literalExpression "config.vim.visuals.indentBlankline.eolChar != null"; - }; + scope = { + showEndOfLine = mkOption { + description = '' + Displays the end of line character set by [](#opt-vim.visuals.indentBlankline.eolChar) instead of the + indent guide on line returns. + ''; + type = types.bool; + default = cfg.indentBlankline.eolChar != null; + defaultText = literalExpression "config.vim.visuals.indentBlankline.eolChar != null"; + }; - showCurrContext = mkOption { - description = "Highlight current context from treesitter"; - type = types.bool; - default = config.vim.treesitter.enable; - defaultText = literalExpression "config.vim.treesitter.enable"; - }; - - useTreesitter = mkOption { - description = "Use treesitter to calculate indentation when possible."; - type = types.bool; - default = config.vim.treesitter.enable; - defaultText = literalExpression "config.vim.treesitter.enable"; + showCurrContext = mkOption { + description = "Highlight current context from treesitter"; + type = types.bool; + default = config.vim.treesitter.enable; + defaultText = literalExpression "config.vim.treesitter.enable"; + }; }; };