feat: add lsp_lines

This commit is contained in:
Matthew Leong 2022-12-30 09:15:21 -08:00
parent fd1e2abf2b
commit 202e8a3c8d
5 changed files with 81 additions and 22 deletions

View file

@ -77,6 +77,14 @@ local config = {
diagnostic = {},
-- See :h gitsigns-usage
gitsigns = {},
-- See https://git.sr.ht/~whynothugo/lsp_lines.nvim
lsp_lines = {
-- additional flag only for CosmicNvim
-- true - loads plugin and is enabled at start
-- false - loads plugin but is not enabled at start
-- you may use <leader>ld to toggle
enable_on_start = true,
},
-- See https://github.com/ray-x/lsp_signature.nvim#full-configuration-with-default-values
lsp_signature = {},
-- See https://github.com/nvim-lualine/lualine.nvim#default-configuration

View file

@ -5,6 +5,15 @@ local default_config = {
border = 'rounded',
disable_builtin_plugins = {},
add_plugins = {},
plugins = {
lsp_lines = {
-- additional flag only for CosmicNvim
-- true - loads plugin and is enabled at start
-- false - loads plugin but is not enabled at start
-- you may use <leader>ld to toggle
enable_on_start = true,
},
},
lsp = {
format_on_save = true, -- true/false or table of filetypes {'.ts', '.js',}
format_timeout = 3000,

View file

@ -1,21 +1,8 @@
local u = require('cosmic.utils')
local icons = require('cosmic.utils.icons')
local config = require('cosmic.core.user')
local user_config = require('cosmic.core.user')
-- set up LSP signs
local signs = {
Error = icons.error .. ' ',
Warn = icons.warn .. ' ',
Hint = icons.hint .. ' ',
Info = icons.info .. ' ',
}
for type, icon in pairs(signs) do
local hl = 'DiagnosticSign' .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = '' })
end
local function format(diagnostic)
local function format_diagnostic(diagnostic)
local icon = icons.error
if diagnostic.severity == vim.diagnostic.severity.WARN then
icon = icons.warn
@ -29,20 +16,18 @@ local function format(diagnostic)
return message
end
-- set up vim.diagnostics
-- vim.diagnostic.config opts
vim.diagnostic.config(u.merge({
local config = u.merge({
underline = true,
signs = true,
update_in_insert = false,
severity_sort = true,
float = {
border = config.border,
border = user_config.border,
focusable = false,
header = { icons.debug .. ' Diagnostics:', 'Normal' },
scope = 'line',
source = false,
format = format,
format = format_diagnostic,
},
virtual_text = {
prefix = '',
@ -51,6 +36,8 @@ vim.diagnostic.config(u.merge({
severity = {
min = vim.diagnostic.severity.HINT,
},
format = format,
format = format_diagnostic,
},
}, config.diagnostic or {}))
}, user_config.diagnostic or {})
return config

View file

@ -0,0 +1,19 @@
local icons = require('cosmic.utils.icons')
local config = require('cosmic.lsp.diagnostics.config')
-- set up LSP signs
local signs = {
Error = icons.error .. ' ',
Warn = icons.warn .. ' ',
Hint = icons.hint .. ' ',
Info = icons.info .. ' ',
}
-- Set up diagnostic signs
for type, icon in pairs(signs) do
local hl = 'DiagnosticSign' .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = '' })
end
-- set up diagnostics
vim.diagnostic.config(config)

View file

@ -0,0 +1,36 @@
return {
event = 'VeryLazy',
url = 'https://git.sr.ht/~whynothugo/lsp_lines.nvim',
config = function()
local user_config = require('cosmic.core.user')
local u = require('cosmic.utils')
local map = require('cosmic.utils').map
local vt_config = require('cosmic.lsp.diagnostics.config')
local is_plugin_enabled = user_config.plugins.lsp_lines.enable_on_start
-- init lsp_lines
require('lsp_lines').setup()
local function toggle()
if is_plugin_enabled then
vim.diagnostic.config(u.merge(vt_config, {
virtual_text = false,
virtual_lines = true,
}))
else
vim.diagnostic.config(u.merge(vt_config, {
virtual_lines = false,
}))
end
is_plugin_enabled = not is_plugin_enabled
end
-- run once to properly show/hide based on user config
toggle()
-- map for toggling lines
map('n', '<leader>ld', '', {
callback = toggle,
})
end,
}