feat: remove lazy
This commit is contained in:
42
lua/triimd/diagnostics.lua
Normal file
42
lua/triimd/diagnostics.lua
Normal file
@@ -0,0 +1,42 @@
|
||||
-- Diagnostics
|
||||
local special_sources = {
|
||||
lua_ls = 'lua',
|
||||
}
|
||||
vim.diagnostic.config({
|
||||
underline = true,
|
||||
severity_sort = true,
|
||||
virtual_text = {
|
||||
format = function(diagnostic)
|
||||
local src = diagnostic.source and (special_sources[diagnostic.source] or diagnostic.source)
|
||||
if src then
|
||||
return string.format('%s: %s', src, diagnostic.message)
|
||||
end
|
||||
return diagnostic.message
|
||||
end,
|
||||
},
|
||||
float = {
|
||||
border = 'rounded',
|
||||
header = '',
|
||||
format = function(diagnostic)
|
||||
local src = diagnostic.source and (special_sources[diagnostic.source] or diagnostic.source)
|
||||
if src then
|
||||
return string.format('%s: %s', src, diagnostic.message)
|
||||
end
|
||||
return diagnostic.message
|
||||
end,
|
||||
},
|
||||
})
|
||||
|
||||
-- Override the virtual text diagnostic handler so that the most severe diagnostic is shown first.
|
||||
local show_handler = vim.diagnostic.handlers.virtual_text.show
|
||||
assert(show_handler)
|
||||
local hide_handler = vim.diagnostic.handlers.virtual_text.hide
|
||||
vim.diagnostic.handlers.virtual_text = {
|
||||
show = function(ns, bufnr, diagnostics, opts)
|
||||
table.sort(diagnostics, function(diag1, diag2)
|
||||
return diag1.severity > diag2.severity
|
||||
end)
|
||||
return show_handler(ns, bufnr, diagnostics, opts)
|
||||
end,
|
||||
hide = hide_handler,
|
||||
}
|
||||
127
lua/triimd/filetree.lua
Normal file
127
lua/triimd/filetree.lua
Normal file
@@ -0,0 +1,127 @@
|
||||
vim.pack.add({
|
||||
{ src = 'https://gitea.tomastm.com/tomas.mirchev/nvim-tree.lua', version = 'master' },
|
||||
})
|
||||
|
||||
local function my_on_attach(bufnr)
|
||||
local api = require('nvim-tree.api')
|
||||
local opts = { buffer = bufnr }
|
||||
|
||||
-- basics: copy/cut/paste/create/rename/remove
|
||||
vim.keymap.set('n', 'c', api.fs.copy.node, opts)
|
||||
vim.keymap.set('n', 'x', api.fs.cut, opts)
|
||||
vim.keymap.set('n', 'p', api.fs.paste, opts)
|
||||
vim.keymap.set('n', 'a', api.fs.create, opts)
|
||||
vim.keymap.set('n', 'r', api.fs.rename, opts)
|
||||
vim.keymap.set('n', 'R', api.fs.rename_basename, opts)
|
||||
vim.keymap.set('n', 'd', api.fs.remove, opts)
|
||||
|
||||
-- bulk mark and delete/move
|
||||
vim.keymap.set('n', 's', api.marks.toggle, opts)
|
||||
vim.keymap.set('n', 'S', api.marks.clear, opts)
|
||||
vim.keymap.set('n', 'bd', api.marks.bulk.delete, opts)
|
||||
vim.keymap.set('n', 'bm', api.marks.bulk.move, opts)
|
||||
|
||||
-- copy filename/path
|
||||
vim.keymap.set('n', 'y', api.fs.copy.filename, opts)
|
||||
vim.keymap.set('n', 'Y', api.fs.copy.relative_path, opts)
|
||||
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts)
|
||||
vim.keymap.set('n', 'ge', api.fs.copy.basename, opts)
|
||||
|
||||
-- expand/collapse
|
||||
vim.keymap.set('n', 'e', api.tree.expand_all, opts)
|
||||
vim.keymap.set('n', 'E', api.tree.collapse_all, opts)
|
||||
|
||||
-- filter
|
||||
vim.keymap.set('n', 'f', api.live_filter.start, opts)
|
||||
vim.keymap.set('n', 'F', api.live_filter.clear, opts)
|
||||
|
||||
-- navigate
|
||||
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts)
|
||||
vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts)
|
||||
vim.keymap.set('n', 'P', api.node.navigate.parent, opts)
|
||||
|
||||
-- open
|
||||
vim.keymap.set('n', '<CR>', api.node.open.edit, opts)
|
||||
vim.keymap.set('n', 'o', api.node.open.edit, opts)
|
||||
vim.keymap.set('n', 'O', api.node.open.no_window_picker, opts)
|
||||
|
||||
-- miscellaneous
|
||||
vim.keymap.set('n', 'K', api.node.show_info_popup, opts)
|
||||
vim.keymap.set('n', 'U', api.tree.reload, opts)
|
||||
end
|
||||
|
||||
require('nvim-tree').setup({
|
||||
on_attach = my_on_attach,
|
||||
view = { signcolumn = 'no' },
|
||||
actions = { file_popup = { open_win_config = { border = 'rounded' } } },
|
||||
renderer = {
|
||||
root_folder_label = false,
|
||||
special_files = {},
|
||||
|
||||
highlight_hidden = 'all',
|
||||
highlight_clipboard = 'all',
|
||||
|
||||
indent_markers = {
|
||||
enable = true,
|
||||
inline_arrows = false,
|
||||
icons = { corner = '│', none = '│', bottom = ' ' },
|
||||
},
|
||||
icons = {
|
||||
bookmarks_placement = 'after',
|
||||
git_placement = 'after',
|
||||
show = {
|
||||
file = false,
|
||||
folder = false,
|
||||
folder_arrow = false,
|
||||
git = true,
|
||||
modified = false,
|
||||
hidden = false,
|
||||
diagnostics = false,
|
||||
bookmarks = true,
|
||||
},
|
||||
glyphs = {
|
||||
git = {
|
||||
unstaged = '◇',
|
||||
staged = '',
|
||||
unmerged = '',
|
||||
renamed = '',
|
||||
untracked = '',
|
||||
deleted = '',
|
||||
ignored = '',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
hijack_cursor = true,
|
||||
prefer_startup_root = true,
|
||||
update_focused_file = {
|
||||
enable = true,
|
||||
update_root = { enable = true, ignore_list = {} },
|
||||
exclude = false,
|
||||
},
|
||||
modified = { enable = true, show_on_dirs = true, show_on_open_dirs = true },
|
||||
filters = {
|
||||
enable = true,
|
||||
git_ignored = true,
|
||||
dotfiles = false,
|
||||
git_clean = false,
|
||||
no_buffer = false,
|
||||
no_bookmark = false,
|
||||
custom = {},
|
||||
exclude = {},
|
||||
},
|
||||
filesystem_watchers = {
|
||||
enable = true,
|
||||
debounce_delay = 50,
|
||||
ignore_dirs = {
|
||||
'/.git',
|
||||
'/.DS_Store',
|
||||
'/build',
|
||||
'/dist',
|
||||
'/public',
|
||||
'/node_modules',
|
||||
'/target',
|
||||
},
|
||||
},
|
||||
})
|
||||
89
lua/triimd/keymaps.lua
Normal file
89
lua/triimd/keymaps.lua
Normal file
@@ -0,0 +1,89 @@
|
||||
-- Helper functions
|
||||
local function map(mode, lhs, rhs)
|
||||
vim.keymap.set(mode, lhs, rhs, { silent = true })
|
||||
end
|
||||
|
||||
local function cmd(str)
|
||||
return '<cmd>' .. str .. '<CR>'
|
||||
end
|
||||
|
||||
-- QOL
|
||||
map('i', 'jk', '<Esc>')
|
||||
map('i', '<C-c>', '<Esc>')
|
||||
map('n', '<Esc>', cmd('nohlsearch'))
|
||||
map('n', 'q:', '<nop>')
|
||||
|
||||
vim.keymap.set('n', 'J', 'mzJ`z')
|
||||
vim.keymap.set('n', 'n', 'nzzzv')
|
||||
vim.keymap.set('n', 'N', 'Nzzzv')
|
||||
|
||||
vim.keymap.set('x', 'J', ":m '>+1<CR>gv=gv")
|
||||
vim.keymap.set('x', 'K', ":m '<-2<CR>gv=gv")
|
||||
|
||||
vim.keymap.set('n', '<leader>s', [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/g<Left><Left><Left>]])
|
||||
|
||||
-- Easy to use registers
|
||||
map('x', '<leader>p', '"_dP')
|
||||
map({ 'n', 'x' }, '<leader>y', '"+y')
|
||||
map('n', '<leader>Y', '"+y$')
|
||||
map({ 'n', 'x' }, '<leader>d', '"_d')
|
||||
map({ 'n', 'x' }, 'x', '"_x')
|
||||
|
||||
-- Window navigation
|
||||
map('n', '<C-h>', '<C-w>h')
|
||||
map('n', '<C-l>', '<C-w>l')
|
||||
map('n', '<C-j>', '<C-w>j')
|
||||
map('n', '<C-k>', '<C-w>k')
|
||||
|
||||
-- Tab management
|
||||
map('n', ']t', cmd('tabnext'))
|
||||
map('n', '[t', cmd('tabprevious'))
|
||||
map('n', '<leader>tt', cmd('tabnew'))
|
||||
map('n', '<leader>tn', cmd('tabnew'))
|
||||
map('n', '<leader>tc', cmd('tabclose'))
|
||||
map('n', '<Leader>tl', cmd('tabmove +1'))
|
||||
map('n', '<Leader>th', cmd('tabmove -1'))
|
||||
for i = 1, 9 do
|
||||
map('n', string.format('<Leader>t%d', i), string.format('%dgt', i))
|
||||
end
|
||||
|
||||
-- Buffer management
|
||||
map('n', ']b', cmd('bnext'))
|
||||
map('n', '[b', cmd('bprevious'))
|
||||
map('n', '<leader>bl', cmd('ls'))
|
||||
map('n', '<leader>bd', cmd(':bp | bd #'))
|
||||
map('n', '<leader>bo', cmd('%bd|e#')) -- close all except current
|
||||
map('n', '<leader>bb', '<C-^>') -- toggle between buffers
|
||||
|
||||
-- Terminal
|
||||
map('n', '<leader>xx', cmd('TermDefault'))
|
||||
map('n', '<leader>xr', cmd('TermRelative'))
|
||||
map('n', '<leader>xs', cmd('TermSplit'))
|
||||
map('n', '<leader>xv', cmd('TermVSplit'))
|
||||
map('t', '<Esc>', '<C-\\><C-n>')
|
||||
map('t', '<C-w>h', [[<C-\><C-n><C-w>h]])
|
||||
map('t', '<C-w>j', [[<C-\><C-n><C-w>j]])
|
||||
map('t', '<C-w>k', [[<C-\><C-n><C-w>k]])
|
||||
map('t', '<C-w>l', [[<C-\><C-n><C-w>l]])
|
||||
map('t', '<C-w>c', [[<C-\><C-n><cmd>bd!<CR>]])
|
||||
map('t', '<C-w><C-w>', [[<C-\><C-n><C-w>w]])
|
||||
|
||||
-- File explorer
|
||||
map('n', '<leader>e', cmd('NvimTreeToggle'))
|
||||
map('n', '<leader>E', cmd('NvimTreeOpen'))
|
||||
|
||||
-- Diagnostics
|
||||
map('n', ']d', function()
|
||||
vim.diagnostic.jump({ count = 1, float = true })
|
||||
end)
|
||||
map('n', '[d', function()
|
||||
vim.diagnostic.jump({ count = -1, float = true })
|
||||
end)
|
||||
map('n', '<leader>q', vim.diagnostic.setloclist)
|
||||
map('n', '<leader>d', vim.diagnostic.open_float)
|
||||
map('n', '<leader>s', vim.lsp.buf.signature_help)
|
||||
|
||||
map('n', 'gd', vim.lsp.buf.definition)
|
||||
map('n', 'gr', vim.lsp.buf.references)
|
||||
map('n', 'K', vim.lsp.buf.hover)
|
||||
map('n', '<C-s>', vim.lsp.buf.signature_help)
|
||||
26
lua/triimd/syntax.lua
Normal file
26
lua/triimd/syntax.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
local language_specs = {
|
||||
{ ts = { 'yaml', 'toml', 'sql', 'diff', 'dockerfile', 'gitcommit', 'gitignore' } },
|
||||
{ ts = { 'c', 'cpp', 'go', 'rust', 'python' } },
|
||||
|
||||
{ ft = 'markdown', ts = { 'markdown', 'markdown_inline' }, format = 'prettier' },
|
||||
{ ft = 'bash', lsp = 'bash-language-server', lint = 'shellcheck', format = 'shfmt' },
|
||||
{ ft = 'lua', lsp = 'lua-language-server', lint = 'luacheck', format = 'stylua' },
|
||||
{ ft = { 'json', 'jsonc' }, lsp = 'json-lsp' },
|
||||
{ ft = 'html', lsp = 'html-lsp' },
|
||||
{ ft = 'css', lsp = { 'css-lsp', 'tailwindcss-language-server' } },
|
||||
{
|
||||
ft = { 'javascript', 'typescript', 'javascriptreact', 'typescriptreact' },
|
||||
ts = { 'javascript', 'typescript', 'tsx' },
|
||||
lsp = { 'vtsls', 'eslint-lsp' },
|
||||
format = { 'prettierd', 'prettier' },
|
||||
},
|
||||
}
|
||||
|
||||
local lm = require('plugins.language-manager')
|
||||
|
||||
lm.generate_specs(language_specs)
|
||||
|
||||
lm.ts.setup()
|
||||
lm.lsp.setup()
|
||||
lm.lint.setup()
|
||||
lm.format.setup()
|
||||
Reference in New Issue
Block a user