Remove nvim-lsp-config and manually add each lsp.
This commit is contained in:
parent
571341310a
commit
bb66b8fa82
46
init.lua
46
init.lua
@ -21,6 +21,17 @@ vim.o.termguicolors = true
|
|||||||
-- vim.cmd "let g:everforest_background = 'hard'"
|
-- vim.cmd "let g:everforest_background = 'hard'"
|
||||||
vim.cmd.colorscheme('nordfox')
|
vim.cmd.colorscheme('nordfox')
|
||||||
|
|
||||||
|
-- LSP --
|
||||||
|
vim.o.winborder = 'rounded'
|
||||||
|
vim.lsp.enable({'intelephense'})
|
||||||
|
vim.lsp.enable({'drupal-lsp'})
|
||||||
|
vim.lsp.enable({'rust_analyzer'})
|
||||||
|
vim.lsp.enable({'elixirls'})
|
||||||
|
vim.lsp.enable({'lexical'})
|
||||||
|
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
|
||||||
|
vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
|
||||||
|
vim.keymap.set({ "n" }, "<leader>ca", vim.lsp.buf.code_action, {})
|
||||||
|
|
||||||
-- XDEBUG --
|
-- XDEBUG --
|
||||||
local dap = require('dap')
|
local dap = require('dap')
|
||||||
require('telescope').load_extension('dap')
|
require('telescope').load_extension('dap')
|
||||||
@ -50,13 +61,6 @@ dap.configurations.php = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
-- vim.cmd [[
|
|
||||||
-- highlight Normal guibg=none
|
|
||||||
-- highlight NonText guibg=none
|
|
||||||
-- highlight Normal ctermbg=none
|
|
||||||
-- highlight NonText ctermbg=none
|
|
||||||
-- ]]
|
|
||||||
|
|
||||||
vim.fn.sign_define('DapBreakpoint',{ text ='🟥', texthl ='', linehl ='', numhl =''})
|
vim.fn.sign_define('DapBreakpoint',{ text ='🟥', texthl ='', linehl ='', numhl =''})
|
||||||
vim.fn.sign_define('DapStopped',{ text ='▶️', texthl ='', linehl ='', numhl =''})
|
vim.fn.sign_define('DapStopped',{ text ='▶️', texthl ='', linehl ='', numhl =''})
|
||||||
vim.keymap.set('n', '<leader>?', function() dap.continue() end)
|
vim.keymap.set('n', '<leader>?', function() dap.continue() end)
|
||||||
@ -72,17 +76,17 @@ vim.keymap.set('n', '<leader>db', function()
|
|||||||
widgets.centered_float(widgets.scopes)
|
widgets.centered_float(widgets.scopes)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local lspconfig = require 'lspconfig'
|
-- local lspconfig = require 'lspconfig'
|
||||||
local configs = require 'lspconfig.configs'
|
-- local configs = require 'lspconfig.configs'
|
||||||
if not configs.drupal then
|
-- if not configs.drupal then
|
||||||
configs.drupal = {
|
-- configs.drupal = {
|
||||||
default_config = {
|
-- default_config = {
|
||||||
cmd = {'drupal-lsp'},
|
-- cmd = {'drupal-lsp'},
|
||||||
filetypes = {'php', 'module', 'inc', 'theme'},
|
-- filetypes = {'php', 'module', 'inc', 'theme'},
|
||||||
root_dir = function(fname)
|
-- root_dir = function(fname)
|
||||||
return lspconfig.util.root_pattern('composer.json', '.git')(fname)
|
-- return lspconfig.util.root_pattern('composer.json', '.git')(fname)
|
||||||
end
|
-- end
|
||||||
};
|
-- };
|
||||||
}
|
-- }
|
||||||
end
|
-- end
|
||||||
lspconfig.drupal.setup{ autostart = true }
|
-- lspconfig.drupal.setup{ autostart = true }
|
||||||
|
|||||||
@ -20,7 +20,6 @@
|
|||||||
"nvim-dap": { "branch": "master", "commit": "8df427aeba0a06c6577dc3ab82de3076964e3b8d" },
|
"nvim-dap": { "branch": "master", "commit": "8df427aeba0a06c6577dc3ab82de3076964e3b8d" },
|
||||||
"nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
|
"nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
|
||||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "df66808cd78b5a97576bbaeee95ed5ca385a9750" },
|
"nvim-dap-virtual-text": { "branch": "master", "commit": "df66808cd78b5a97576bbaeee95ed5ca385a9750" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "ac1dfbe3b60e5e23a2cff90e3bd6a3bc88031a57" },
|
|
||||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" },
|
"nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
|
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
|
||||||
|
|||||||
12
lsp/drupal.lua
Normal file
12
lsp/drupal.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
cmd = {'drupal-lsp'},
|
||||||
|
filetypes = {'php', 'module', 'inc', 'theme'},
|
||||||
|
root_dir = function(bufnr, on_dir)
|
||||||
|
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
local cwd = assert(vim.uv.cwd())
|
||||||
|
local root = vim.fs.root(fname, { 'composer.json', '.git' })
|
||||||
|
|
||||||
|
-- prefer cwd if root is a descendant
|
||||||
|
on_dir(root and vim.fs.relpath(cwd, root) and cwd)
|
||||||
|
end,
|
||||||
|
}
|
||||||
11
lsp/elixirls.lua
Normal file
11
lsp/elixirls.lua
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
return {
|
||||||
|
filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },
|
||||||
|
root_dir = function(bufnr, on_dir)
|
||||||
|
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
local matches = vim.fs.find({ 'mix.exs' }, { upward = true, limit = 2, path = fname })
|
||||||
|
local child_or_root_path, maybe_umbrella_path = unpack(matches)
|
||||||
|
local root_dir = vim.fs.dirname(maybe_umbrella_path or child_or_root_path)
|
||||||
|
|
||||||
|
on_dir(root_dir)
|
||||||
|
end,
|
||||||
|
}
|
||||||
12
lsp/intelephense.lua
Normal file
12
lsp/intelephense.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'intelephense', '--stdio' },
|
||||||
|
filetypes = { 'php' },
|
||||||
|
root_dir = function(bufnr, on_dir)
|
||||||
|
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
local cwd = assert(vim.uv.cwd())
|
||||||
|
local root = vim.fs.root(fname, { 'composer.json', '.git' })
|
||||||
|
|
||||||
|
-- prefer cwd if root is a descendant
|
||||||
|
on_dir(root and vim.fs.relpath(cwd, root) and cwd)
|
||||||
|
end,
|
||||||
|
}
|
||||||
4
lsp/lexical.lua
Normal file
4
lsp/lexical.lua
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
filetypes = { 'elixir', 'eelixir', 'heex', 'surface' },
|
||||||
|
root_markers = { 'mix.exs', '.git' },
|
||||||
|
}
|
||||||
96
lsp/rust_analyzer.lua
Normal file
96
lsp/rust_analyzer.lua
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
local function reload_workspace(bufnr)
|
||||||
|
local clients = vim.lsp.get_clients { bufnr = bufnr, name = 'rust_analyzer' }
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
|
vim.notify 'Reloading Cargo Workspace'
|
||||||
|
client.request('rust-analyzer/reloadWorkspace', nil, function(err)
|
||||||
|
if err then
|
||||||
|
error(tostring(err))
|
||||||
|
end
|
||||||
|
vim.notify 'Cargo workspace reloaded'
|
||||||
|
end, 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function is_library(fname)
|
||||||
|
local user_home = vim.fs.normalize(vim.env.HOME)
|
||||||
|
local cargo_home = os.getenv 'CARGO_HOME' or user_home .. '/.cargo'
|
||||||
|
local registry = cargo_home .. '/registry/src'
|
||||||
|
local git_registry = cargo_home .. '/git/checkouts'
|
||||||
|
|
||||||
|
local rustup_home = os.getenv 'RUSTUP_HOME' or user_home .. '/.rustup'
|
||||||
|
local toolchains = rustup_home .. '/toolchains'
|
||||||
|
|
||||||
|
for _, item in ipairs { toolchains, registry, git_registry } do
|
||||||
|
if vim.fs.relpath(item, fname) then
|
||||||
|
local clients = vim.lsp.get_clients { name = 'rust_analyzer' }
|
||||||
|
return #clients > 0 and clients[#clients].config.root_dir or nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
cmd = { 'rust-analyzer' },
|
||||||
|
filetypes = { 'rust' },
|
||||||
|
root_dir = function(bufnr, on_dir)
|
||||||
|
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
local reused_dir = is_library(fname)
|
||||||
|
if reused_dir then
|
||||||
|
on_dir(reused_dir)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local cargo_crate_dir = vim.fs.root(fname, { 'Cargo.toml' })
|
||||||
|
local cargo_workspace_root
|
||||||
|
|
||||||
|
if cargo_crate_dir == nil then
|
||||||
|
on_dir(
|
||||||
|
vim.fs.root(fname, { 'rust-project.json' })
|
||||||
|
or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])
|
||||||
|
)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local cmd = {
|
||||||
|
'cargo',
|
||||||
|
'metadata',
|
||||||
|
'--no-deps',
|
||||||
|
'--format-version',
|
||||||
|
'1',
|
||||||
|
'--manifest-path',
|
||||||
|
cargo_crate_dir .. '/Cargo.toml',
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.system(cmd, { text = true }, function(output)
|
||||||
|
if output.code == 0 then
|
||||||
|
if output.stdout then
|
||||||
|
local result = vim.json.decode(output.stdout)
|
||||||
|
if result['workspace_root'] then
|
||||||
|
cargo_workspace_root = vim.fs.normalize(result['workspace_root'])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
on_dir(cargo_workspace_root or cargo_crate_dir)
|
||||||
|
else
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.notify(('[rust_analyzer] cmd failed with code %d: %s\n%s'):format(output.code, cmd, output.stderr))
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
capabilities = {
|
||||||
|
experimental = {
|
||||||
|
serverStatusNotification = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
before_init = function(init_params, config)
|
||||||
|
-- See https://github.com/rust-lang/rust-analyzer/blob/eb5da56d839ae0a9e9f50774fa3eb78eb0964550/docs/dev/lsp-extensions.md?plain=1#L26
|
||||||
|
if config.settings and config.settings['rust-analyzer'] then
|
||||||
|
init_params.initializationOptions = config.settings['rust-analyzer']
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_attach = function()
|
||||||
|
vim.api.nvim_buf_create_user_command(0, 'LspCargoReload', function()
|
||||||
|
reload_workspace(0)
|
||||||
|
end, { desc = 'Reload current cargo workspace' })
|
||||||
|
end,
|
||||||
|
}
|
||||||
@ -33,10 +33,6 @@ vim.keymap.set("n", "<leader>tt", function()
|
|||||||
job_id = vim.bo.channel
|
job_id = vim.bo.channel
|
||||||
end)
|
end)
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>build", function()
|
|
||||||
vim.fn.chansend(job_id, { "ls -lah<CR>" })
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- General config
|
-- General config
|
||||||
vim.cmd("set expandtab")
|
vim.cmd("set expandtab")
|
||||||
vim.cmd("set tabstop=2")
|
vim.cmd("set tabstop=2")
|
||||||
@ -45,12 +41,7 @@ vim.cmd("set shiftwidth=2")
|
|||||||
vim.cmd("set syntax=on")
|
vim.cmd("set syntax=on")
|
||||||
vim.cmd("set number")
|
vim.cmd("set number")
|
||||||
vim.cmd("set nu")
|
vim.cmd("set nu")
|
||||||
-- vim.cmd("set relativenumber")
|
-- vim.cmd("set guicursor=n-v-c:block")
|
||||||
-- vim.cmd("set rnu")
|
|
||||||
-- vim.cmd("set number relativenumber")
|
|
||||||
-- vim.cmd("set nu rnu")
|
|
||||||
-- vim.cmd("set guicursor=n-v-c-i:block")
|
|
||||||
-- vim.cmd("set guicursor=a:blinkon100")
|
|
||||||
vim.api.nvim_set_option("clipboard","unnamed")
|
vim.api.nvim_set_option("clipboard","unnamed")
|
||||||
|
|
||||||
-- Command to turn off diagnostics, if crowding screen
|
-- Command to turn off diagnostics, if crowding screen
|
||||||
|
|||||||
@ -9,27 +9,8 @@ return {
|
|||||||
"williamboman/mason-lspconfig.nvim",
|
"williamboman/mason-lspconfig.nvim",
|
||||||
config = function()
|
config = function()
|
||||||
require("mason-lspconfig").setup({
|
require("mason-lspconfig").setup({
|
||||||
ensure_installed = { "lua_ls", "phpactor", "rust_analyzer" },
|
ensure_installed = { "lua_ls", "intelephense", "rust_analyzer", "elixirls" },
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"neovim/nvim-lspconfig",
|
|
||||||
config = function()
|
|
||||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
|
||||||
local lspconfig = require("lspconfig")
|
|
||||||
lspconfig.lua_ls.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
})
|
|
||||||
lspconfig.phpactor.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
})
|
|
||||||
lspconfig.rust_analyzer.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
})
|
|
||||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
|
|
||||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
|
|
||||||
vim.keymap.set({ "n" }, "<leader>ca", vim.lsp.buf.code_action, {})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,54 +0,0 @@
|
|||||||
local t_opts = {silent = true}
|
|
||||||
vim.keymap.set('t', '<C-n>', '<C-\\><C-N>', t_opts)
|
|
||||||
vim.keymap.set('t', '<C-h>', '<cmd>Danterm<CR>')
|
|
||||||
vim.keymap.set('n', '<leader>dt', '<cmd>Danterm<CR>')
|
|
||||||
|
|
||||||
local state = {
|
|
||||||
floating = {
|
|
||||||
buf = -1,
|
|
||||||
win = -1,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
local function dan_term(opts)
|
|
||||||
opts = opts or {}
|
|
||||||
local width = opts.width or math.floor(vim.o.columns * 0.8)
|
|
||||||
local height = opts.height or math.floor(vim.o.lines * 0.8)
|
|
||||||
local screen_width = vim.o.columns
|
|
||||||
local screen_height = vim.o.lines
|
|
||||||
local col = math.floor((screen_width - width) / 2)
|
|
||||||
local row = math.floor((screen_height - height) / 2)
|
|
||||||
|
|
||||||
local buf = nil
|
|
||||||
if vim.api.nvim_buf_is_valid(opts.buf) then
|
|
||||||
buf = opts.buf
|
|
||||||
else
|
|
||||||
buf = vim.api.nvim_create_buf(false, true)
|
|
||||||
end
|
|
||||||
|
|
||||||
local win_config = {
|
|
||||||
relative = 'editor',
|
|
||||||
width = width,
|
|
||||||
height = height,
|
|
||||||
col = col,
|
|
||||||
row = row,
|
|
||||||
style = 'minimal',
|
|
||||||
border = 'rounded', -- optional, choose 'none', 'single', 'double', etc.
|
|
||||||
}
|
|
||||||
|
|
||||||
local win = vim.api.nvim_open_win(buf, true, win_config)
|
|
||||||
|
|
||||||
return { buf = buf, win = win }
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command("Danterm", function()
|
|
||||||
if not vim.api.nvim_win_is_valid(state.floating.win) then
|
|
||||||
state.floating = dan_term { buf = state.floating.buf }
|
|
||||||
if vim.bo[state.floating.buf].buftype ~= "terminal" then
|
|
||||||
vim.cmd.term()
|
|
||||||
vim.api.nvim_input("i")
|
|
||||||
end
|
|
||||||
else
|
|
||||||
vim.api.nvim_win_hide(state.floating.win)
|
|
||||||
end
|
|
||||||
end, {})
|
|
||||||
Loading…
x
Reference in New Issue
Block a user