From 6d513494ff8ca3b3611357fc36dcdd7d2235ff54 Mon Sep 17 00:00:00 2001
From: listout <listout@protonmail.com>
Date: Sat, 10 Sep 2022 13:53:17 +0530
Subject: nvim: lsp-config: floating window custom border

Signed-off-by: listout <listout@protonmail.com>
---
 lua/plugins/lsp-config.lua | 41 +++++++++++++++++++++++++++++++++++------
 1 file changed, 35 insertions(+), 6 deletions(-)

(limited to 'lua')

diff --git a/lua/plugins/lsp-config.lua b/lua/plugins/lsp-config.lua
index db82f91..c4dce46 100644
--- a/lua/plugins/lsp-config.lua
+++ b/lua/plugins/lsp-config.lua
@@ -1,5 +1,34 @@
 -- Add additional capabilities supported by nvim-cmp
 local M = {}
+
+vim.cmd [[autocmd! ColorScheme * highlight NormalFloat guibg=#1f2335]]
+vim.cmd [[autocmd! ColorScheme * highlight FloatBorder guifg=white guibg=#1f2335]]
+
+local border = {
+	{"🭽", "FloatBorder"},
+	{"▔", "FloatBorder"},
+	{"🭾", "FloatBorder"},
+	{"▕", "FloatBorder"},
+	{"🭿", "FloatBorder"},
+	{"▁", "FloatBorder"},
+	{"🭼", "FloatBorder"},
+	{"▏", "FloatBorder"},
+}
+
+-- LSP settings (for overriding per client)
+local handlers =  {
+	["textDocument/hover"] =  vim.lsp.with(vim.lsp.handlers.hover, {border = border}),
+	["textDocument/signatureHelp"] =  vim.lsp.with(vim.lsp.handlers.signature_help, {border = border }),
+}
+
+-- To instead override globally
+local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview
+function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...)
+	opts = opts or {}
+	opts.border = opts.border or border
+	return orig_util_open_floating_preview(contents, syntax, opts, ...)
+end
+
 local capabilities = vim.lsp.protocol.make_client_capabilities()
 M.capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
 
@@ -10,10 +39,10 @@ vim.lsp.set_log_level(vim.log.levels.DEBUG)
 -- Mappings.
 -- See `:help vim.diagnostic.*` for documentation on any of the below functions
 local opts = { noremap=true, silent=true }
-vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
+vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts)
 vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
 vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
-vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
+vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, opts)
 
 -- Use an on_attach function to only map the following keys
 -- after the language server attaches to the current buffer
@@ -34,11 +63,11 @@ M.on_attach = function(client, bufnr)
 	vim.keymap.set('n', '<space>wl', function()
 		print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
 	end, bufopts)
-	vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
-	vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
-	vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
+	vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, bufopts)
+	vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts)
+	vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts)
 	vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
-	vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts)
+	vim.keymap.set('n', '<leader>f', vim.lsp.buf.formatting, bufopts)
 end
 
 M.lsp_flags = {
-- 
cgit v1.2.3