Correct LSP setup + DAP + ...

This commit is contained in:
Loïc Gremaud 2024-08-09 22:31:53 +02:00
parent 0066e28c8f
commit 6fa41890ab
Signed by: Legrems
GPG Key ID: D4620E6DF3E0121D
8 changed files with 600 additions and 170 deletions

View File

@ -35,10 +35,18 @@ M.ui = {
-- default/round/block/arrow separators work only for default statusline theme
-- round and block will work for minimal theme only
separator_style = "default",
overriden_modules = nil,
overriden_modules = function(modules)
modules[1] = (function()
local noice = require("noice")
if noice.api.statusline.mode.has() then
return "%#St_CommandMode#" .. noice.api.statusline.mode.get() .. modules[1]
end
return modules[1]
end)()
end,
fileInfo = function()
return require("nvchad_ui.statusline.default.fileInfo").run()
end
end,
},
-- lazyload it when there are 1+ buffers

View File

@ -59,19 +59,19 @@ M.general = {
-- ["<leader>y"] = {"<cmd> :w! /tmp/vimtmp<CR>", "Save into a global tmp file"},
-- ["<leader>p"] = {"<cmd> :r! cat /tmp/vimtmp<CR>", "Restore from the global tmp file"},
["<leader>dgg"] = {":lua require('dap').continue() <CR>", "Continue debu[g]ging"},
["<leader>dg<CR>"] = {":lua require('dapui').toggle() <CR>", "Toggle DAP ui"},
["<leader>dgw"] = {":lua require('dapui').eval() <CR>", "Open floating windows about current [w]ord"},
["<leader>dgb"] = {":lua require('dap').toggle_breakpoint() <CR>", "Toggle [b]reakpoint"},
["<leader>dgf"] = {":lua require('dap-python').test_method() <CR>", "Debug [f]unction"},
["<leader>dgo"] = {":lua require('dap').step_over() <CR>", "DAP step [o]ver method"},
["<leader>dgt"] = {":lua require('dap').step_into() <CR>", "DAP step in[t]o method"},
["<leader>dgp"] = {":lua require('dap').step_back() <CR>", "DAP step back ([p]revious)"},
["<leader>dgg"] = { ":lua require('dap').continue() <CR>", "Continue debu[g]ging" },
["<leader>dg<CR>"] = { ":lua require('dapui').toggle() <CR>", "Toggle DAP ui" },
["<leader>dgw"] = { ":lua require('dapui').eval() <CR>", "Open floating windows about current [w]ord" },
["<leader>dgb"] = { ":lua require('dap').toggle_breakpoint() <CR>", "Toggle [b]reakpoint" },
["<leader>dgf"] = { ":lua require('dap-python').test_method() <CR>", "Debug [f]unction" },
["<leader>dgo"] = { ":lua require('dap').step_over() <CR>", "DAP step [o]ver method" },
["<leader>dgt"] = { ":lua require('dap').step_into() <CR>", "DAP step in[t]o method" },
["<leader>dgp"] = { ":lua require('dap').step_back() <CR>", "DAP step back ([p]revious)" },
["<leader>dgs"] = {
function()
local widgets = require("dap.ui.widgets")
local widgets = require "dap.ui.widgets"
local sidebar = widgets.sidebar(widgets.scopes)
sidebar.open({widgth = '50%'})
sidebar.open { widgth = "50%" }
end,
"DAP Show debugged [s]copes",
},
@ -98,8 +98,8 @@ M.general = {
["<"] = { "<gv", "Indent line" },
[">"] = { ">gv", "Indent line" },
["<leader>dgd"] = {":lua require('dap-python').debug_selection()", "DAP debug selection"},
["<leader>dgw"] = {":lua require('dap-python').eval()", "DAP eval selection"},
["<leader>dgd"] = { ":lua require('dap-python').debug_selection()", "DAP debug selection" },
["<leader>dgw"] = { ":lua require('dap-python').eval()", "DAP eval selection" },
},
x = {
@ -150,7 +150,10 @@ M.customstuffs = {
-- "trim(system('git branch --show-current 2>/dev/null'))"
-- ["<leader>ct"] = { ":call append(line('.') - 1, repeat(' ', indent('.')) . '# TODO-' . trim(system('git branch --show-current 2>/dev/null')) . ': ' . input('Comment >'))<CR>", "Add TODO comment + add to qflist" },
["<leader>ct"] = { ":call append(line('.') - 1, repeat(' ', indent('.')) . '# TODO: ' . input('Comment >'))<CR>", "Add TODO comment + add to qflist" },
["<leader>ct"] = {
":call append(line('.') - 1, repeat(' ', indent('.')) . '# TODO: ' . input('Comment >'))<CR>",
"Add TODO comment + add to qflist",
},
["<leader>ww"] = { ":lua require('nvim-window').pick()<CR>", "Pick window to goto" },
["<leader>wm"] = { ":WinShift<CR>", "Enter move window mode" },
@ -169,29 +172,28 @@ M.customstuffs = {
["glO"] = { ":lua require('gitlab').create_mr()<CR>", "Gitlab: create MR" },
["glaa"] = { ":lua require('gitlab').add_assignee()<CR>", "Gitlab: add_assignee" },
-- vim.keymap.set("n", "glb", gitlab.choose_merge_request)
-- vim.keymap.set("n", "glr", gitlab.review)
-- vim.keymap.set("n", "gls", gitlab.summary)
-- vim.keymap.set("n", "glA", gitlab.approve)
-- vim.keymap.set("n", "glR", gitlab.revoke)
-- vim.keymap.set("n", "glc", gitlab.create_comment)
-- vim.keymap.set("v", "glc", gitlab.create_multiline_comment)
-- vim.keymap.set("v", "glC", gitlab.create_comment_suggestion)
-- vim.keymap.set("n", "glO", gitlab.create_mr)
-- vim.keymap.set("n", "glm", gitlab.move_to_discussion_tree_from_diagnostic)
-- vim.keymap.set("n", "gln", gitlab.create_note)
-- vim.keymap.set("n", "gld", gitlab.toggle_discussions)
-- vim.keymap.set("n", "glaa", gitlab.add_assignee)
-- vim.keymap.set("n", "glad", gitlab.delete_assignee)
-- vim.keymap.set("n", "glla", gitlab.add_label)
-- vim.keymap.set("n", "glld", gitlab.delete_label)
-- vim.keymap.set("n", "glra", gitlab.add_reviewer)
-- vim.keymap.set("n", "glrd", gitlab.delete_reviewer)
-- vim.keymap.set("n", "glp", gitlab.pipeline)
-- vim.keymap.set("n", "glM", gitlab.merge)
-- vim.keymap.set("n", "glu", gitlab.copy_mr_url)
-- vim.keymap.set("n", "glP", gitlab.publish_all_drafts)
-- vim.keymap.set("n", "glb", gitlab.choose_merge_request)
-- vim.keymap.set("n", "glr", gitlab.review)
-- vim.keymap.set("n", "gls", gitlab.summary)
-- vim.keymap.set("n", "glA", gitlab.approve)
-- vim.keymap.set("n", "glR", gitlab.revoke)
-- vim.keymap.set("n", "glc", gitlab.create_comment)
-- vim.keymap.set("v", "glc", gitlab.create_multiline_comment)
-- vim.keymap.set("v", "glC", gitlab.create_comment_suggestion)
-- vim.keymap.set("n", "glO", gitlab.create_mr)
-- vim.keymap.set("n", "glm", gitlab.move_to_discussion_tree_from_diagnostic)
-- vim.keymap.set("n", "gln", gitlab.create_note)
-- vim.keymap.set("n", "gld", gitlab.toggle_discussions)
-- vim.keymap.set("n", "glaa", gitlab.add_assignee)
-- vim.keymap.set("n", "glad", gitlab.delete_assignee)
-- vim.keymap.set("n", "glla", gitlab.add_label)
-- vim.keymap.set("n", "glld", gitlab.delete_label)
-- vim.keymap.set("n", "glra", gitlab.add_reviewer)
-- vim.keymap.set("n", "glrd", gitlab.delete_reviewer)
-- vim.keymap.set("n", "glp", gitlab.pipeline)
-- vim.keymap.set("n", "glM", gitlab.merge)
-- vim.keymap.set("n", "glu", gitlab.copy_mr_url)
-- vim.keymap.set("n", "glP", gitlab.publish_all_drafts)
},
v = {
["n"] = { "nzz", "Next + auto center" },
@ -402,26 +404,50 @@ M.telescope = {
n = {
-- Resume
["<a-f>"] = { "<cmd> Telescope resume <CR>", "Resume" },
["<a-k>"] = { "<cmd> Telescope keymaps <CR>", "Show (and search) all [k]eymaps" },
-- find
["<C-g>"] = { "<cmd> Telescope find_files <CR>", "Find files" },
["<C-x>"] = { "<cmd> Telescope find_files follow=true no_ignore=true hidden=true <CR>", "Find all" },
["<C-f>"] = { "<cmd> Telescope live_grep <CR>", "Live grep" },
["<C-b>"] = { "<cmd> Telescope buffers <CR>", "Find buffers" },
["<leader>ff"] = { "<cmd> lua require('telescope.builtin').live_grep({default_text='<<<<<<< HEAD'}) <CR>", "Search for git conflicts" },
["<leader>ff"] = {
"<cmd> lua require('telescope.builtin').live_grep({default_text='<<<<<<< HEAD'}) <CR>",
"Search for git conflicts",
},
["<leader>fg<CR>"] = { "<cmd> lua require('telescope.builtin').live_grep({}) <CR>", "Live grep" },
["<leader>fg/"] = { "<cmd> lua require('telescope.builtin').live_grep({default_text=vim.fn.getreg('/')}) <CR>", "Live grep with search term" },
["<leader>fgw"] = { "<cmd> lua require('telescope.builtin').live_grep({default_text=vim.fn.expand('<cword>')}) <CR>", "Live grep with current word" },
["<leader>fg/"] = {
"<cmd> lua require('telescope.builtin').live_grep({default_text=vim.fn.getreg('/')}) <CR>",
"Live grep with search term",
},
["<leader>fgw"] = {
"<cmd> lua require('telescope.builtin').live_grep({default_text=vim.fn.expand('<cword>')}) <CR>",
"Live grep with current word",
},
["<leader>gf<CR>"] = { "<cmd> lua require('telescope.builtin').find_files({}) <CR>", "Find files" },
["<leader>gf/"] = { "<cmd> lua require('telescope.builtin').find_files({default_text=vim.fn.getreg('/')}) <CR>", "Find files with search term" },
["<leader>gfw"] = { "<cmd> lua require('telescope.builtin').find_files({default_text=vim.fn.expand('<cword>')}) <CR>", "Find files with current word" },
["<leader>gf/"] = {
"<cmd> lua require('telescope.builtin').find_files({default_text=vim.fn.getreg('/')}) <CR>",
"Find files with search term",
},
["<leader>gfw"] = {
"<cmd> lua require('telescope.builtin').find_files({default_text=vim.fn.expand('<cword>')}) <CR>",
"Find files with current word",
},
["<leader>br<CR>"] = { ":execute '%s/' . input('Search term >') . '/' . input('Replace by >', '') . '/g | update' <CR>", "Replace pattern in current buffer" },
["<leader>br/"] = { ":execute '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >', '') . '/g | update' <CR>", "Replace search term pattern in current buffer" },
["<leader>brw"] = { ":execute '%s/' . input('Search term >', expand('<cword>')) . '/' . input('Replace by >', '') . '/g | update' <CR>", "Replace current word pattern in current buffer" },
["<leader>br<CR>"] = {
":execute '%s/' . input('Search term >') . '/' . input('Replace by >', '') . '/g | update' <CR>",
"Replace pattern in current buffer",
},
["<leader>br/"] = {
":execute '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >', '') . '/g | update' <CR>",
"Replace search term pattern in current buffer",
},
["<leader>brw"] = {
":execute '%s/' . input('Search term >', expand('<cword>')) . '/' . input('Replace by >', '') . '/g | update' <CR>",
"Replace current word pattern in current buffer",
},
-- Quickfix list
["<leader>ql"] = { "<cmd> Telescope quickfix <CR>", "Show qflist" },
@ -432,14 +458,32 @@ M.telescope = {
["<leader>qc"] = { ":call setqflist([]) | cclose<CR>", "Clear qflist" },
-- Quickfix replace all
["<leader>qr<CR>"] = { ":execute 'cfdo' '%s/' . input('Search term >') . '/' . input('Replace by >') . '/gI | update' <CR>", "Replace pattern in all qflist" },
["<leader>qr/"] = { ":execute 'cfdo' '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >') . '/gI | update' <CR>", "Replace search term in all qflist" },
["<leader>qrw"] = { ":execute 'cfdo' '%s/' . input('Search term >', expand('<cword>')) . '/' . input('Replace by >') . '/gI | update' <CR>", "Replace current word in all qflist" },
["<leader>qr<CR>"] = {
":execute 'cfdo' '%s/' . input('Search term >') . '/' . input('Replace by >') . '/gI | update' <CR>",
"Replace pattern in all qflist",
},
["<leader>qr/"] = {
":execute 'cfdo' '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >') . '/gI | update' <CR>",
"Replace search term in all qflist",
},
["<leader>qrw"] = {
":execute 'cfdo' '%s/' . input('Search term >', expand('<cword>')) . '/' . input('Replace by >') . '/gI | update' <CR>",
"Replace current word in all qflist",
},
-- Quickfix "search"
["<leader>qs<CR>"] = { ":execute 'vimgrep' '/' . input('Pattern >') . '\\C/' '**/*' <CR>", "Add <> files in qflist" },
["<leader>qs/"] = { ":execute 'vimgrep' '/' . input('Pattern >', getreg('/')) . '\\C/' '**/*' <CR>", "Add search term files in qflist" },
["<leader>qsw"] = { ":execute 'vimgrep' '/' . input('Pattern >', expand('<cword>')) . '\\C/' '**/*' <CR>", "Add current word files in qflist" },
["<leader>qs<CR>"] = {
":execute 'vimgrep' '/' . input('Pattern >') . '\\C/' '**/*' <CR>",
"Add <> files in qflist",
},
["<leader>qs/"] = {
":execute 'vimgrep' '/' . input('Pattern >', getreg('/')) . '\\C/' '**/*' <CR>",
"Add search term files in qflist",
},
["<leader>qsw"] = {
":execute 'vimgrep' '/' . input('Pattern >', expand('<cword>')) . '\\C/' '**/*' <CR>",
"Add current word files in qflist",
},
-- Loclist list
["<leader>ll"] = { "<cmd> Telescope loclist <CR>", "Show loclist" },
@ -452,8 +496,14 @@ M.telescope = {
["<leader>fh"] = { "<cmd> Telescope help_tags <CR>", "Help page" },
["<leader>fo"] = { "<cmd> Telescope oldfiles <CR>", "Find oldfiles" },
["<leader>fx<CR>"] = { "<cmd> Telescope current_buffer_fuzzy_find <CR>", "Find in current buffer" },
["<leader>fx/"] = { "<cmd> lua require('telescope.builtin').current_buffer_fuzzy_find({default_text=vim.fn.getreg('/')}) <CR>", "Fuzzy find in current buffer with actual search" },
["<leader>fxw"] = { "<cmd> lua require('telescope.builtin').current_buffer_fuzzy_find({default_text=vim.fn.expand('<cword>')}) <CR>", "Fuzzy find in current buffer with current word" },
["<leader>fx/"] = {
"<cmd> lua require('telescope.builtin').current_buffer_fuzzy_find({default_text=vim.fn.getreg('/')}) <CR>",
"Fuzzy find in current buffer with actual search",
},
["<leader>fxw"] = {
"<cmd> lua require('telescope.builtin').current_buffer_fuzzy_find({default_text=vim.fn.expand('<cword>')}) <CR>",
"Fuzzy find in current buffer with current word",
},
["<leader>wl"] = { "<cmd> Telescope workspaces <CR>", "Find workspaces" },
@ -482,8 +532,14 @@ M.telescope = {
["<leader>/"] = { "<cmd> Telescope search_history <CR>", "telescope search history" },
-- Diaglist: LSP diagnostics in quick/loc list
["<leader>dw"] = { "<cmd>lua require('diaglist').open_all_diagnostics()<CR>", "Open all open buffers diagnostics in qflist" },
["<leader>d0"] = { "<cmd>lua require('diaglist').open_buffer_diagnostics()<CR>", "Open current buffer diagnostics in loclist" },
["<leader>dw"] = {
"<cmd>lua require('diaglist').open_all_diagnostics()<CR>",
"Open all open buffers diagnostics in qflist",
},
["<leader>d0"] = {
"<cmd>lua require('diaglist').open_buffer_diagnostics()<CR>",
"Open current buffer diagnostics in loclist",
},
["<leader>;"] = { "<cmd> Telescope <CR>", "Open Telescope" },
},
@ -664,14 +720,14 @@ M.gitsigns = {
local all_modes = {
-- Override all delete/yank/paste to use the registers M by default
["y"] = { "\"my", "Yank", { remap=false } },
["p"] = { "\"mp", "Paste", { remap=false } },
["d"] = { "\"md", "Delete", { remap=false } },
["y"] = { '"my', "Yank", { remap = false } },
["p"] = { '"mp', "Paste", { remap = false } },
["d"] = { '"md', "Delete", { remap = false } },
["<leader>y"] = { "\"+y", "Yank into system register", { remap=false } },
["<leader>p"] = { "\"+p", "Paste from system register", { remap=false } },
["<leader>y"] = { '"+y', "Yank into system register", { remap = false } },
["<leader>p"] = { '"+p', "Paste from system register", { remap = false } },
}
M.general[{"n", "v"}] = all_modes
M.general[{ "n", "v" }] = all_modes
return M

View File

@ -4,6 +4,7 @@ local capabilities = require("plugins.configs.lspconfig").capabilities
local lspconfig = require "lspconfig"
-- if you just want default config for the servers then put them in a table
-- local servers = { "html", "cssls", "tsserver", "clangd", "salt_ls", "pyright", "jedi_language_server" }
local servers = { "html", "cssls", "tsserver", "clangd", "salt_ls" }
for _, lsp in ipairs(servers) do
@ -12,6 +13,3 @@ for _, lsp in ipairs(servers) do
capabilities = capabilities,
}
end
--
-- lspconfig.pyright.setup { blabla}

View File

@ -1,5 +1,8 @@
local present, null_ls = pcall(require, "null-ls")
if true then
return
end
if not present then
return
end
@ -9,8 +12,8 @@ local b = null_ls.builtins
local sources = {
-- webdev stuff
b.formatting.deno_fmt, -- choosed deno for ts/js files cuz its very fast!
b.formatting.prettier.with { filetypes = { "html", "markdown", "css" } }, -- so prettier works only on these filetypes
b.formatting.deno_fmt, -- choosed deno for ts/js files cuz its very fast!
b.formatting.prettier.with { filetypes = { "html", "markdown", "css", "js" }, extra_args = { "--tab-width 4" } }, -- so prettier works only on these filetypes
-- Lua
b.formatting.stylua,

View File

@ -40,6 +40,8 @@ M.capabilities.textDocument.completion.completionItem = {
},
}
M.capabilities.textDocument.publishDiagnostics.tagSupport.valueSet = { 2 }
require("lspconfig").lua_ls.setup {
on_init = M.on_init,
on_attach = M.on_attach,
@ -64,4 +66,80 @@ require("lspconfig").lua_ls.setup {
},
}
-- local capabilities = vim.lsp.protocol.make_client_capabilities()
-- capabilities.textDocument.publishDiagnostics.tagSupport.valueSet = { 2 }
require("lspconfig").pyright.setup {
on_init = M.on_init,
on_attach = M.on_attach,
capabilities = M.capabilities,
settings = {
pyright = {
-- Options available here: https://github.com/microsoft/pyright/blob/main/docs/settings.md
disableOrganizeImports = true, -- Using Ruff
-- disableLanguageServices = true, -- Using Ruff
},
python = {
analysis = {
-- ignore = { "*" }, -- Using Ruff
-- typeCheckingMode = "off", -- Using mypy
diagnosticSeverityOverrides = {
reportMissingImports = false,
},
},
},
},
}
-- -- This can be used for removing message based on regex etc. For now, all those message are disabled by the tagSupport.valueSet
-- local function filter(arr, func)
-- -- Filter in place
-- -- https://stackoverflow.com/questions/49709998/how-to-filter-a-lua-array-inplace
-- local new_index = 1
-- local size_orig = #arr
-- for old_index, v in ipairs(arr) do
-- if func(v, old_index) then
-- arr[new_index] = v
-- new_index = new_index + 1
-- end
-- end
-- for i = new_index, size_orig do
-- arr[i] = nil
-- end
-- end
--
-- local function filter_diagnostics(diagnostic)
-- -- Only filter out Pyright stuff for now
-- if diagnostic.source ~= "Pyright" then
-- return true
-- end
--
-- -- Allow kwargs to be unused, sometimes you want many functions to take the
-- -- same arguments but you don't use all the arguments in all the functions,
-- -- so kwargs is used to suck up all the extras
-- if diagnostic.message == '"kwargs" is not accessed' then
-- return false
-- end
--
-- -- Allow variables starting with an underscore
-- if string.match(diagnostic.message, '"_.+" is not accessed') then
-- return false
-- end
--
-- -- For now, remove all not accessed message. I will still have assigned but not accessed message!
-- if string.match(diagnostic.message, '".+" is not accessed') then
-- return false
-- end
--
-- return true
-- end
--
-- local function custom_on_publish_diagnostics(a, params, client_id, c)
-- filter(params.diagnostics, filter_diagnostics)
-- vim.lsp.diagnostic.on_publish_diagnostics(a, params, client_id, c)
-- end
--
-- vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(custom_on_publish_diagnostics, {})
return M

View File

@ -1,47 +1,48 @@
-- See: https://github.com/neovim/nvim-lspconfig/tree/54eb2a070a4f389b1be0f98070f81d23e2b1a715#suggested-configuration
local opts = { noremap=true, silent=true }
vim.keymap.set('n', '<space>k', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
local opts = { noremap = true, silent = true }
vim.keymap.set("n", "<space>k", vim.diagnostic.open_float, opts)
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
-- vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
-- Enable completion triggered by <c-x><c-o>
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
-- Mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local bufopts = { noremap=true, silent=true, buffer=bufnr }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
local bufopts = { noremap = true, silent = true, buffer = bufnr }
-- vim.keymap.set("n", "gD", vim.lsp.buf.declaration, bufopts)
-- vim.keymap.set("n", "gd", vim.lsp.buf.definition, bufopts)
-- vim.keymap.set("n", "K", vim.lsp.buf.hover, bufopts)
-- vim.keymap.set("n", "gi", vim.lsp.buf.implementation, bufopts)
-- vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
vim.keymap.set('n', '<space>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, bufopts)
-- vim.keymap.set("n", "<space>wa", vim.lsp.buf.add_workspace_folder, bufopts)
-- vim.keymap.set("n", "<space>wr", vim.lsp.buf.remove_workspace_folder, bufopts)
-- vim.keymap.set("n", "<space>wl", function()
-- print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
-- end, bufopts)
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, bufopts)
-- vim.keymap.set("n", "<space>D", vim.lsp.buf.type_definition, bufopts)
-- vim.keymap.set("n", "<space>rn", vim.lsp.buf.rename, bufopts)
vim.keymap.set("n", "<space>ca", vim.lsp.buf.code_action, bufopts)
-- vim.keymap.set("n", "gr", vim.lsp.buf.references, bufopts)
-- vim.keymap.set("n", "<space>f", function()
-- vim.lsp.buf.format { async = true }
-- end, bufopts)
end
-- Configure `ruff-lsp`.
-- See: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#ruff_lsp
-- For the default config, along with instructions on how to customize the settings
require('lspconfig').ruff_lsp.setup {
require("lspconfig").ruff_lsp.setup {
on_attach = on_attach,
init_options = {
settings = {
-- Any extra CLI arguments for `ruff` go here.
args = {"--ignore", "E741"},
}
}
args = { "--ignore", "E741" },
},
},
}

View File

@ -1,7 +1,20 @@
local custom_actions = {}
local actions = require("telescope.actions")
local lga_actions = require("telescope-live-grep-args.actions")
local action_state = require("telescope.actions.state")
local from_entry = require("telescope.from_entry")
local scan = require("plenary.scandir")
local pickers = require("telescope.pickers")
local finders = require("telescope.finders")
local make_entry = require("telescope.make_entry")
local action_set = require 'telescope.actions.set'
local conf = require('telescope.config').values
local builtin = require("telescope.builtin")
-- Usefull:
-- [[
-- https://github.com/JoosepAlviste/dotfiles/blob/master/config/nvim/lua/j/telescope_custom_pickers.lua
-- ]]
local entry_to_qf = function(entry)
@ -91,6 +104,122 @@ function custom_actions.multi_selection_vtab(prompt_bufnr)
return custom_actions._multiopen(prompt_bufnr, "tabe", "tabe", "a", "loclist")
end
function custom_actions.set_extension(prompt_bufnr)
local current_input = action_state.get_current_line()
vim.ui.input({ prompt = 'Search in extension: *.' }, function(input)
if input == nil then
return
end
-- Close and reopen a prompt with the same input
actions.close(prompt_bufnr)
builtin.live_grep({ default_text = current_input, type_filter = input })
end)
end
function custom_actions.to_live_grep_args(prompt_bufnr)
local current_input = action_state.get_current_line()
-- Close and reopen a prompt with live_grep_args
actions.close(prompt_bufnr)
require("telescope").extensions.live_grep_args.live_grep_args({ default_text = current_input })
end
function custom_actions.set_folders(prompt_bufnr)
local current_input = action_state.get_current_line()
local data = {}
scan.scan_dir(vim.loop.cwd(), {
hidden = true,
only_dirs = true,
respect_gitignore = true,
on_insert = function(entry)
table.insert(data, entry .. "/")
end,
})
table.insert(data, 1, "./")
actions.close(prompt_bufnr)
-- Create a new picker with Telescope to select folders we want to filter in
pickers.new({
prompt_title = 'Select folders for current ("' .. current_input .. '") search',
finder = finders.new_table { results = data, entry_maker = make_entry.gen_from_file {} },
previewer = conf.file_previewer {},
sorter = conf.file_sorter {},
attach_mappings = function(prompt_bufnr2)
action_set.select:replace(function()
local current_picker = action_state.get_current_picker(prompt_bufnr2)
local dirs = {}
local selections = current_picker:get_multi_selection()
if vim.tbl_isempty(selections) then
table.insert(dirs, action_state.get_selected_entry().value)
else
for _, selection in ipairs(selections) do
table.insert(dirs, selection.value)
end
end
actions.close(prompt_bufnr2)
builtin.live_grep({ default_text = current_input, search_dirs = dirs })
end)
return true
end,
}):find()
end
function custom_actions.set_files(prompt_bufnr)
local current_input = action_state.get_current_line()
local find_command = {"rg", "--files", "--color=never", "--no-heading"}
actions.close(prompt_bufnr)
if current_input ~= "" then
find_command = {"rg", "--color=never", "--no-heading", "-l", current_input}
end
local opts = {
entry_maker = make_entry.gen_from_file(),
find_command = find_command,
}
print(vim.inspect(find_command))
-- Create a new picker with Telescope to select files we want to filter in
pickers
.new(opts, {
prompt_title = 'Select files for current ("' .. current_input .. '") search',
__locations_input = true,
finder = finders.new_oneshot_job(find_command, opts),
previewer = conf.grep_previewer(opts),
sorter = conf.file_sorter(opts),
attach_mappings = function(prompt_bufnr2)
actions.select_default:replace(function()
local current_picker = action_state.get_current_picker(prompt_bufnr2)
local files = {}
local selections = current_picker:get_multi_selection()
if vim.tbl_isempty(selections) then
local entry = action_state.get_selected_entry()
table.insert(files, entry.value)
else
for _, selection in ipairs(selections) do
table.insert(files, selection.value)
end
end
-- Close the preview picker and select a new one, restricted to the files selected
actions.close(prompt_bufnr2)
builtin.live_grep({ default_text = current_input, search_dirs = files })
end)
return true
end,
})
:find()
end
local options = {
defaults = {
vimgrep_arguments = {
@ -157,12 +286,18 @@ local options = {
find_files = {
mappings = {
i = {
-- Fuzzy refine ("Freeze the current list and start a fuzzy search in the frozen list")
["<C-i>"] = actions.to_fuzzy_refine,
-- Send to qflist or loclist
["<C-l>"] = actions.smart_send_to_loclist,
["<C-Space>"] = actions.smart_send_to_qflist,
-- Multi selection open
["<CR>"] = custom_actions.multi_selection_open,
["<C-v>"] = custom_actions.multi_selection_vsplit,
["<C-X>"] = custom_actions.multi_selection_split,
["<C-T>"] = custom_actions.multi_selection_tab,
["<C-Space>"] = actions.smart_send_to_qflist,
["<C-L>"] = actions.smart_send_to_loclist,
},
n = i,
}
@ -170,21 +305,49 @@ local options = {
live_grep = {
mappings = {
i = {
-- Fuzzy refine ("Freeze the current list and start a fuzzy search in the frozen list")
["<C-i>"] = actions.to_fuzzy_refine,
-- Send to qflist or loclist
["<C-l>"] = actions.smart_send_to_loclist,
["<C-Space>"] = actions.smart_send_to_qflist,
["<C-L>"] = actions.smart_send_to_loclist,
-- To quote prompt -> Pass to live_grep_args
["<C-k>"] = custom_actions.to_live_grep_args,
-- Search for files/folder/extensions
["<C-f>"] = custom_actions.set_files,
["<C-g>"] = custom_actions.set_folders,
["<C-e>"] = custom_actions.set_extension,
},
n = i,
}
}
},
extensions_list = { "themes", "terms", "fzf", "macrothis" },
extensions_list = { "themes", "terms", "fzf", "macrothis", "live_grep_args" },
extensions = {
fzf = {
fuzzy = true,
override_generic_sorter = true,
override_file_sorter = true,
case_mode = "smart_case",
},
live_grep_args = {
auto_quoting = true,
mappings = {
i = {
-- Fuzzy refine ("Freeze the current list and start a fuzzy search in the frozen list")
["<C-i>"] = actions.to_fuzzy_refine,
-- Send to qflist or loclist
["<C-l>"] = actions.smart_send_to_loclist,
["<C-Space>"] = actions.smart_send_to_qflist,
-- Quote prompt, for passing parameters to vimgrep
["<C-k>"] = lga_actions.quote_prompt(),
},
}
}
}
}

View File

@ -13,60 +13,62 @@ local default_plugins = {
end,
ft = { "markdown" },
},
{"tpope/vim-fugitive", lazy=false},
{"rbong/vim-flog", lazy=false},
{"tpope/vim-surround", lazy=false},
{"tpope/vim-obsession", lazy=false},
{"preservim/tagbar", lazy=false},
{"ludovicchabant/vim-gutentags", lazy=false},
{"emaniacs/vim-rest-console", lazy=false},
{"git@github.com:mfussenegger/nvim-dap.git", lazy=false},
{ "tpope/vim-fugitive", lazy = false },
{ "rbong/vim-flog", lazy = false },
{ "tpope/vim-surround", lazy = false },
{ "tpope/vim-obsession", lazy = false },
{ "preservim/tagbar", lazy = false },
{ "ludovicchabant/vim-gutentags", lazy = false },
{ "emaniacs/vim-rest-console", lazy = false },
{ "mfussenegger/nvim-dap", lazy = false },
{
"git@github.com:rcarriga/nvim-dap-ui",
"rcarriga/nvim-dap-ui",
dependencies = {
"mfussenegger/nvim-dap",
"nvim-neotest/nvim-nio"
"nvim-neotest/nvim-nio",
},
lazy=false,
lazy = false,
},
{
"git@github.com:mfussenegger/nvim-dap-python.git",
"mfussenegger/nvim-dap-python",
dependencies = {
"mfussenegger/nvim-dap",
"rcarriga/nvim-dap-ui",
},
lazy=false,
lazy = false,
init = function()
require("dap-python").setup("python")
require("dap-python").setup "python"
-- Setup nvim-dap-ui also
require("dapui").setup()
end,
config = function(_, opts)
local dap = require('dap')
vim.api.nvim_set_hl(0, "dark-orange", { bg="#402c16"})
vim.fn.sign_define('DapBreakpoint', {text='🛑', texthl='', linehl='', numhl=''})
vim.fn.sign_define('DapStopped', {text='', texthl='', linehl='dark-orange', numhl=''})
dap.defaults.fallback.terminal_win_cmd = 'tabnew'
config = function(_, _)
local dap = require "dap"
vim.api.nvim_set_hl(0, "dark-orange", { bg = "#402c16" })
vim.fn.sign_define("DapBreakpoint", { text = "🛑", texthl = "", linehl = "", numhl = "" })
vim.fn.sign_define("DapStopped", { text = "", texthl = "", linehl = "dark-orange", numhl = "" })
dap.defaults.fallback.terminal_win_cmd = "tabnew"
dap.defaults.fallback.focus_terminal = true
end,
},
{
"Weissle/persistent-breakpoints.nvim",
lazy=false,
config = function(_, opts)
require('persistent-breakpoints').setup{
load_breakpoints_event = { "BufReadPost" }
lazy = false,
config = function(_, _)
require("persistent-breakpoints").setup {
load_breakpoints_event = { "BufReadPost" },
}
end,
},
{"nvim-telescope/telescope-dap.nvim", lazy=false},
{"harrisoncramer/gitlab.nvim",
{ "nvim-telescope/telescope-live-grep-args.nvim", lazy = false },
{ "nvim-telescope/telescope-dap.nvim", lazy = false },
{
"harrisoncramer/gitlab.nvim",
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"sindrets/diffview.nvim",
"stevearc/dressing.nvim", -- Recommended but not required. Better UI for pickers.
"nvim-tree/nvim-web-devicons" -- Recommended but not required. Icons in discussion tree.
"nvim-tree/nvim-web-devicons", -- Recommended but not required. Icons in discussion tree.
},
enabled = true,
lazy = false,
@ -82,13 +84,64 @@ local default_plugins = {
},
{
"sindrets/diffview.nvim",
lazy=false,
lazy = false,
opts = function()
return require "plugins.configs.diffview"
end,
},
{"nvim-telescope/telescope-fzf-native.nvim", build="make"},
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
{
"stevearc/quicker.nvim",
opts = {},
init = function()
require("quicker").setup()
end,
},
{
"chentoast/marks.nvim",
lazy = false,
init = function()
require("marks").setup {
default_mappings = true,
signs = true,
mappings = {},
}
end,
},
{
"stevearc/conform.nvim",
opts = {},
init = function()
require("conform").setup {
formatters_by_ft = {
lua = { "stylua" },
-- You can use a function here to determine the formatters dynamically
python = function(bufnr)
if require("conform").get_formatter_info("ruff_format", bufnr).available then
return { "isort", "black" }
-- return { "ruff_format" }
else
return { "isort", "black" }
end
end,
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
options = {
lang_to_formatters = {
json = { "jq" },
},
},
format_on_save = {
timeout_ms = 500,
lsp_format = "fallback",
},
}
end,
},
{
"NvChad/base46",
@ -174,9 +227,7 @@ local default_plugins = {
"nvim-treesitter/nvim-treesitter-textobjects",
lazy = false,
config = function()
require("nvim-treesitter.configs").setup(
require("plugins.configs.treesitter_textobjects")
)
require("nvim-treesitter.configs").setup(require "plugins.configs.treesitter_textobjects")
end,
},
@ -294,54 +345,113 @@ local default_plugins = {
"desdic/macrothis.nvim",
opts = {},
keys = {
{ "<Leader>kkd", function() require('macrothis').delete() end, desc = "Delete" },
{ "<Leader>kke", function() require('macrothis').edit() end, desc = "Edit" },
{ "<Leader>kkl", function() require('macrothis').load() end, desc = "Load" },
{ "<Leader>kkn", function() require('macrothis').rename() end, desc = "Rename" },
{ "<Leader>kkq", function() require('macrothis').quickfix() end, desc = "Run macro on all files in quickfix" },
{ "<Leader>kkr", function() require('macrothis').run() end, desc = "Run macro" },
{ "<Leader>kks", function() require('macrothis').save() end, desc = "Save" },
{ "<Leader>kkx", function() require('macrothis').register() end, desc = "Edit register" },
{ "<Leader>kkp", function() require('macrothis').copy_register_printable() end, desc = "Copy register as printable" },
{ "<Leader>kkm", function() require('macrothis').copy_macro_printable() end, desc = "Copy macro as printable" },
}
{
"<Leader>kkd",
function()
require("macrothis").delete()
end,
desc = "[D]elete",
},
{
"<Leader>kke",
function()
require("macrothis").edit()
end,
desc = "[E]dit",
},
{
"<Leader>kkl",
function()
require("macrothis").load()
end,
desc = "[L]oad",
},
{
"<Leader>kkn",
function()
require("macrothis").rename()
end,
desc = "Re[n]ame",
},
{
"<Leader>kkq",
function()
require("macrothis").quickfix()
end,
desc = "Run macro on all files in [q]uickfix",
},
{
"<Leader>kkr",
function()
require("macrothis").run()
end,
desc = "[R]un macro",
},
{
"<Leader>kks",
function()
require("macrothis").save()
end,
desc = "[S]ave",
},
{
"<Leader>kkx",
function()
require("macrothis").register()
end,
desc = "Edit register",
},
{
"<Leader>kkp",
function()
require("macrothis").copy_register_printable()
end,
desc = "Co[p]y register as printable",
},
{
"<Leader>kkm",
function()
require("macrothis").copy_macro_printable()
end,
desc = "Copy [m]acro as printable",
},
},
},
{
"onsails/diaglist.nvim",
lazy=false,
debug=false,
lazy = false,
debug = false,
},
{
"anuvyklack/hydra.nvim",
lazy=false,
lazy = false,
},
{
"gioele/vim-autoswap",
lazy=false,
lazy = false,
},
{
"natecraddock/workspaces.nvim",
lazy=false,
lazy = false,
config = function()
require("workspaces").setup({
require("workspaces").setup {
hooks = {
open = {"Telescope find_files"},
}
})
open = { "Telescope find_files" },
},
}
end,
},
{
"mangelozzi/rgflow.nvim",
lazy=false,
lazy = false,
config = function()
require("rgflow").setup({
require("rgflow").setup {
-- Set the default rip grep flags and options for when running a search via
-- RgFlow. Once changed via the UI, the previous search flags are used for
-- each subsequent search (until Neovim restarts).
@ -353,32 +463,32 @@ local default_plugins = {
default_ui_mappings = true,
-- QuickFix window only mapping
default_quickfix_mappings = true,
})
}
end,
},
{
"yorickpeterse/nvim-window",
lazy=false,
lazy = false,
config = function()
require('nvim-window').setup({
normal_hl = 'Normal',
hint_hl = 'Bold',
border = 'single'
})
require("nvim-window").setup {
normal_hl = "Normal",
hint_hl = "Bold",
border = "single",
}
end,
},
{
"sindrets/winshift.nvim",
lazy=false,
lazy = false,
},
{
"kdheepak/lazygit.nvim",
lazy=false,
lazy = false,
config = function()
require("lazy").setup({
require("lazy").setup {
{
"kdheepak/lazygit.nvim",
-- optional for floating window border decoration
@ -386,7 +496,7 @@ local default_plugins = {
"nvim-lua/plenary.nvim",
},
},
})
}
end,
},
@ -431,7 +541,7 @@ local default_plugins = {
-- Only load whichkey after all the gui
{
"folke/which-key.nvim",
lazy=false,
lazy = false,
keys = { "<leader>", "<c-r>", "<c-w>", '"', "'", "`", "c", "v", "g" },
init = function()
require("core.utils").load_mappings "whichkey"
@ -445,7 +555,7 @@ local default_plugins = {
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" }
dependencies = { "nvim-lua/plenary.nvim" },
},
{
"folke/noice.nvim",
@ -453,6 +563,19 @@ local default_plugins = {
opts = function()
return require "plugins.configs.noice"
end,
init = function()
require("noice").setup {
routes = {
{
view = "notify",
filter = { event = "msg_showmode" },
},
},
}
-- require("notify").setup({
-- background_colour = "#000000"
-- })
end,
dependencies = {
"MunifTanjim/nui.nvim",
-- "rcarriga/nvim-notify",
@ -460,14 +583,14 @@ local default_plugins = {
},
{
"folke/todo-comments.nvim",
lazy=false,
lazy = false,
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
}
},
},
}
local config = require("core.utils").load_config()