feat: conform.nvim
This commit is contained in:
parent
83af9ac2ac
commit
7393fc696a
4 changed files with 85 additions and 0 deletions
|
@ -60,6 +60,9 @@ with final.pkgs.lib; let
|
|||
ts-comments-nvim
|
||||
mini-ai
|
||||
|
||||
# Formatting
|
||||
conform-nvim
|
||||
|
||||
# Treesitter
|
||||
nvim-treesitter-textobjects
|
||||
nvim-ts-autotag
|
||||
|
@ -104,6 +107,10 @@ with final.pkgs.lib; let
|
|||
# Language servers
|
||||
lua-language-server
|
||||
nixd
|
||||
|
||||
# Formatters
|
||||
shfmt
|
||||
stylua
|
||||
];
|
||||
in {
|
||||
# This is the neovim derivation returned by the overlay.
|
||||
|
|
43
nvim/lua/plugins/formatting/conform-nvim.lua
Normal file
43
nvim/lua/plugins/formatting/conform-nvim.lua
Normal file
|
@ -0,0 +1,43 @@
|
|||
return {
|
||||
'conform.nvim',
|
||||
event = { 'BufWritePre' },
|
||||
cmd = { 'ConformInfo' },
|
||||
keys = {
|
||||
{
|
||||
'<LEADER>cf',
|
||||
function()
|
||||
require('conform').format()
|
||||
end,
|
||||
desc = 'format',
|
||||
},
|
||||
{
|
||||
'<LEADER>cF',
|
||||
function()
|
||||
require('conform').format({
|
||||
formatters = { 'injected' },
|
||||
timeout_ms = 3000,
|
||||
})
|
||||
end,
|
||||
mode = { 'n', 'v' },
|
||||
desc = 'format injected langs',
|
||||
},
|
||||
},
|
||||
after = function()
|
||||
require('conform').setup({
|
||||
format_on_save = function(buf)
|
||||
if (vim.g.autoformat == false) or (vim.b[buf].autoformat == false) then
|
||||
return
|
||||
end
|
||||
|
||||
return { timeout_ms = 3000, lsp_format = 'fallback' }
|
||||
end,
|
||||
formatters_by_ft = {
|
||||
lua = { 'stylua' },
|
||||
fish = { 'fish_indent' },
|
||||
sh = { 'shfmt' },
|
||||
},
|
||||
})
|
||||
|
||||
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
||||
end,
|
||||
}
|
5
nvim/lua/plugins/formatting/init.lua
Normal file
5
nvim/lua/plugins/formatting/init.lua
Normal file
|
@ -0,0 +1,5 @@
|
|||
local req = MarleyVim.local_require('plugins.formatting')
|
||||
|
||||
return {
|
||||
req('conform-nvim'),
|
||||
}
|
|
@ -61,6 +61,36 @@ if vim.lsp.inlay_hint then
|
|||
toggle.inlay_hints():map('<LEADER>uh')
|
||||
end
|
||||
|
||||
toggle({
|
||||
name = 'auto format (global)',
|
||||
get = function()
|
||||
return vim.g.autoformat == nil or vim.g.autoformat
|
||||
end,
|
||||
set = function(enable)
|
||||
vim.g.autoformat = (enable == nil and true) or enable
|
||||
vim.b.autoformat = nil
|
||||
end,
|
||||
}):map('<LEADER>uf')
|
||||
|
||||
toggle({
|
||||
name = 'auto format (buffer)',
|
||||
get = function()
|
||||
local buf = vim.api.nvim_get_current_buf()
|
||||
|
||||
local gopt = vim.g.autoformat
|
||||
local bopt = vim.b[buf].autoformat
|
||||
|
||||
if bopt ~= nil then
|
||||
return bopt
|
||||
end
|
||||
|
||||
return gopt == nil or gopt
|
||||
end,
|
||||
set = function(enable)
|
||||
vim.b.autoformat = (enable == nil and true) or enable
|
||||
end,
|
||||
}):map('<LEADER>uF')
|
||||
|
||||
-- Git -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
|
||||
set({ 'n' }, '<LEADER>gb', function()
|
||||
|
|
Loading…
Reference in a new issue