neovim -> nixvim
This commit is contained in:
133
home/programs/nixvim/plugins/conform.nix
Normal file
133
home/programs/nixvim/plugins/conform.nix
Normal file
@@ -0,0 +1,133 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
stylua
|
||||
rustfmt
|
||||
fourmolu
|
||||
shellcheck
|
||||
shellharden
|
||||
shfmt
|
||||
black
|
||||
beamMinimal28Packages.elixir
|
||||
clang-tools
|
||||
prettierd
|
||||
nixfmt-rfc-style
|
||||
tex-fmt
|
||||
hclfmt
|
||||
topiary # TODO: Install https://github.com/blindFS/topiary-nushell somehow, e.g. clone languages.ncl to ~/.config/topiary/languages.ncl & nu.scm to ~/.config/topiary/topiary-queries/queries/nu.scm
|
||||
];
|
||||
|
||||
programs.nixvim.plugins = {
|
||||
conform-nvim = {
|
||||
enable = true;
|
||||
settings = {
|
||||
formatters_by_ft = {
|
||||
lua = [ "stylua" ];
|
||||
rust = [ "rustfmt" ];
|
||||
python = [
|
||||
"black"
|
||||
];
|
||||
haskell = [ "fourmolu" ];
|
||||
terraform = [ "hcl" ];
|
||||
elixir = [ "mix" ];
|
||||
bash = [
|
||||
"shellcheck"
|
||||
"shellharden"
|
||||
"shfmt"
|
||||
];
|
||||
sh = [
|
||||
"shellcheck"
|
||||
"shfmt"
|
||||
];
|
||||
c = [ "clang-format" ];
|
||||
cpp = [ "clang-format" ];
|
||||
markdown = [ "prettierd" ];
|
||||
json = [ "prettierd" ];
|
||||
yaml = [ "prettierd" ];
|
||||
nu = [ "topiary_nu" ];
|
||||
nix = [ "nixfmt" ];
|
||||
tex = [
|
||||
"tex-fmt"
|
||||
];
|
||||
"_" = [
|
||||
"squeeze_blanks"
|
||||
"trim_whitespace"
|
||||
"trim_newlines"
|
||||
];
|
||||
};
|
||||
format_on_save = # Lua
|
||||
''
|
||||
function(bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
|
||||
return { lsp_fallback = true }
|
||||
end
|
||||
'';
|
||||
format_after_save = # Lua
|
||||
''
|
||||
function(bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
|
||||
return { lsp_fallback = true }
|
||||
end
|
||||
'';
|
||||
formatters = {
|
||||
topiary_nu = {
|
||||
command = "topiary";
|
||||
args = [
|
||||
"format"
|
||||
"--language"
|
||||
"nu"
|
||||
];
|
||||
};
|
||||
stylua = {
|
||||
"inherit" = true;
|
||||
prepend_args = [
|
||||
"--indent-type"
|
||||
"Spaces"
|
||||
"--indent-width"
|
||||
"2"
|
||||
];
|
||||
};
|
||||
tex-fmt = {
|
||||
command = "tex-fmt";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.nixvim.userCommands = {
|
||||
FormatDisable = {
|
||||
bang = true;
|
||||
desc = "Disable autoformat-on-save";
|
||||
command.__raw = # Lua
|
||||
''
|
||||
function(args)
|
||||
if args.bang then
|
||||
-- FormatDisable! will disable formatting just for this buffer
|
||||
vim.b.disable_autoformat = true
|
||||
else
|
||||
vim.g.disable_autoformat = true
|
||||
end
|
||||
end
|
||||
'';
|
||||
};
|
||||
FormatEnable = {
|
||||
desc = "Re-enable autoformat-on-save";
|
||||
command.__raw = # Lua
|
||||
''
|
||||
function()
|
||||
vim.b.disable_autoformat = false
|
||||
vim.g.disable_autoformat = false
|
||||
end
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user