mirror of
https://github.com/iofq/nvim.nix.git
synced 2026-01-23 08:55:16 -06:00
linters/formatters
This commit is contained in:
parent
dab37cf7a5
commit
5043280c65
6 changed files with 80 additions and 23 deletions
|
|
@ -31,9 +31,9 @@
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
overlays = [
|
overlays = [
|
||||||
neovim-overlay
|
|
||||||
inputs.neovim-nightly-overlay.overlays.default
|
inputs.neovim-nightly-overlay.overlays.default
|
||||||
gen-luarc.overlays.default
|
gen-luarc.overlays.default
|
||||||
|
neovim-overlay
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
shell = pkgs.mkShell {
|
shell = pkgs.mkShell {
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ with final.pkgs.lib; let
|
||||||
blink-cmp
|
blink-cmp
|
||||||
blink-ripgrep-nvim
|
blink-ripgrep-nvim
|
||||||
codecompanion-nvim
|
codecompanion-nvim
|
||||||
|
conform-nvim
|
||||||
copilot-lua
|
copilot-lua
|
||||||
diffview-nvim
|
diffview-nvim
|
||||||
eyeliner-nvim
|
eyeliner-nvim
|
||||||
|
|
@ -25,12 +26,12 @@ with final.pkgs.lib; let
|
||||||
luasnip
|
luasnip
|
||||||
mini-nvim
|
mini-nvim
|
||||||
neogit
|
neogit
|
||||||
none-ls-nvim
|
|
||||||
nightfox-nvim
|
nightfox-nvim
|
||||||
nvim-autopairs
|
nvim-autopairs
|
||||||
# nvim-dap
|
# nvim-dap
|
||||||
# nvim-dap-go
|
# nvim-dap-go
|
||||||
# nvim-dap-ui
|
# nvim-dap-ui
|
||||||
|
nvim-lint
|
||||||
nvim-lspconfig
|
nvim-lspconfig
|
||||||
# nvim-nio
|
# nvim-nio
|
||||||
nvim-treesitter-context
|
nvim-treesitter-context
|
||||||
|
|
@ -52,6 +53,7 @@ with final.pkgs.lib; let
|
||||||
# linters
|
# linters
|
||||||
puppet-lint
|
puppet-lint
|
||||||
yamllint
|
yamllint
|
||||||
|
jq
|
||||||
|
|
||||||
# LSPs
|
# LSPs
|
||||||
gopls
|
gopls
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
|
vim.opt.autowrite = true
|
||||||
vim.opt.backspace = 'indent,eol,start'
|
vim.opt.backspace = 'indent,eol,start'
|
||||||
vim.opt.clipboard = 'unnamedplus'
|
vim.opt.confirm = true
|
||||||
vim.opt.completeopt = { 'menu', 'menuone', 'noselect' }
|
vim.opt.completeopt = { 'menu', 'menuone', 'noselect' }
|
||||||
vim.opt.expandtab = true -- insert tabs as spaces
|
vim.opt.expandtab = true -- insert tabs as spaces
|
||||||
vim.opt.inccommand = 'split' -- incremental live completion
|
vim.opt.inccommand = 'split' -- incremental live completion
|
||||||
|
|
@ -80,7 +81,7 @@ vim.diagnostic.config {
|
||||||
|
|
||||||
-- random keymaps
|
-- random keymaps
|
||||||
vim.keymap.set('n', 'gq', vim.cmd.bdelete, { silent = true })
|
vim.keymap.set('n', 'gq', vim.cmd.bdelete, { silent = true })
|
||||||
vim.keymap.set('n', 'gQ', '<cmd>%bd|e#', { silent = true })
|
vim.keymap.set('n', 'gQ', '<cmd>%bd|e#<CR>', { silent = true })
|
||||||
vim.keymap.set('n', 'gt', vim.cmd.bnext, { silent = true })
|
vim.keymap.set('n', 'gt', vim.cmd.bnext, { silent = true })
|
||||||
vim.keymap.set('n', 'gr', vim.cmd.bprev, { silent = true })
|
vim.keymap.set('n', 'gr', vim.cmd.bprev, { silent = true })
|
||||||
vim.keymap.set('n', 'tr', 'gT', { noremap = true, silent = true })
|
vim.keymap.set('n', 'tr', 'gT', { noremap = true, silent = true })
|
||||||
|
|
@ -88,4 +89,30 @@ vim.keymap.set('n', 'tt', 'gt', { noremap = true, silent = true })
|
||||||
vim.keymap.set('n', 'n', 'nzz', { noremap = true, silent = true })
|
vim.keymap.set('n', 'n', 'nzz', { noremap = true, silent = true })
|
||||||
vim.keymap.set('n', 'N', 'Nzz', { noremap = true, silent = true })
|
vim.keymap.set('n', 'N', 'Nzz', { noremap = true, silent = true })
|
||||||
vim.keymap.set({ 'v', 'i' }, 'wq', '<esc>l', { noremap = true, silent = true })
|
vim.keymap.set({ 'v', 'i' }, 'wq', '<esc>l', { noremap = true, silent = true })
|
||||||
vim.keymap.set('n', '<leader>x', '"rd', { remap = true, silent = true })
|
vim.keymap.set('v', "<", "<gv")
|
||||||
|
vim.keymap.set('v', ">", ">gv")
|
||||||
|
|
||||||
|
-- clipboard
|
||||||
|
vim.keymap.set({ 'n', 'v', 'x' }, '<leader>y', '"+y', { noremap = true, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>yy', '"+yy', { noremap = true, silent = true })
|
||||||
|
vim.keymap.set({ 'n', 'v', 'x' }, '<leader>p', '"+p', { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- resize splits if window got resized
|
||||||
|
vim.api.nvim_create_autocmd({ "VimResized" }, {
|
||||||
|
group = vim.api.nvim_create_augroup("resize_splits", { clear = true }),
|
||||||
|
callback = function()
|
||||||
|
local current_tab = vim.fn.tabpagenr()
|
||||||
|
vim.cmd("tabdo wincmd =")
|
||||||
|
vim.cmd("tabnext " .. current_tab)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Check if we need to reload the file when it changed
|
||||||
|
vim.api.nvim_create_autocmd({ "FocusGained", "TermClose", "TermLeave" }, {
|
||||||
|
group = vim.api.nvim_create_augroup("check_reload", { clear = true }),
|
||||||
|
callback = function()
|
||||||
|
if vim.o.buftype ~= "nofile" then
|
||||||
|
vim.cmd("checktime")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
|
||||||
|
|
@ -129,9 +129,6 @@ return {
|
||||||
vim.keymap.set('n', '<leader>dh', function()
|
vim.keymap.set('n', '<leader>dh', function()
|
||||||
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
|
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
|
||||||
end, { buffer = ev.buf, noremap = true, silent = true, desc = 'LSP hints toggle' })
|
end, { buffer = ev.buf, noremap = true, silent = true, desc = 'LSP hints toggle' })
|
||||||
vim.keymap.set('n', '<space>df', function()
|
|
||||||
vim.lsp.buf.format { async = true }
|
|
||||||
end, { buffer = ev.buf, noremap = true, silent = true, desc = 'LSP format' })
|
|
||||||
-- Auto-refresh code lenses
|
-- Auto-refresh code lenses
|
||||||
if not client then
|
if not client then
|
||||||
return
|
return
|
||||||
|
|
@ -153,16 +150,34 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'nvimtools/none-ls.nvim',
|
'stevearc/conform.nvim',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
opts = {
|
||||||
|
notify_no_formatters = false,
|
||||||
|
formatters_by_ft = {
|
||||||
|
json = { "jq" },
|
||||||
|
puppet = { "puppet-lint" },
|
||||||
|
['*'] = { 'trim_whitespace' }
|
||||||
|
},
|
||||||
|
format_on_save = {
|
||||||
|
timeout_ms = 500,
|
||||||
|
lsp_format = "last",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'mfussenegger/nvim-lint',
|
||||||
event = 'VeryLazy',
|
event = 'VeryLazy',
|
||||||
config = function()
|
config = function()
|
||||||
local null = require('null-ls')
|
require("lint").linters_by_ft = {
|
||||||
null.setup {
|
docker = { "hadolint" },
|
||||||
sources = {
|
yaml = { "yamllint" },
|
||||||
null.builtins.diagnostics.puppet_lint,
|
puppet = { "puppet-lint" },
|
||||||
null.builtins.diagnostics.yamllint,
|
sh = { "shellcheck" },
|
||||||
},
|
go = { "golangcilint" },
|
||||||
|
ruby = { "rubocop" },
|
||||||
}
|
}
|
||||||
end,
|
vim.api.nvim_command('au BufWritePost * lua require("lint").try_lint()')
|
||||||
|
end
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ return {
|
||||||
{
|
{
|
||||||
'echasnovski/mini.nvim',
|
'echasnovski/mini.nvim',
|
||||||
lazy = false,
|
lazy = false,
|
||||||
|
dependencies = { "folke/snacks.nvim" },
|
||||||
config = function()
|
config = function()
|
||||||
require('mini.basics').setup { mappings = { windows = true, }, }
|
require('mini.basics').setup { mappings = { windows = true, }, }
|
||||||
require('mini.tabline').setup({
|
require('mini.tabline').setup({
|
||||||
|
|
@ -50,8 +51,6 @@ return {
|
||||||
require('mini.jump2d').setup({ mappings = { start_jumping = '<leader>S' } });
|
require('mini.jump2d').setup({ mappings = { start_jumping = '<leader>S' } });
|
||||||
require('mini.surround').setup()
|
require('mini.surround').setup()
|
||||||
require('mini.splitjoin').setup { detect = { separator = '[,;\n]' }, }
|
require('mini.splitjoin').setup { detect = { separator = '[,;\n]' }, }
|
||||||
require('mini.trailspace').setup()
|
|
||||||
vim.api.nvim_create_user_command('Trim', require('mini.trailspace').trim, {})
|
|
||||||
|
|
||||||
local miniclue = require('mini.clue')
|
local miniclue = require('mini.clue')
|
||||||
miniclue.setup {
|
miniclue.setup {
|
||||||
|
|
@ -136,6 +135,12 @@ return {
|
||||||
)
|
)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "MiniFilesActionRename",
|
||||||
|
callback = function(event)
|
||||||
|
Snacks.rename.on_rename_file(event.data.from, event.data.to)
|
||||||
|
end,
|
||||||
|
})
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@ return {
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
opts = {
|
opts = {
|
||||||
bigfile = { enabled = true },
|
bigfile = { enabled = true },
|
||||||
|
dim = { enabled = true },
|
||||||
|
quickfile = { enabled = true },
|
||||||
notifier = { enabled = true },
|
notifier = { enabled = true },
|
||||||
scope = { enabled = true },
|
scope = { enabled = true },
|
||||||
terminal = { enabled = true },
|
terminal = { enabled = true },
|
||||||
|
|
@ -57,10 +59,11 @@ return {
|
||||||
vim.api.nvim_set_hl(0, 'SnacksPickerDir', { fg = '#cccccc' })
|
vim.api.nvim_set_hl(0, 'SnacksPickerDir', { fg = '#cccccc' })
|
||||||
end,
|
end,
|
||||||
keys = {
|
keys = {
|
||||||
{ '<C-\\>', function() Snacks.terminal.toggle() end, mode = { "n", "t" }, noremap = true, desc = 'terminal open' },
|
{ '<C-\\>', function() Snacks.terminal.toggle() end, mode = { "n", "t" }, noremap = true, desc = 'terminal open' },
|
||||||
{ '<leader>t', function() Snacks.terminal.toggle('$SHELL') end, mode = { "n", "t" }, noremap = true, desc = 'terminal open' },
|
{ '\\\\', function() Snacks.terminal.toggle('$SHELL') end, mode = { "n", "t" }, noremap = true, desc = 'terminal open' },
|
||||||
{ 'm', function() Snacks.words.jump(1, true) end, noremap = true, desc = 'next reference' },
|
{ 'm', function() Snacks.words.jump(1, true) end, noremap = true, desc = 'next reference' },
|
||||||
{ 'M', function() Snacks.words.jump(-1, true) end, noremap = true, desc = 'next reference' },
|
{ 'M', function() Snacks.words.jump(-1, true) end, noremap = true, desc = 'next reference' },
|
||||||
|
{ '\\z', function() Snacks.dim() end, noremap = true, desc = 'dim' },
|
||||||
{
|
{
|
||||||
'<leader>ff',
|
'<leader>ff',
|
||||||
function() Snacks.picker.smart() end,
|
function() Snacks.picker.smart() end,
|
||||||
|
|
@ -68,9 +71,14 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'<leader>fe',
|
'<leader>fe',
|
||||||
function() Snacks.picker.explorer() end,
|
function() Snacks.explorer() end,
|
||||||
{ noremap = true, silent = true, desc = 'snacks explorer' }
|
{ noremap = true, silent = true, desc = 'snacks explorer' }
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'<leader>fE',
|
||||||
|
function() Snacks.explorer.reveal() end,
|
||||||
|
{ noremap = true, silent = true, desc = 'snacks explorer open current file' }
|
||||||
|
},
|
||||||
{
|
{
|
||||||
'<leader>fg',
|
'<leader>fg',
|
||||||
function() Snacks.picker.files() end,
|
function() Snacks.picker.files() end,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue