feat(lsp): clean up commands and formatting

This commit is contained in:
Matthew Leong 2023-01-06 09:20:16 -08:00
parent 0295f75c07
commit 40eef214f3
10 changed files with 98 additions and 72 deletions

View file

@ -1,7 +1,7 @@
{ {
"Comment.nvim": { "Comment.nvim": {
"branch": "master", "branch": "master",
"commit": "7bb563ff2d811a63b207e9de63e3e9c0877cb6d5" "commit": "ab00bcf5aa979c53f2f40dc2655c03e24f4ef50f"
}, },
"LuaSnip": { "LuaSnip": {
"branch": "master", "branch": "master",
@ -9,7 +9,7 @@
}, },
"SchemaStore.nvim": { "SchemaStore.nvim": {
"branch": "main", "branch": "main",
"commit": "eee175f655e6775e1750a81b89a7471f9dbe8b0e" "commit": "c55c35929dd4e670af7ab6e2e197a4687baa2076"
}, },
"auto-session": { "auto-session": {
"branch": "main", "branch": "main",
@ -29,7 +29,7 @@
}, },
"cmp-nvim-lua": { "cmp-nvim-lua": {
"branch": "main", "branch": "main",
"commit": "d276254e7198ab7d00f117e88e223b4bd8c02d21" "commit": "f3491638d123cfd2c8048aefaf66d246ff250ca6"
}, },
"cmp-path": { "cmp-path": {
"branch": "main", "branch": "main",
@ -53,7 +53,7 @@
}, },
"lazy.nvim": { "lazy.nvim": {
"branch": "main", "branch": "main",
"commit": "c59c05c7a80693fda369ccab572f8eaca50a1b4f" "commit": "4f76b431f73c912a7021bc17384533fbad96fba7"
}, },
"lsp_lines.nvim": { "lsp_lines.nvim": {
"branch": "main", "branch": "main",
@ -61,15 +61,15 @@
}, },
"lualine.nvim": { "lualine.nvim": {
"branch": "master", "branch": "master",
"commit": "32a7382a75a52e8ad05f4cec7eeb8bbfbe80d461" "commit": "d8c392dd75778d6258da4e7c55522e94ac389732"
}, },
"mason-lspconfig.nvim": { "mason-lspconfig.nvim": {
"branch": "main", "branch": "main",
"commit": "aa25b4153d2f2636c3b3a8c8360349d2b29e7ae3" "commit": "33a198bc5ee0215ae8ab3f61781b29103cf4ca5a"
}, },
"mason.nvim": { "mason.nvim": {
"branch": "main", "branch": "main",
"commit": "b71538a5f02fd9a6047a900310d2834acec5a508" "commit": "73831cbe979fb3b385ed8e61626d16d9306a1f06"
}, },
"noice.nvim": { "noice.nvim": {
"branch": "main", "branch": "main",
@ -81,7 +81,7 @@
}, },
"null-ls.nvim": { "null-ls.nvim": {
"branch": "main", "branch": "main",
"commit": "fdcd809b432c665e9b202309c93c18416d7c4628" "commit": "6830a1ed04f89e6d556cb6bcc200433173004307"
}, },
"nvim-autopairs": { "nvim-autopairs": {
"branch": "master", "branch": "master",
@ -89,7 +89,7 @@
}, },
"nvim-cmp": { "nvim-cmp": {
"branch": "main", "branch": "main",
"commit": "c49ad26e894e137e401b1d294948c46327877eaf" "commit": "11a95792a5be0f5a40bab5fc5b670e5b1399a939"
}, },
"nvim-colorizer.lua": { "nvim-colorizer.lua": {
"branch": "master", "branch": "master",
@ -113,7 +113,7 @@
}, },
"nvim-treesitter": { "nvim-treesitter": {
"branch": "master", "branch": "master",
"commit": "b1569394614804aaad4e994731161f253ff61bcc" "commit": "68e8181dbcf29330716d380e5669f2cd838eadb5"
}, },
"nvim-treesitter-refactor": { "nvim-treesitter-refactor": {
"branch": "master", "branch": "master",
@ -133,7 +133,7 @@
}, },
"plenary.nvim": { "plenary.nvim": {
"branch": "master", "branch": "master",
"commit": "bb444796dc5746d969f0718913a31c8075741e36" "commit": "95fb27dfcf6330ac482a99545d7440ac6729851b"
}, },
"popup.nvim": { "popup.nvim": {
"branch": "master", "branch": "master",
@ -145,7 +145,7 @@
}, },
"telescope.nvim": { "telescope.nvim": {
"branch": "master", "branch": "master",
"commit": "a606bd10c79ec5989c76c49cc6f736e88b63f0da" "commit": "18fc02b499b368287e3aa267ec0b0d22afc0f19b"
}, },
"todo-comments.nvim": { "todo-comments.nvim": {
"branch": "main", "branch": "main",

View file

@ -1,5 +1,6 @@
local augroup_name = 'CosmicNvim' local augroup_name = 'CosmicNvim'
local group = vim.api.nvim_create_augroup(augroup_name, { clear = true }) local group = vim.api.nvim_create_augroup(augroup_name, { clear = true })
vim.api.nvim_create_autocmd('VimResized', { vim.api.nvim_create_autocmd('VimResized', {
command = 'tabdo wincmd =', command = 'tabdo wincmd =',
group = group, group = group,
@ -7,5 +8,4 @@ vim.api.nvim_create_autocmd('VimResized', {
vim.cmd([[ vim.cmd([[
command! CosmicUpdate lua require('cosmic.utils.cosmic').update() command! CosmicUpdate lua require('cosmic.utils.cosmic').update()
command! LspFormat lua vim.lsp.buf.format()
]]) ]])

View file

@ -1,24 +0,0 @@
local disabled_built_ins = {
'netrw',
'netrwPlugin',
'netrwSettings',
'netrwFileHandlers',
'gzip',
'zip',
'zipPlugin',
'tar',
'tarPlugin',
'getscript',
'getscriptPlugin',
'vimball',
'vimballPlugin',
'2html_plugin',
'logipat',
'rrhelper',
'spellfile_plugin',
'matchit',
}
for _, plugin in pairs(disabled_built_ins) do
vim.g['loaded_' .. plugin] = 1
end

View file

@ -1,10 +1,10 @@
local cosmic_modules = { local cosmic_modules = {
'cosmic.core.disabled',
'cosmic.core.editor',
'cosmic.core.pluginsInit', 'cosmic.core.pluginsInit',
'cosmic.lsp', 'cosmic.core.editor',
'cosmic.core.commands', 'cosmic.core.commands',
'cosmic.core.mappings', 'cosmic.core.mappings',
'cosmic.lsp',
-- user editor settings
'cosmic.config.editor', 'cosmic.config.editor',
} }
@ -24,6 +24,7 @@ vim.opt.runtimepath:prepend(lazypath)
for _, mod in ipairs(cosmic_modules) do for _, mod in ipairs(cosmic_modules) do
local ok, err = pcall(require, mod) local ok, err = pcall(require, mod)
-- cosmic.config files may or may not be present
if not ok and not mod:find('cosmic.config') then if not ok and not mod:find('cosmic.config') then
error(('Error loading %s...\n\n%s'):format(mod, err)) error(('Error loading %s...\n\n%s'):format(mod, err))
end end

View file

@ -1,7 +1,8 @@
local u = require('cosmic.utils.cosmic') local u = require('cosmic.utils.cosmic')
local user_config = require('cosmic.core.user') local user_config = require('cosmic.core.user')
require('lazy').setup('cosmic.plugins', { require('lazy').setup('cosmic.plugins', {
lockfile = u.get_install_dir() .. '/lazy-lock.json', -- lockfile generated after running update. lockfile = u.get_install_dir() .. '/lazy-lock.json',
defaults = { lazy = true }, defaults = { lazy = true },
ui = { ui = {
border = user_config.border, border = user_config.border,
@ -10,14 +11,24 @@ require('lazy').setup('cosmic.plugins', {
performance = { performance = {
rtp = { rtp = {
disabled_plugins = { disabled_plugins = {
'gzip', 'netrw',
'matchit',
'matchparen',
'netrwPlugin', 'netrwPlugin',
'tarPlugin', 'netrwSettings',
'tohtml', 'netrwFileHandlers',
'tutor', 'gzip',
'zip',
'zipPlugin', 'zipPlugin',
'tar',
'tarPlugin',
'getscript',
'getscriptPlugin',
'vimball',
'vimballPlugin',
'2html_plugin',
'logipat',
'rrhelper',
'spellfile_plugin',
'matchit',
}, },
}, },
}, },

View file

@ -58,15 +58,22 @@ local default_config = {
local u = require('cosmic.utils') local u = require('cosmic.utils')
local config = u.merge(default_config, user_config) local config = u.merge(default_config, user_config)
local user_servers = vim.tbl_keys(config.lsp.servers)
function config.lsp.can_client_format(client_name) function config.lsp.can_client_format(client)
if config.lsp.servers[client_name] == true then -- formatting enabled by default if server=true
if config.lsp.servers[client.name] == true then
return true return true
end end
if vim.tbl_contains(user_servers, client_name) and config.lsp.servers[client_name] then -- check config server settings
return (config.lsp.servers[client_name].format == true) if config.lsp.servers[client.name] then
-- default to true if no format flag on server settings is set
if config.lsp.servers[client.name].format == nil then
return true
end
-- check format flag on server settings
return (config.lsp.servers[client.name].format == true)
end end
return true return true

View file

@ -1,10 +1 @@
local mods = { require('cosmic.core')
'cosmic.core',
}
for _, mod in ipairs(mods) do
local ok, err = pcall(require, mod)
if not ok and not mod:find('cosmic.core.user') then
error(('Error loading %s...\n\n%s'):format(mod, err))
end
end

View file

@ -1,11 +1,11 @@
local augroup_name = 'CosmicNvimLspFormat' local augroup_name = 'CosmicNvimLspFormat'
local group = vim.api.nvim_create_augroup(augroup_name, { clear = true }) local group = vim.api.nvim_create_augroup(augroup_name, { clear = true })
local config = require('cosmic.core.user') local user_config = require('cosmic.core.user')
if config.lsp.format_on_save then if user_config.lsp.format_on_save then
local format_filetypes = '' local format_filetypes = ''
if vim.tbl_islist(config.lsp.format_on_save) then if vim.tbl_islist(user_config.lsp.format_on_save) then
for _, ft in pairs(config.lsp.format_on_save) do for _, ft in pairs(user_config.lsp.format_on_save) do
format_filetypes = format_filetypes .. '*' .. ft format_filetypes = format_filetypes .. '*' .. ft
end end
else else
@ -15,10 +15,10 @@ if config.lsp.format_on_save then
vim.api.nvim_create_autocmd(string.format('BufWritePre %s', format_filetypes), { vim.api.nvim_create_autocmd(string.format('BufWritePre %s', format_filetypes), {
callback = function() callback = function()
vim.lsp.buf.format({ vim.lsp.buf.format({
timeout_ms = config.lsp.format_timeout, timeout_ms = user_config.lsp.format_timeout,
-- check user config to see if we can format on save -- check user config to see if we can format on save
filter = function(client) filter = function(client)
return config.lsp.can_client_format(client.name) return user_config.lsp.can_client_format(client.name)
end, end,
}) })
end, end,

View file

@ -1,5 +1,8 @@
local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())
local M = {} local M = {}
local augroup_name = 'CosmicNvimLspFormat'
local group = vim.api.nvim_create_augroup(augroup_name, { clear = true })
local user_config = require('cosmic.core.user')
function M.on_attach(client, bufnr) function M.on_attach(client, bufnr)
local function buf_set_option(...) local function buf_set_option(...)
@ -9,12 +12,34 @@ function M.on_attach(client, bufnr)
-- Enable completion triggered by <c-x><c-o> -- Enable completion triggered by <c-x><c-o>
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
require('cosmic.lsp.mappings').init(client, bufnr) if client.server_capabilities.documentFormattingProvider then
-- set up :LspFormat for clients that are capable
vim.cmd(string.format("command! LspFormat lua require('cosmic.lsp.utils').format(%s)", bufnr))
if user_config.lsp.format_on_save then
-- collect filetype(s)
local format_filetypes = ''
if vim.tbl_islist(user_config.lsp.format_on_save) then
for _, ft in pairs(user_config.lsp.format_on_save) do
format_filetypes = format_filetypes .. '*' .. ft
end
else
-- any filetype
format_filetypes = '*'
end end
M.flags = { -- autocommand for format on save with specified filetype(s)
debounce_text_changes = 150, vim.api.nvim_create_autocmd(string.format('BufWritePre %s', format_filetypes), {
} callback = function()
require('cosmic.lsp.utils').format(bufnr)
end,
group = group,
})
end
end
require('cosmic.lsp.mappings').init(client, bufnr)
end
M.capabilities = capabilities M.capabilities = capabilities

15
lua/cosmic/lsp/utils.lua Normal file
View file

@ -0,0 +1,15 @@
local user_config = require('cosmic.core.user')
local M = {}
function M.format(bufnr)
vim.lsp.buf.format({
timeout_ms = user_config.lsp.format_timeout,
-- check user config to see if we can format on save
filter = function(client)
return user_config.lsp.can_client_format(client)
end,
bufnr = bufnr or 0,
})
end
return M