nvim: Improve LSP stuff
This commit is contained in:
@ -1,6 +1,8 @@
|
|||||||
vim.g.mapleader = " "
|
vim.g.mapleader = " "
|
||||||
vim.g.localleader = "\\"
|
vim.g.localleader = "\\"
|
||||||
|
|
||||||
|
|
||||||
|
-- Install Lazy
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||||
@ -17,6 +19,48 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
|||||||
end
|
end
|
||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
-- TODO: get colored renders working
|
||||||
|
vim.g.rustaceanvim = {
|
||||||
|
-- Plugin configuration
|
||||||
|
tools = {},
|
||||||
|
|
||||||
|
-- LSP configuration
|
||||||
|
server = {
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
vim.keymap.set('n', '<leader>lg', pick_rust_target,
|
||||||
|
{ desc = "Pick Target (Rust)", buffer = bufnr })
|
||||||
|
vim.keymap.set('n', "<leader>a", function() vim.cmd.RustLsp('codeAction') end,
|
||||||
|
{ desc = "Code Action (Rust)", buffer = bufnr })
|
||||||
|
vim.keymap.set('n', "<leader>e", function() vim.cmd.RustLsp('renderDiagnostic', 'current') end,
|
||||||
|
{ desc = "Render Diagnostic", buffer = bufnr })
|
||||||
|
end,
|
||||||
|
default_settings = {
|
||||||
|
['rust-analyzer'] = {
|
||||||
|
checkOnSave = { overrideCommand = "cargo check --message-format=json-diagnostic-rendered-ansi" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
settings = function(project_root)
|
||||||
|
local ra = require('rustaceanvim.config.server')
|
||||||
|
local settings = ra.load_rust_analyzer_settings(project_root, {
|
||||||
|
settings_file_pattern = 'rust-analyzer.json'
|
||||||
|
})
|
||||||
|
|
||||||
|
-- override default target (if `set_rust_target` has been called)
|
||||||
|
local rust_target = vim.g["rust-analyzer-target"]
|
||||||
|
if rust_target then
|
||||||
|
settings["rust-analyzer"]["cargo"] = { target = rust_target }
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.g["rust-analyzer-target-test"] = settings
|
||||||
|
|
||||||
|
return settings
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- DAP configuration
|
||||||
|
dap = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
require('plugins')
|
require('plugins')
|
||||||
require('vars')
|
require('vars')
|
||||||
@ -27,9 +71,16 @@ require('theme')
|
|||||||
require('statusline')
|
require('statusline')
|
||||||
--require('debugger') -- TODO:
|
--require('debugger') -- TODO:
|
||||||
|
|
||||||
local lspconfig = require("lspconfig")
|
|
||||||
|
|
||||||
-- Mason Setup
|
-- Mason Setup
|
||||||
|
local language_servers = {
|
||||||
|
"pylsp",
|
||||||
|
"eslint",
|
||||||
|
"cssls",
|
||||||
|
"jsonls",
|
||||||
|
"ts_ls",
|
||||||
|
"gopls",
|
||||||
|
"wgsl_analyzer",
|
||||||
|
}
|
||||||
require("mason").setup({
|
require("mason").setup({
|
||||||
ui = {
|
ui = {
|
||||||
icons = {
|
icons = {
|
||||||
@ -38,17 +89,43 @@ require("mason").setup({
|
|||||||
package_uninstalled = "",
|
package_uninstalled = "",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
ensure_installed = { "pylsp", "eslint", "gopls", "wgsl_analyzer" },
|
ensure_installed = language_servers,
|
||||||
})
|
})
|
||||||
require("mason-lspconfig").setup_handlers {
|
require("mason-lspconfig").setup_handlers {
|
||||||
-- rust_analyzer is managed by rustaceanvim
|
-- rust_analyzer is managed by rustaceanvim
|
||||||
['rust_analyzer'] = function() end
|
['rust_analyzer'] = function() end
|
||||||
}
|
}
|
||||||
require("mason-lspconfig").setup()
|
require("mason-lspconfig").setup()
|
||||||
lspconfig.pylsp.setup {}
|
|
||||||
lspconfig.eslint.setup {}
|
local lspconfig = require("lspconfig")
|
||||||
lspconfig.gopls.setup {}
|
for _,l in pairs(language_servers) do
|
||||||
lspconfig.wgsl_analyzer.setup {}
|
lspconfig[l].setup {}
|
||||||
|
end
|
||||||
|
|
||||||
|
local compare = require "cmp.config.compare"
|
||||||
|
require('cmp').setup.filetype({ "rust" }, {
|
||||||
|
sorting = {
|
||||||
|
priority_weight = 2,
|
||||||
|
comparators = {
|
||||||
|
-- deprioritize `.box`, `.mut`, etc.
|
||||||
|
require("cmp-rust").deprioritize_postfix,
|
||||||
|
-- deprioritize `Borrow::borrow` and `BorrowMut::borrow_mut`
|
||||||
|
require("cmp-rust").deprioritize_borrow,
|
||||||
|
-- deprioritize `Deref::deref` and `DerefMut::deref_mut`
|
||||||
|
require("cmp-rust").deprioritize_deref,
|
||||||
|
-- deprioritize `Into::into`, `Clone::clone`, etc.
|
||||||
|
require("cmp-rust").deprioritize_common_traits,
|
||||||
|
compare.offset,
|
||||||
|
compare.exact,
|
||||||
|
compare.score,
|
||||||
|
--compare.recently_used,
|
||||||
|
compare.locality,
|
||||||
|
compare.sort_text,
|
||||||
|
compare.length,
|
||||||
|
compare.order,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
require("todo-comments").setup()
|
require("todo-comments").setup()
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,10 @@
|
|||||||
-- change rust-analyzer target
|
-- change rust-analyzer target and restart
|
||||||
set_rust_target = function(target)
|
set_rust_target = function(target)
|
||||||
|
vim.g["rust-analyzer-target"] = target
|
||||||
|
vim.cmd("RustAnalyzer restart")
|
||||||
print("rust-analyzer.cargo.target = " .. target)
|
print("rust-analyzer.cargo.target = " .. target)
|
||||||
require("rust-tools").setup({
|
|
||||||
server = { settings = { ["rust-analyzer"] = { cargo = { target = target } } } },
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- a custom telescope picker for changing rust-analyzer target
|
|
||||||
pick_rust_target = function(opts)
|
pick_rust_target = function(opts)
|
||||||
opts = opts or {}
|
opts = opts or {}
|
||||||
require("telescope.pickers").new(opts, {
|
require("telescope.pickers").new(opts, {
|
||||||
@ -24,3 +22,5 @@ pick_rust_target = function(opts)
|
|||||||
end,
|
end,
|
||||||
}):find()
|
}):find()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,6 @@ vim.api.nvim_create_autocmd('LspAttach', {
|
|||||||
|
|
||||||
-- Buffer local mappings.
|
-- Buffer local mappings.
|
||||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||||
vim.keymap.set('n', '<leader>lg', pick_rust_target, { desc = "Rust target picker", buffer = ev.buf })
|
|
||||||
vim.keymap.set('n', '<leader>ld', telescope.lsp_definitions, { desc = "Show definitons", buffer = ev.buf })
|
vim.keymap.set('n', '<leader>ld', telescope.lsp_definitions, { desc = "Show definitons", buffer = ev.buf })
|
||||||
vim.keymap.set('n', '<leader>lr', telescope.lsp_references, { desc = "Show references", buffer = ev.buf })
|
vim.keymap.set('n', '<leader>lr', telescope.lsp_references, { desc = "Show references", buffer = ev.buf })
|
||||||
vim.keymap.set('n', '<leader>li', telescope.lsp_implementations, { desc = "Show implementations", buffer = ev.buf })
|
vim.keymap.set('n', '<leader>li', telescope.lsp_implementations, { desc = "Show implementations", buffer = ev.buf })
|
||||||
@ -35,13 +34,7 @@ vim.api.nvim_create_autocmd('LspAttach', {
|
|||||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
end, { desc = "List workspace folders", buffer = ev.buf })
|
end, { desc = "List workspace folders", buffer = ev.buf })
|
||||||
vim.keymap.set('n', '<leader>r', vim.lsp.buf.rename, { desc = "Rename symbol", buffer = ev.buf })
|
vim.keymap.set('n', '<leader>r', vim.lsp.buf.rename, { desc = "Rename symbol", buffer = ev.buf })
|
||||||
|
vim.keymap.set('n', "<leader>a", vim.lsp.buf.code_action, { desc = "Code Action", buffer = ev.buf })
|
||||||
vim.keymap.set('n', "<leader>a", function()
|
|
||||||
vim.cmd.RustLsp('codeAction') -- supports rust-analyzer's grouping
|
|
||||||
-- or vim.lsp.buf.codeAction() if you don't want grouping.
|
|
||||||
end,
|
|
||||||
{ silent = true, buffer = ev.buf })
|
|
||||||
--vim.keymap.set({ 'n', 'v' }, '<leader>la', vim.lsp.buf.code_action, { desc = "Code actions", buffer = ev.buf }) -- TODO: figure out how to fall back to this option lang isnt rust
|
|
||||||
|
|
||||||
wk.add({
|
wk.add({
|
||||||
{ "<leader>l", desc = "Language server stuff" },
|
{ "<leader>l", desc = "Language server stuff" },
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
require("lazy").setup({
|
require("lazy").setup({
|
||||||
spec = {
|
spec = {
|
||||||
-- install plugins
|
-- install plugins
|
||||||
{ 'nvim-treesitter/nvim-treesitter', opts = {} },
|
{ 'nvim-treesitter/nvim-treesitter' },
|
||||||
{ 'ellisonleao/gruvbox.nvim' },
|
{ 'ellisonleao/gruvbox.nvim' },
|
||||||
{ 'danilamihailov/beacon.nvim' },
|
{ 'danilamihailov/beacon.nvim' },
|
||||||
{ 'nvim-lua/plenary.nvim' },
|
{ 'nvim-lua/plenary.nvim' },
|
||||||
@ -52,16 +52,15 @@ require("lazy").setup({
|
|||||||
{ 'hrsh7th/cmp-path' },
|
{ 'hrsh7th/cmp-path' },
|
||||||
{ 'hrsh7th/cmp-buffer' },
|
{ 'hrsh7th/cmp-buffer' },
|
||||||
{ 'hrsh7th/vim-vsnip' },
|
{ 'hrsh7th/vim-vsnip' },
|
||||||
|
{ 'ryo33/nvim-cmp-rust' },
|
||||||
|
|
||||||
{ 'nvim-telescope/telescope.nvim', branch = '0.1.x',
|
{ 'nvim-telescope/telescope.nvim', branch = '0.1.x',
|
||||||
dependencies = { 'nvim-lua/plenary.nvim' }
|
dependencies = { 'nvim-lua/plenary.nvim' }
|
||||||
},
|
},
|
||||||
|
|
||||||
-- -- status line
|
-- -- status line
|
||||||
{
|
{ 'linrongbin16/lsp-progress.nvim' },
|
||||||
'nvim-lualine/lualine.nvim',
|
{ 'nvim-lualine/lualine.nvim' },
|
||||||
--requires = { 'nvim-tree/nvim-web-devicons', opt = true }
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
-- Configure any other settings here. See the documentation for more details.
|
-- Configure any other settings here. See the documentation for more details.
|
||||||
-- colorscheme that will be used when installing plugins.
|
-- colorscheme that will be used when installing plugins.
|
||||||
|
|||||||
139
tree/.config/nvim/lua/spinners.lua
Normal file
139
tree/.config/nvim/lua/spinners.lua
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
return {
|
||||||
|
braille = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" },
|
||||||
|
triangles = { "◢", "◣", "◤", "◥" },
|
||||||
|
dwarf_fortress = {
|
||||||
|
" ██████£££ ",
|
||||||
|
"☺██████£££ ",
|
||||||
|
"☺██████£££ ",
|
||||||
|
"☺▓█████£££ ",
|
||||||
|
"☺▓█████£££ ",
|
||||||
|
"☺▒█████£££ ",
|
||||||
|
"☺▒█████£££ ",
|
||||||
|
"☺░█████£££ ",
|
||||||
|
"☺░█████£££ ",
|
||||||
|
"☺ █████£££ ",
|
||||||
|
" ☺█████£££ ",
|
||||||
|
" ☺█████£££ ",
|
||||||
|
" ☺▓████£££ ",
|
||||||
|
" ☺▓████£££ ",
|
||||||
|
" ☺▒████£££ ",
|
||||||
|
" ☺▒████£££ ",
|
||||||
|
" ☺░████£££ ",
|
||||||
|
" ☺░████£££ ",
|
||||||
|
" ☺ ████£££ ",
|
||||||
|
" ☺████£££ ",
|
||||||
|
" ☺████£££ ",
|
||||||
|
" ☺▓███£££ ",
|
||||||
|
" ☺▓███£££ ",
|
||||||
|
" ☺▒███£££ ",
|
||||||
|
" ☺▒███£££ ",
|
||||||
|
" ☺░███£££ ",
|
||||||
|
" ☺░███£££ ",
|
||||||
|
" ☺ ███£££ ",
|
||||||
|
" ☺███£££ ",
|
||||||
|
" ☺███£££ ",
|
||||||
|
" ☺▓██£££ ",
|
||||||
|
" ☺▓██£££ ",
|
||||||
|
" ☺▒██£££ ",
|
||||||
|
" ☺▒██£££ ",
|
||||||
|
" ☺░██£££ ",
|
||||||
|
" ☺░██£££ ",
|
||||||
|
" ☺ ██£££ ",
|
||||||
|
" ☺██£££ ",
|
||||||
|
" ☺██£££ ",
|
||||||
|
" ☺▓█£££ ",
|
||||||
|
" ☺▓█£££ ",
|
||||||
|
" ☺▒█£££ ",
|
||||||
|
" ☺▒█£££ ",
|
||||||
|
" ☺░█£££ ",
|
||||||
|
" ☺░█£££ ",
|
||||||
|
" ☺ █£££ ",
|
||||||
|
" ☺█£££ ",
|
||||||
|
" ☺█£££ ",
|
||||||
|
" ☺▓£££ ",
|
||||||
|
" ☺▓£££ ",
|
||||||
|
" ☺▒£££ ",
|
||||||
|
" ☺▒£££ ",
|
||||||
|
" ☺░£££ ",
|
||||||
|
" ☺░£££ ",
|
||||||
|
" ☺ £££ ",
|
||||||
|
" ☺£££ ",
|
||||||
|
" ☺£££ ",
|
||||||
|
" ☺▓££ ",
|
||||||
|
" ☺▓££ ",
|
||||||
|
" ☺▒££ ",
|
||||||
|
" ☺▒££ ",
|
||||||
|
" ☺░££ ",
|
||||||
|
" ☺░££ ",
|
||||||
|
" ☺ ££ ",
|
||||||
|
" ☺££ ",
|
||||||
|
" ☺££ ",
|
||||||
|
" ☺▓£ ",
|
||||||
|
" ☺▓£ ",
|
||||||
|
" ☺▒£ ",
|
||||||
|
" ☺▒£ ",
|
||||||
|
" ☺░£ ",
|
||||||
|
" ☺░£ ",
|
||||||
|
" ☺ £ ",
|
||||||
|
" ☺£ ",
|
||||||
|
" ☺£ ",
|
||||||
|
" ☺▓ ",
|
||||||
|
" ☺▓ ",
|
||||||
|
" ☺▒ ",
|
||||||
|
" ☺▒ ",
|
||||||
|
" ☺░ ",
|
||||||
|
" ☺░ ",
|
||||||
|
" ☺ ",
|
||||||
|
" ☺ &",
|
||||||
|
" ☺ ☼&",
|
||||||
|
" ☺ ☼ &",
|
||||||
|
" ☺☼ &",
|
||||||
|
" ☺☼ & ",
|
||||||
|
" ‼ & ",
|
||||||
|
" ☺ & ",
|
||||||
|
" ‼ & ",
|
||||||
|
" ☺ & ",
|
||||||
|
" ‼ & ",
|
||||||
|
" ☺ & ",
|
||||||
|
"‼ & ",
|
||||||
|
" & ",
|
||||||
|
" & ",
|
||||||
|
" & ░ ",
|
||||||
|
" & ▒ ",
|
||||||
|
" & ▓ ",
|
||||||
|
" & £ ",
|
||||||
|
" & ░£ ",
|
||||||
|
" & ▒£ ",
|
||||||
|
" & ▓£ ",
|
||||||
|
" & ££ ",
|
||||||
|
" & ░££ ",
|
||||||
|
" & ▒££ ",
|
||||||
|
"& ▓££ ",
|
||||||
|
"& £££ ",
|
||||||
|
" ░£££ ",
|
||||||
|
" ▒£££ ",
|
||||||
|
" ▓£££ ",
|
||||||
|
" █£££ ",
|
||||||
|
" ░█£££ ",
|
||||||
|
" ▒█£££ ",
|
||||||
|
" ▓█£££ ",
|
||||||
|
" ██£££ ",
|
||||||
|
" ░██£££ ",
|
||||||
|
" ▒██£££ ",
|
||||||
|
" ▓██£££ ",
|
||||||
|
" ███£££ ",
|
||||||
|
" ░███£££ ",
|
||||||
|
" ▒███£££ ",
|
||||||
|
" ▓███£££ ",
|
||||||
|
" ████£££ ",
|
||||||
|
" ░████£££ ",
|
||||||
|
" ▒████£££ ",
|
||||||
|
" ▓████£££ ",
|
||||||
|
" █████£££ ",
|
||||||
|
" ░█████£££ ",
|
||||||
|
" ▒█████£££ ",
|
||||||
|
" ▓█████£££ ",
|
||||||
|
" ██████£££ ",
|
||||||
|
" ██████£££ ",
|
||||||
|
},
|
||||||
|
}
|
||||||
@ -1,3 +1,17 @@
|
|||||||
|
require('lsp-progress').setup({
|
||||||
|
spinner = require('spinners').dwarf_fortress,
|
||||||
|
spin_update_time = 200,
|
||||||
|
client_format = function(client_name, spinner, series_messages)
|
||||||
|
return #series_messages > 0
|
||||||
|
and (
|
||||||
|
table.concat(series_messages, ", ")
|
||||||
|
.. " " .. spinner
|
||||||
|
.. " [" .. client_name .. "]"
|
||||||
|
)
|
||||||
|
or nil
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
require('lualine').setup {
|
require('lualine').setup {
|
||||||
options = {
|
options = {
|
||||||
icons_enabled = true,
|
icons_enabled = true,
|
||||||
@ -12,7 +26,7 @@ require('lualine').setup {
|
|||||||
always_divide_middle = true,
|
always_divide_middle = true,
|
||||||
globalstatus = false,
|
globalstatus = false,
|
||||||
refresh = {
|
refresh = {
|
||||||
statusline = 1000,
|
statusline = 200,
|
||||||
tabline = 1000,
|
tabline = 1000,
|
||||||
winbar = 1000,
|
winbar = 1000,
|
||||||
}
|
}
|
||||||
@ -21,10 +35,11 @@ require('lualine').setup {
|
|||||||
lualine_a = {'mode'},
|
lualine_a = {'mode'},
|
||||||
lualine_b = {'branch', 'diff', 'diagnostics'},
|
lualine_b = {'branch', 'diff', 'diagnostics'},
|
||||||
lualine_c = {'filename'},
|
lualine_c = {'filename'},
|
||||||
lualine_x = {{
|
lualine_x = {
|
||||||
'lsp_progress',
|
function()
|
||||||
timer = { progress_enddelay = 20, spinner = 20, lsp_client_name_enddelay = 20 },
|
return require('lsp-progress').progress()
|
||||||
}},
|
end
|
||||||
|
},
|
||||||
lualine_y = {'encoding', 'fileformat', 'filetype'},
|
lualine_y = {'encoding', 'fileformat', 'filetype'},
|
||||||
lualine_z = {'location'}
|
lualine_z = {'location'}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user