diff --git a/lib/languages.nix b/lib/languages.nix index 899d9ea8..46766843 100644 --- a/lib/languages.nix +++ b/lib/languages.nix @@ -4,6 +4,7 @@ inherit (lib.types) listOf bool str submodule attrsOf anything either nullOr uniq; inherit (lib.nvim.attrsets) mapListToAttrs; inherit (lib.nvim.types) luaInline; + inherit (lib.generators) mkLuaInline; in { # TODO: remove diagnosticsToLua = { @@ -77,4 +78,26 @@ in { }; }; }; + + # maybe put generic function to set indent for provided langs + # Then we can just call it with the lib arg + + setLanguageIndent = {language, indentSize}: { + vim.autocmds = [ + { + desc = "Sets indent for nix files"; + event = ["FileType"]; + pattern = [ language ]; + callback = mkLuaInline '' + function() + vim.bo.tabstop = ${toString indentSize} + vim.bo.softtabstop = ${toString indentSize} + vim.bo.shiftwidth = ${toString indentSize} + end + ''; + once = true; + } + ]; + }; + } diff --git a/modules/plugins/languages/markdown.nix b/modules/plugins/languages/markdown.nix index 59615cec..05346242 100644 --- a/modules/plugins/languages/markdown.nix +++ b/modules/plugins/languages/markdown.nix @@ -13,6 +13,7 @@ inherit (lib.nvim.types) diagnostics mkGrammarOption mkPluginSetupOption deprecatedSingleOrListOf; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.attrsets) mapListToAttrs; + inherit (lib.nvim.languages) setLanguageIndent; inherit (lib.trivial) warn; cfg = config.vim.languages.markdown; @@ -205,5 +206,11 @@ in { cfg.extraDiagnostics.types); }; }) + + (setLanguageIndent { + language = "markdown"; + indentSize = 6; + }) + ]); } diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index f03806f9..fb9da1aa 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -4,14 +4,16 @@ lib, ... }: let - inherit (builtins) attrNames; + inherit (builtins) attrNames toString; inherit (lib) concatStringsSep; inherit (lib.meta) getExe; inherit (lib.options) mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum; + inherit (lib.types) int; inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf; inherit (lib.nvim.attrsets) mapListToAttrs; + inherit (lib.nvim.languages) setLanguageIndent; cfg = config.vim.languages.nix; @@ -106,6 +108,12 @@ in { inherit defaultDiagnosticsProvider; }; }; + + indentSize = mkOption { + description = "Sets the indent size in spaces for .nix files"; + type = int; + default = 10; + }; }; config = mkIf cfg.enable (mkMerge [ @@ -160,5 +168,11 @@ in { cfg.extraDiagnostics.types); }; }) + + (setLanguageIndent { + language = "nix"; + indentSize = cfg.indentSize; + }) + ]); }