108 lines
2.8 KiB
Nix
108 lines
2.8 KiB
Nix
{ ... }:
|
|
{
|
|
userCommands =
|
|
let
|
|
formatCmd = {
|
|
desc = "Format all the buffer";
|
|
# conform.format function can deal with range by itself
|
|
range = "%";
|
|
bang = true;
|
|
bar = true;
|
|
nargs = "?";
|
|
complete = {
|
|
__raw =
|
|
#lua
|
|
''
|
|
function(ArgLead, CmdLine, CursorPos)
|
|
return vim.iter(require("conform").list_all_formatters()):filter(function(val)
|
|
return val.available
|
|
end):map(function(val)
|
|
return val.name
|
|
end):filter(function(name)
|
|
return string.match(name, "^" .. ArgLead) ~= nil
|
|
end):totable()
|
|
end
|
|
'';
|
|
};
|
|
command = {
|
|
__raw =
|
|
#lua
|
|
''
|
|
function(opts)
|
|
local format = require("conform").format
|
|
if #(opts.fargs) == 0 then
|
|
return format()
|
|
else
|
|
return format({ formatters = { opts.fargs[1] } })
|
|
end
|
|
end
|
|
'';
|
|
};
|
|
};
|
|
in
|
|
{
|
|
Format = formatCmd;
|
|
Fmt = formatCmd;
|
|
Formatter = {
|
|
desc = "Show config of formatter";
|
|
nargs = "?";
|
|
bar = true;
|
|
complete = {
|
|
__raw =
|
|
#lua
|
|
''
|
|
function(ArgLead, CmdLine, CursorPos)
|
|
return vim.iter(require("conform").list_all_formatters()):map(function(val)
|
|
return val.name
|
|
end):filter(function(name)
|
|
return string.match(name, "^" .. ArgLead) ~= nil
|
|
end):totable()
|
|
end
|
|
'';
|
|
};
|
|
command = {
|
|
__raw =
|
|
#lua
|
|
''
|
|
function(opts)
|
|
local conform = require("conform")
|
|
if #(opts.fargs) == 0 then
|
|
local formatters = conform.list_all_formatters()
|
|
print(vim.inspect(formatters))
|
|
return formatters
|
|
else
|
|
local config = conform.get_formatter_config(opts.fargs[1])
|
|
print(vim.inspect(config))
|
|
return config
|
|
end
|
|
end
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
keymaps = [
|
|
{
|
|
action = {
|
|
__raw =
|
|
#lua
|
|
''
|
|
function(opts)
|
|
return require("conform").format()
|
|
end
|
|
'';
|
|
};
|
|
key = "=";
|
|
mode = [
|
|
"n"
|
|
"v"
|
|
];
|
|
options = {
|
|
desc = "Format with conform";
|
|
};
|
|
}
|
|
];
|
|
youthlic.plugins.conform-nvim = {
|
|
enable = true;
|
|
settings.formatters.injected.options.ignore_errors = true;
|
|
};
|
|
}
|