Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions lib/languages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down Expand Up @@ -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;
}
];
};

}
7 changes: 7 additions & 0 deletions modules/plugins/languages/markdown.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -205,5 +206,11 @@ in {
cfg.extraDiagnostics.types);
};
})

(setLanguageIndent {
language = "markdown";
indentSize = 6;
})

]);
}
16 changes: 15 additions & 1 deletion modules/plugins/languages/nix.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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 [
Expand Down Expand Up @@ -160,5 +168,11 @@ in {
cfg.extraDiagnostics.types);
};
})

(setLanguageIndent {
language = "nix";
indentSize = cfg.indentSize;
})

]);
}