diff options
author | Marc Pervaz Boocha <mboocha@sudomsg.com> | 2025-07-07 23:39:20 +0530 |
---|---|---|
committer | Marc Pervaz Boocha <mboocha@sudomsg.com> | 2025-07-07 23:39:20 +0530 |
commit | 2b2676d45e52db5e2dbfa8b2fd72ee95b2967dd2 (patch) | |
tree | 27a0a04b05084ad199087f43d3a2c7eed4aca2a1 | |
parent | Updated submodules (diff) | |
download | dotfiles-2b2676d45e52db5e2dbfa8b2fd72ee95b2967dd2.tar dotfiles-2b2676d45e52db5e2dbfa8b2fd72ee95b2967dd2.tar.gz dotfiles-2b2676d45e52db5e2dbfa8b2fd72ee95b2967dd2.tar.bz2 dotfiles-2b2676d45e52db5e2dbfa8b2fd72ee95b2967dd2.tar.lz dotfiles-2b2676d45e52db5e2dbfa8b2fd72ee95b2967dd2.tar.xz dotfiles-2b2676d45e52db5e2dbfa8b2fd72ee95b2967dd2.tar.zst dotfiles-2b2676d45e52db5e2dbfa8b2fd72ee95b2967dd2.zip |
Add Exrc and modulized LSPAttach
-rw-r--r-- | .config/nvim/.luarc.json | 3 | ||||
-rw-r--r-- | .config/nvim/ftplugin/lua.lua | 2 | ||||
-rw-r--r-- | .config/nvim/init.lua | 120 | ||||
-rw-r--r-- | .config/nvim/lua/lsp.lua | 114 | ||||
-rw-r--r-- | .gitmodules | 20 | ||||
m--------- | .local/share/nvim/site/pack/plugins/start/conform | 0 | ||||
m--------- | .local/share/nvim/site/pack/plugins/start/nvim-lspconfig | 0 | ||||
m--------- | .local/share/nvim/site/pack/plugins/start/nvim-treesitter | 0 | ||||
m--------- | .zfunc/zsh-completions | 0 |
9 files changed, 135 insertions, 124 deletions
diff --git a/.config/nvim/.luarc.json b/.config/nvim/.luarc.json new file mode 100644 index 0000000..63c0022 --- /dev/null +++ b/.config/nvim/.luarc.json @@ -0,0 +1,3 @@ +{ + "$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json" +} diff --git a/.config/nvim/ftplugin/lua.lua b/.config/nvim/ftplugin/lua.lua deleted file mode 100644 index ab8173f..0000000 --- a/.config/nvim/ftplugin/lua.lua +++ /dev/null @@ -1,2 +0,0 @@ - --- require'lazydev'.setup {} diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 4fda0df..2d516ab 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -24,10 +24,7 @@ vim.g.loaded_python_provider = 0 vim.o.list = true vim.o.mouse = 'a' -vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()' -vim.o.foldmethod = "expr" vim.o.foldcolumn = "auto" - vim.o.cursorline = true vim.o.laststatus = 2 vim.o.statusline = "%!v:lua.require'lines'.status()" @@ -37,6 +34,8 @@ vim.o.signcolumn = 'yes' vim.o.completeopt = "menuone,noselect,popup,fuzzy" vim.o.showtabline = 2 +vim.o.exrc = true + vim.cmd.colorscheme 'retrobox' vim.keymap.set({ 'n', 'x' }, '<leader>y', '"+y') @@ -72,9 +71,16 @@ end require 'mason'.setup {} +require 'nvim-treesitter'.update() + vim.api.nvim_create_autocmd('FileType', { callback = function(args) - pcall(vim.treesitter.start, args.buf, args.match) + local ok = pcall(vim.treesitter.start, args.buf, args.match) + if ok then + vim.wo.foldmethod = "expr" + vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()' + vim.bo[args.buf].indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end end }) @@ -86,116 +92,15 @@ vim.diagnostic.config { virtual_lines = true, } -vim.keymap.set('n', '<leader>f', function() - vim.lsp.buf.format { async = true } -end) - -vim.api.nvim_create_user_command("Format", function(args) - local range = nil - if args.count ~= -1 then - local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] - range = { - start = { args.line1, 0 }, - ["end"] = { args.line2, end_line:len() }, - } - end - vim.lsp.buf.format { async = true, range = range } -end, { range = true }) - -vim.keymap.set({ 'n', 'v' }, 'grl', function() - vim.lsp.codelens.run() -end) - -vim.keymap.set('n', '<leader>wa', function() - vim.lsp.buf.add_workspace_folder() -end) - -vim.keymap.set('n', '<leader>wr', function() - vim.lsp.buf.remove_workspace_folder() -end) - -vim.keymap.set('n', '<leader>wl', function() - local dir = vim.lsp.buf.list_workspace_folders() - vim.ui.select(dir, { - prompt = 'Workspace Dir: ', - }, function(result) - if result then - vim.api.nvim_set_current_dir(result) - end - end) -end) - -vim.api.nvim_create_user_command("Symbols", function(args) - if args.args == "" - then - vim.lsp.buf.workspace_symbol() - else - vim.lsp.buf.workspace_symbol(args.args) - end -end, { nargs = "?" }) - vim.api.nvim_create_autocmd('LspAttach', { callback = function(ev) - local opts = { buffer = ev.buf } local client = vim.lsp.get_client_by_id(ev.data.client_id) if not client then return end - if client:supports_method('textDocument/inlayHint') then - vim.lsp.inlay_hint.enable() - end - - if client:supports_method('textDocument/completion') then - local chars = {} - for i = 32, 126 do - table.insert(chars, string.char(i)) - end - client.server_capabilities.completionProvider.triggerCharacters = chars - vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) - end - - if client:supports_method('textDocument/documentHighlight') then - local highlight_augroup = vim.api.nvim_create_augroup('lsp-highlight', - { clear = false }) - vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { - buffer = ev.buf, - group = highlight_augroup, - callback = vim.lsp.buf.document_highlight, - }) - - vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { - buffer = ev.buf, - group = highlight_augroup, - callback = vim.lsp.buf.clear_references, - }) - - vim.api.nvim_create_autocmd('LspDetach', { - callback = function(event) - vim.lsp.buf.clear_references() - vim.api.nvim_clear_autocmds { - group = highlight_augroup, - buffer = event.buf - } - end, - }) - end - - if client:supports_method('textDocument/foldingRange') then - local win = vim.api.nvim_get_current_win() - vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' - end - - if client:supports_method('textDocument/codelens') then - vim.lsp.codelens.refresh(opts) - vim.api.nvim_create_autocmd({ 'CursorHold', 'InsertLeave' }, { - buffer = ev.buf, - callback = function() - vim.lsp.codelens.refresh(opts) - end, - }) - end + require 'lsp' (client, ev.buf) end, }) @@ -214,5 +119,6 @@ vim.lsp.enable { "cssls", "jsonls", "ruff", - -- "pyright", + "marksman", + "pyright", } diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua new file mode 100644 index 0000000..4b5fe02 --- /dev/null +++ b/.config/nvim/lua/lsp.lua @@ -0,0 +1,114 @@ +---LSP OnAttach +---@param client vim.lsp.Client +---@param buf integer +function Lsp(client, buf) + vim.keymap.set('n', '<leader>f', function() + vim.lsp.buf.format { async = true } + end, { buffer = buf }) + + vim.api.nvim_buf_create_user_command(buf, "Format", function(args) + local range = nil + if args.count ~= -1 then + local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] + range = { + start = { args.line1, 0 }, + ["end"] = { args.line2, end_line:len() }, + } + end + vim.lsp.buf.format { async = true, range = range, bufnr = buf } + end, { range = true }) + + vim.keymap.set('n', '<leader>wa', function() + vim.lsp.buf.add_workspace_folder() + end, { buffer = buf }) + + vim.keymap.set('n', '<leader>wr', function() + vim.lsp.buf.remove_workspace_folder() + end, { buffer = buf }) + + vim.keymap.set('n', '<leader>wl', function() + local dir = vim.lsp.buf.list_workspace_folders() + vim.ui.select(dir, { + prompt = 'Workspace Dir: ', + }, function(result) + if result then + vim.api.nvim_set_current_dir(result) + end + end) + end, { buffer = buf }) + + vim.api.nvim_buf_create_user_command(buf, "Symbols", function(args) + if args.args == "" + then + vim.lsp.buf.workspace_symbol() + else + vim.lsp.buf.workspace_symbol(args.args) + end + end, { nargs = "?" }) + + + if client:supports_method('textDocument/inlayHint') then + vim.lsp.inlay_hint.enable() + + vim.keymap.set('n', '<leader>ih', function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) + end, { buffer = buf }) + end + + if client:supports_method('textDocument/completion') then + local chars = {} + for i = 32, 126 do + table.insert(chars, string.char(i)) + end + client.server_capabilities.completionProvider.triggerCharacters = chars + vim.lsp.completion.enable(true, client.id, buf, { autotrigger = true }) + end + + if client:supports_method('textDocument/documentHighlight') then + local highlight_augroup = vim.api.nvim_create_augroup('lsp-highlight', + { clear = false }) + vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { + buffer = buf, + group = highlight_augroup, + callback = vim.lsp.buf.document_highlight, + }) + + vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { + buffer = buf, + group = highlight_augroup, + callback = vim.lsp.buf.clear_references, + }) + + vim.api.nvim_create_autocmd('LspDetach', { + callback = function(event) + vim.lsp.buf.clear_references() + vim.api.nvim_clear_autocmds { + group = highlight_augroup, + buffer = event.buf + } + end, + }) + end + + if client:supports_method('textDocument/foldingRange') then + local win = vim.api.nvim_get_current_win() + + vim.wo[win][0].foldmethod = "expr" + vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' + end + + if client:supports_method('textDocument/codelens') then + vim.keymap.set({ 'n', 'v' }, 'grl', function() + vim.lsp.codelens.run() + end, { buffer = buf }) + vim.lsp.codelens.refresh { bufnr = buf } + vim.api.nvim_create_autocmd({ 'CursorHold', 'InsertLeave' }, { + buffer = buf, + callback = function() + vim.lsp.codelens.refresh { bufnr = buf } + end, + }) + end +end + +return Lsp diff --git a/.gitmodules b/.gitmodules index d4277e3..e1fb32f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,24 +1,14 @@ [submodule "nvim-treesitter"] path = .local/share/nvim/site/pack/plugins/start/nvim-treesitter url = https://github.com/nvim-treesitter/nvim-treesitter.git -[submodule "clang_extensions.nvim"] - path = .local/share/nvim/site/pack/plugins/start/clang_extensions - url = https://github.com/p00f/clangd_extensions.nvim -[submodule "lazydev.nvim"] - path = .local/share/nvim/site/pack/plugins/start/lazydev.nvim - url = https://github.com/folke/lazydev.nvim -[submodule "rustaceanvim"] - path = .local/share/nvim/site/pack/plugins/start/rustaceanvim - url = https://github.com/mrcjkb/rustaceanvim -[submodule "conform"] - path = .local/share/nvim/site/pack/plugins/start/conform - url = https://github.com/stevearc/conform.nvim + branch = main [submodule "mason"] path = .local/share/nvim/site/pack/plugins/start/mason url = https://github.com/williamboman/mason.nvim -[submodule "zsh-completions"] - path = .zfunc/zsh-completions - url = https://github.com/zsh-users/zsh-completions.git [submodule "nvim-lspconfig"] path = .local/share/nvim/site/pack/plugins/start/nvim-lspconfig url = https://github.com/neovim/nvim-lspconfig +[submodule "zsh-completions"] + path = .zfunc/zsh-completions + url = https://github.com/zsh-users/zsh-completions.git + diff --git a/.local/share/nvim/site/pack/plugins/start/conform b/.local/share/nvim/site/pack/plugins/start/conform deleted file mode 160000 -Subproject 8132ec733eed3bf415b97b76797ca41b59f51d7 diff --git a/.local/share/nvim/site/pack/plugins/start/nvim-lspconfig b/.local/share/nvim/site/pack/plugins/start/nvim-lspconfig -Subproject 77d3fdfb3554632c7a3b101ded643d422de7626 +Subproject 7fac9025a967a4d0846660f751cd392fac6bb78 diff --git a/.local/share/nvim/site/pack/plugins/start/nvim-treesitter b/.local/share/nvim/site/pack/plugins/start/nvim-treesitter -Subproject 42fc28ba918343ebfd5565147a42a2658057948 +Subproject 4400990e7362e2769bb1ff96895f623deb0380f diff --git a/.zfunc/zsh-completions b/.zfunc/zsh-completions -Subproject c29efd0bc3927ab25dc93ad4085d7143881b73f +Subproject e07f6fb780725e9c0f50a7666700cf91ded3022 |