diff --git a/lua/cosmic/config/examples/config.lua b/lua/cosmic/config/examples/config.lua index 131e754..fa6e93a 100644 --- a/lua/cosmic/config/examples/config.lua +++ b/lua/cosmic/config/examples/config.lua @@ -73,6 +73,9 @@ config.cosmic_ui = { diagnostic = {}, } +-- See https://github.com/ray-x/lsp_signature.nvim#full-configuration-with-default-values +config.lsp_signature = {} + -- See https://github.com/L3MON4D3/LuaSnip/blob/577045e9adf325e58f690f4d4b4a293f3dcec1b3/README.md#config config.luasnip = {} diff --git a/lua/cosmic/core/pluginsInit.lua b/lua/cosmic/core/pluginsInit.lua index ab0a87d..fb4c543 100644 --- a/lua/cosmic/core/pluginsInit.lua +++ b/lua/cosmic/core/pluginsInit.lua @@ -80,32 +80,34 @@ return packer.startup(function() require('cosmic.lsp') end, requires = { - { 'jose-elias-alvarez/nvim-lsp-ts-utils' }, { 'williamboman/nvim-lsp-installer' }, + { 'jose-elias-alvarez/nvim-lsp-ts-utils' }, + { + 'ray-x/lsp_signature.nvim', + config = function() + require('cosmic.plugins.lsp-signature') + end, + after = 'nvim-lspconfig', + }, + { + 'jose-elias-alvarez/null-ls.nvim', + config = function() + require('cosmic.lsp.providers.null_ls') + end, + disable = vim.tbl_contains(user_plugins.disable, 'null-ls'), + after = 'nvim-lspconfig', + }, }, }) - use({ - 'jose-elias-alvarez/null-ls.nvim', - config = function() - require('cosmic.lsp.providers.null_ls') - end, - requires = { 'nvim-lua/plenary.nvim' }, - disable = vim.tbl_contains(user_plugins.disable, 'null-ls'), - after = 'nvim-lspconfig', - }) - use({ 'CosmicNvim/cosmic-ui', requires = { 'MunifTanjim/nui.nvim', - 'nvim-lua/plenary.nvim', - 'ray-x/lsp_signature.nvim', }, config = function() require('cosmic.plugins.cosmic-ui') end, - after = 'nvim-lspconfig', }) -- autocompletion diff --git a/lua/cosmic/lsp/diagnostics.lua b/lua/cosmic/lsp/diagnostics.lua new file mode 100644 index 0000000..293cac4 --- /dev/null +++ b/lua/cosmic/lsp/diagnostics.lua @@ -0,0 +1,40 @@ +local icons = require('cosmic.theme.icons') +local config = require('cosmic.config') +local cosmic_ui = require('cosmic-ui') + +-- set up LSP signs +local signs = { + Error = icons.error .. ' ', + Warn = icons.warn .. ' ', + Hint = icons.hint .. ' ', + Info = icons.info .. ' ', +} + +local t = vim.fn.sign_getdefined('DiagnosticSignWarn') +if vim.tbl_isempty(t) then + for type, icon in pairs(signs) do + local hl = 'DiagnosticSign' .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = '' }) + end +end + +-- set up vim.diagnostics +-- vim.diagnostic.config opts +vim.diagnostic.config(vim.tbl_deep_extend('force', { + underline = true, + signs = true, + update_in_insert = false, + severity_sort = true, + float = { + header = false, + source = 'always', + border = cosmic_ui.get_border(), + }, + virtual_text = { + spacing = 4, + source = 'always', + severity = { + min = vim.diagnostic.severity.HINT, + }, + }, +}, config.diagnostic or {})) diff --git a/lua/cosmic/lsp/init.lua b/lua/cosmic/lsp/init.lua index e3eca7c..5959ef7 100644 --- a/lua/cosmic/lsp/init.lua +++ b/lua/cosmic/lsp/init.lua @@ -1,4 +1,13 @@ --- local config = require('cosmic.config') +local cosmic_ui = require('cosmic-ui') -- set up lsp servers require('cosmic.lsp.providers') +require('cosmic.lsp.diagnostics') + +vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { + border = cosmic_ui.get_border(), +}) + +vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.signature_help, { + border = cosmic_ui.get_border(), +}) diff --git a/lua/cosmic/plugins/lsp-signature/init.lua b/lua/cosmic/plugins/lsp-signature/init.lua new file mode 100644 index 0000000..0d8d39a --- /dev/null +++ b/lua/cosmic/plugins/lsp-signature/init.lua @@ -0,0 +1,9 @@ +local cosmic_ui = require('cosmic-ui') +local config = require('cosmic.config') + +require('lsp_signature').setup(vim.tbl_deep_extend('force', { + bind = true, -- This is mandatory, otherwise border config won't get registered. + handler_opts = { + border = cosmic_ui.get_border(), + }, +}, config.lsp_signature or {})) diff --git a/readme.md b/readme.md index a81f956..a2f1932 100644 --- a/readme.md +++ b/readme.md @@ -29,7 +29,7 @@ Full featured native LSP functionality! ##### Additional features -- Aesthetically pleasing UI via [Cosmic-UI](https://github.com/CosmicNvim/cosmic-ui) +- Custom rename and code action popups via [Cosmic-UI](https://github.com/CosmicNvim/cosmic-ui) - Amazing default theme via [tokyonight.nvim](https://github.com/folke/tokyonight.nvim) - Enhanced syntax highlighting via [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) - Dashboard via [dashboard-nvim](https://github.com/glepnir/dashboard-nvim)