feat(nvim): move conform to own file
parent
9a66c10241
commit
85bab070c6
|
@ -0,0 +1,73 @@
|
||||||
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkEnableOption mkIf readFile;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home-manager.users.moritz.programs.nixvim = {
|
||||||
|
plugins.conform-nvim = {
|
||||||
|
enable = true;
|
||||||
|
settings.formatters_by_ft = {
|
||||||
|
"*" = [ "codespell" "trim_whitespace" ];
|
||||||
|
elixir = [ "mix" ];
|
||||||
|
gleam = [ "gleam" ];
|
||||||
|
go = [ "gofmt" ];
|
||||||
|
json = [ "jq" ];
|
||||||
|
lua = [ "stylua" ];
|
||||||
|
nix.__raw = ''{ "nixpkgs_fmt", "alejandra", stop_after_first=true }'';
|
||||||
|
python.__raw = ''
|
||||||
|
function(bufnr)
|
||||||
|
return { first("ruff_organize_imports", "isort"), first("ruff_format", "black")}
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
rust = [ "rustfmt" ];
|
||||||
|
sh = [ "shfmt" ];
|
||||||
|
tex = [ "latexindent" ];
|
||||||
|
toml = [ "taplo" ];
|
||||||
|
yaml = [ "yamlfix" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
opts.formatexpr = "v:lua.require'conform'.formatexpr()";
|
||||||
|
extraConfigLuaPre = ''
|
||||||
|
---@param bufnr integer
|
||||||
|
---@param ... string
|
||||||
|
---@return string
|
||||||
|
local function first(bufnr, ...)
|
||||||
|
local conform = require("conform")
|
||||||
|
for i = 1, select("#", ...) do
|
||||||
|
local formatter = select(i, ...)
|
||||||
|
if conform.get_formatter_info(formatter, bufnr).available then
|
||||||
|
return formatter
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return select(1, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("Format", function(opts)
|
||||||
|
require("conform").format({ formatters = opts.fargs })
|
||||||
|
end, {
|
||||||
|
nargs = "+",
|
||||||
|
complete = function()
|
||||||
|
local formatters_by_ft = require("conform").formatters_by_ft
|
||||||
|
local names = formatters_by_ft[vim.bo.filetype] or formatters_by_ft["_"] or {}
|
||||||
|
names = vim.list_extend(names, formatters_by_ft["*"] or {})
|
||||||
|
names = vim.tbl_flatten(names)
|
||||||
|
local formatters = vim.tbl_map(require("conform").get_formatter_info, names)
|
||||||
|
formatters = vim.tbl_filter(function(formatter)
|
||||||
|
return formatter.available
|
||||||
|
end, formatters)
|
||||||
|
return vim.tbl_map(function(formatter_info)
|
||||||
|
return formatter_info.name
|
||||||
|
end, formatters)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
performance.combinePlugins.standalonePlugins = [
|
||||||
|
"conform.nvim"
|
||||||
|
];
|
||||||
|
keymaps = [
|
||||||
|
{ key = "<leader>cf"; action.__raw = ''function() require("conform").format() end''; options.desc = "Format current file"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -22,71 +22,7 @@ in
|
||||||
keymaps.todoTelescope.key = "<leader>fc";
|
keymaps.todoTelescope.key = "<leader>fc";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
|
||||||
plugins.conform-nvim = {
|
|
||||||
enable = true;
|
|
||||||
settings.formatters_by_ft = {
|
|
||||||
"*" = [ "codespell" "trim_whitespace" ];
|
|
||||||
elixir = [ "mix" ];
|
|
||||||
gleam = [ "gleam" ];
|
|
||||||
go = [ "gofmt" ];
|
|
||||||
json = [ "jq" ];
|
|
||||||
lua = [ "stylua" ];
|
|
||||||
nix.__raw = ''{ "nixpkgs_fmt", "alejandra", stop_after_first=true }'';
|
|
||||||
python.__raw = ''
|
|
||||||
function(bufnr)
|
|
||||||
return { first("ruff_organize_imports", "isort"), first("ruff_format", "black")}
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
rust = [ "rustfmt" ];
|
|
||||||
sh = [ "shfmt" ];
|
|
||||||
tex = [ "latexindent" ];
|
|
||||||
toml = [ "taplo" ];
|
|
||||||
yaml = [ "yamlfix" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
opts.formatexpr = "v:lua.require'conform'.formatexpr()";
|
|
||||||
extraConfigLuaPre = ''
|
|
||||||
---@param bufnr integer
|
|
||||||
---@param ... string
|
|
||||||
---@return string
|
|
||||||
local function first(bufnr, ...)
|
|
||||||
local conform = require("conform")
|
|
||||||
for i = 1, select("#", ...) do
|
|
||||||
local formatter = select(i, ...)
|
|
||||||
if conform.get_formatter_info(formatter, bufnr).available then
|
|
||||||
return formatter
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return select(1, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command("Format", function(opts)
|
|
||||||
require("conform").format({ formatters = opts.fargs })
|
|
||||||
end, {
|
|
||||||
nargs = "+",
|
|
||||||
complete = function()
|
|
||||||
local formatters_by_ft = require("conform").formatters_by_ft
|
|
||||||
local names = formatters_by_ft[vim.bo.filetype] or formatters_by_ft["_"] or {}
|
|
||||||
names = vim.list_extend(names, formatters_by_ft["*"] or {})
|
|
||||||
names = vim.tbl_flatten(names)
|
|
||||||
local formatters = vim.tbl_map(require("conform").get_formatter_info, names)
|
|
||||||
formatters = vim.tbl_filter(function(formatter)
|
|
||||||
return formatter.available
|
|
||||||
end, formatters)
|
|
||||||
return vim.tbl_map(function(formatter_info)
|
|
||||||
return formatter_info.name
|
|
||||||
end, formatters)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
performance.combinePlugins.standalonePlugins = [
|
|
||||||
"conform.nvim"
|
|
||||||
];
|
|
||||||
keymaps = [
|
|
||||||
{ key = "<leader>cf"; action.__raw = ''function() require("conform").format() end''; options.desc = "Format current file"; }
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
keymaps = [
|
keymaps = [
|
||||||
{ key = "<esc>"; action = "<cmd>noh<cr><esc>"; options.desc = "Escape and clear hlsearch"; mode = [ "i" "n" ]; }
|
{ key = "<esc>"; action = "<cmd>noh<cr><esc>"; options.desc = "Escape and clear hlsearch"; mode = [ "i" "n" ]; }
|
||||||
|
|
Loading…
Reference in New Issue