2021-04-03 18:34:15 +00:00
|
|
|
(module plugins.lsp
|
|
|
|
{require {a aniseed.core
|
|
|
|
fennel aniseed.fennel
|
|
|
|
nvim aniseed.nvim
|
|
|
|
lsp lspconfig
|
2021-04-22 14:00:33 +00:00
|
|
|
lsp-configs lspconfig.configs
|
2021-05-05 17:23:32 +00:00
|
|
|
utils utils}
|
2021-04-03 18:34:15 +00:00
|
|
|
require-macros [macros]})
|
|
|
|
|
2021-04-29 19:08:05 +00:00
|
|
|
|
2021-05-02 16:13:37 +00:00
|
|
|
(def- colors utils.colors)
|
2021-04-29 19:08:05 +00:00
|
|
|
|
2021-05-06 17:35:35 +00:00
|
|
|
(pkg symbols-outline.nvim [symbols-outline (require "symbols-outline")]
|
2021-05-05 17:23:32 +00:00
|
|
|
(symbols-outline.setup { :highlight_hovered_item true :show_guides true}))
|
2021-04-30 08:23:30 +00:00
|
|
|
|
2021-04-30 11:30:39 +00:00
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
; LSP config -------------------------------------------------------------------------------- <<<<<
|
2021-04-30 08:23:30 +00:00
|
|
|
|
2021-04-03 18:34:15 +00:00
|
|
|
(fn on_attach [client bufnr]
|
2021-05-06 17:35:35 +00:00
|
|
|
(pkg lsp_signature.nvim [lsp_signature (require "lsp_signature")]
|
2021-05-05 17:23:32 +00:00
|
|
|
(lsp_signature.on_attach))
|
|
|
|
|
2021-04-03 18:34:15 +00:00
|
|
|
(if client.resolved_capabilities.document_highlight
|
2021-04-04 13:04:29 +00:00
|
|
|
(do
|
|
|
|
(utils.highlight "LspReferenceRead" {:gui "underline"})
|
|
|
|
(utils.highlight "LspReferenceText" {:gui "underline"})
|
|
|
|
(utils.highlight "LspReferenceWrite" {:gui "underline"})
|
|
|
|
(vim.api.nvim_exec
|
|
|
|
"augroup lsp_document_highlight
|
|
|
|
autocmd! * <buffer>
|
|
|
|
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
|
|
|
|
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
|
|
|
|
augroup END"
|
|
|
|
false))))
|
2021-04-03 18:34:15 +00:00
|
|
|
|
|
|
|
|
2021-04-22 14:00:33 +00:00
|
|
|
(fn better_root_pattern [patterns except-patterns]
|
|
|
|
"match path if one of the given patterns is matched, EXCEPT if one of the except-patterns is matched"
|
|
|
|
(fn [path]
|
|
|
|
(when (not ((lsp.util.root_pattern except-patterns) path))
|
|
|
|
((lsp.util.root_pattern patterns) path))))
|
|
|
|
|
|
|
|
|
2021-04-22 17:54:37 +00:00
|
|
|
|
|
|
|
(fn init-lsp [lsp-name ?opts]
|
|
|
|
"initialize a language server with defaults"
|
2021-04-23 14:46:45 +00:00
|
|
|
(let [merged-opts (a.merge {:on_attach on_attach} (or ?opts {}))]
|
2021-04-22 17:54:37 +00:00
|
|
|
((. lsp lsp-name :setup) merged-opts)))
|
2021-04-23 14:46:45 +00:00
|
|
|
|
2021-04-22 17:54:37 +00:00
|
|
|
|
2021-05-06 18:54:55 +00:00
|
|
|
|
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
(let [capabilities (vim.lsp.protocol.make_client_capabilities)]
|
|
|
|
(set capabilities.textDocument.completion.completionItem.snippetSupport true)
|
|
|
|
(set capabilities.textDocument.completion.completionItem.resolveSupport
|
2021-05-06 18:54:55 +00:00
|
|
|
{:properties ["documentation" "detail" "additionalTextEdits"]})
|
|
|
|
(lsp.rust_analyzer.setup
|
|
|
|
{:capabilities capabilities
|
|
|
|
:on_attach (fn [...]
|
|
|
|
(on_attach ...)
|
|
|
|
(pkg rust-tools.nvim [rust-tools (require "rust-tools")]
|
|
|
|
(rust-tools.setup { :tools { :inlay_hints { :show_parameter_hints false}}})))}))
|
|
|
|
|
|
|
|
(init-lsp :tsserver {:root_dir (lsp.util.root_pattern "package.json")})
|
|
|
|
(init-lsp :jsonls {:commands {:Format [ #(vim.lsp.buf.range_formatting [] [0 0] [(vim.fn.line "$") 0])]}})
|
|
|
|
(init-lsp :denols {:root_dir (better_root_pattern [".git"] ["package.json"])})
|
|
|
|
(init-lsp :hls {:settings {:languageServerHaskell {:formattingProvider "stylish-haskell"}}})
|
2021-05-01 10:01:13 +00:00
|
|
|
(init-lsp :ocamllsp)
|
2021-04-22 17:54:37 +00:00
|
|
|
(init-lsp :vimls)
|
|
|
|
(init-lsp :bashls)
|
|
|
|
(init-lsp :erlangls)
|
|
|
|
(init-lsp :yamlls)
|
|
|
|
(init-lsp :html)
|
|
|
|
(init-lsp :cssls)
|
|
|
|
|
|
|
|
|
|
|
|
;(lsp.vimls.setup { :on_attach on_attach})
|
2021-04-30 14:26:31 +00:00
|
|
|
; >>>>>
|
2021-04-22 14:00:33 +00:00
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
; compe -------------------------------------------------------------------------------- <<<<<
|
2021-05-06 17:35:35 +00:00
|
|
|
(pkg nvim-compe [compe (require "compe")]
|
2021-05-05 17:23:32 +00:00
|
|
|
(compe.setup
|
|
|
|
{:enabled true
|
2021-04-03 18:34:15 +00:00
|
|
|
:autocomplete false
|
|
|
|
:debug false
|
|
|
|
:min_length 1
|
|
|
|
:preselect "enable"
|
|
|
|
:throttle_time 80
|
|
|
|
:source_timeout 200
|
|
|
|
:incomplete_delay 400
|
|
|
|
:max_abbr_width 100
|
|
|
|
:max_kind_width 100
|
|
|
|
:max_menu_width 100
|
|
|
|
:documentation true
|
2021-05-05 17:23:32 +00:00
|
|
|
:source {:path true
|
2021-04-03 18:34:15 +00:00
|
|
|
:buffer true
|
|
|
|
:calc true
|
|
|
|
:nvim_lsp true
|
|
|
|
:nvim_lua true
|
2021-05-02 09:47:28 +00:00
|
|
|
:vsnip false
|
2021-05-05 17:23:32 +00:00
|
|
|
:conjure true}}))
|
2021-04-03 18:34:15 +00:00
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
; >>>>>
|
2021-04-30 08:23:30 +00:00
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
; LSP saga -------------------------------------------------------------------------------- <<<<<
|
2021-05-06 17:35:35 +00:00
|
|
|
(pkg lspsaga.nvim [saga (require "lspsaga")]
|
2021-05-05 17:23:32 +00:00
|
|
|
(saga.init_lsp_saga
|
|
|
|
{:border_style "single" ; single double round plus
|
|
|
|
:code_action_prompt {:enable true
|
2021-04-30 14:26:31 +00:00
|
|
|
:sign true
|
|
|
|
:virtual_text false}
|
2021-05-05 17:23:32 +00:00
|
|
|
:code_action_keys {:quit "<esc>" :exec "<CR>"}
|
|
|
|
:rename_action_keys {:quit "<esc>" :exec "<CR>"}
|
|
|
|
:finder_action_keys {:quit "<esc>"
|
2021-04-03 18:34:15 +00:00
|
|
|
:open "<CR>"
|
|
|
|
:vsplit "v"
|
|
|
|
:split "b"
|
|
|
|
:scroll_up "<C-u>"
|
|
|
|
:scroll_down "<C-d>"}})
|
2021-05-05 17:23:32 +00:00
|
|
|
|
2021-04-29 19:08:05 +00:00
|
|
|
|
2021-05-05 17:23:32 +00:00
|
|
|
(utils.highlight ["LspFloatWinBorder"
|
|
|
|
"LspSagaHoverBorder"
|
|
|
|
"LspSagaRenameBorder"
|
|
|
|
"LspSagaSignatureHelpBorder"
|
|
|
|
"LspSagaCodeActionBorder"
|
|
|
|
"LspSagaDefPreviewBorder"
|
|
|
|
"LspSagaDiagnosticBorder"]
|
|
|
|
{:bg colors.dark0_hard :fg colors.dark0_hard})
|
|
|
|
|
|
|
|
(utils.highlight ["LspSagaDiagnosticTruncateLine"
|
|
|
|
"LspSagaDocTruncateLine"
|
|
|
|
"LspSagaShTruncateLine"]
|
|
|
|
{:bg "NONE" :fg colors.dark0})
|
|
|
|
|
|
|
|
(utils.highlight ["TargetWord"
|
|
|
|
"LspSagaCodeActionTitle"
|
|
|
|
"LspSagaBorderTitle"
|
|
|
|
"LspSagaCodeActionContent"
|
|
|
|
"LspSagaFinderSelection"
|
|
|
|
"LspSagaDiagnosticHeader"]
|
|
|
|
{:fg colors.bright_aqua}))
|
|
|
|
|
|
|
|
|
|
|
|
(utils.highlight "LspFloatWinNormal" {:bg colors.dark0_hard})
|
|
|
|
(utils.highlight "LspFloatWinBorder" {:bg colors.dark0_hard
|
|
|
|
:fg colors.dark0_hard})
|
|
|
|
(utils.highlight "TargetWord" {:fg colors.bright_aqua})
|
2021-04-30 14:26:31 +00:00
|
|
|
; >>>>>
|
2021-04-30 08:23:30 +00:00
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
; LSP trouble -------------------------------------------------------------------------------- <<<<<
|
2021-05-06 17:35:35 +00:00
|
|
|
(pkg lsp-trouble.nvim [trouble (require "trouble")]
|
2021-05-05 17:23:32 +00:00
|
|
|
(trouble.setup
|
|
|
|
{:icons false
|
2021-05-02 09:47:28 +00:00
|
|
|
:auto_preview true
|
|
|
|
:auto_close true
|
|
|
|
:auto_open false
|
|
|
|
:action_keys
|
2021-05-05 17:23:32 +00:00
|
|
|
{:jump "o"
|
|
|
|
:jump_close "<CR>"
|
|
|
|
:close "<esc>"
|
|
|
|
:cancel "q"
|
|
|
|
:hover ["a" "K"]}})
|
|
|
|
|
|
|
|
(utils.highlight "LspTroubleFoldIcon" {:bg "NONE" :fg colors.bright_orange})
|
|
|
|
(utils.highlight "LspTroubleCount" {:bg "NONE" :fg colors.bright_green})
|
|
|
|
(utils.highlight "LspTroubleText" {:bg "NONE" :fg colors.light0})
|
|
|
|
|
|
|
|
(utils.highlight "LspTroubleSignError" {:bg "NONE" :fg colors.bright_red})
|
|
|
|
(utils.highlight "LspTroubleSignWarning" {:bg "NONE" :fg colors.bright_yellow})
|
|
|
|
(utils.highlight "LspTroubleSignInformation" {:bg "NONE" :fg colors.bright_aqua})
|
|
|
|
(utils.highlight "LspTroubleSignHint" {:bg "NONE" :fg colors.bright_blue}))
|
2021-04-29 19:08:05 +00:00
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
; >>>>>
|
2021-04-04 13:04:29 +00:00
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
; Empty template -------------------------------------------------------------------------------- <<<<<
|
|
|
|
|
|
|
|
; >>>>>
|
|
|
|
|
2021-04-30 11:30:39 +00:00
|
|
|
(set vim.o.signcolumn "yes")
|
2021-04-30 10:53:30 +00:00
|
|
|
|
2021-04-30 14:26:31 +00:00
|
|
|
|
|
|
|
; vim:foldmarker=<<<<<,>>>>>
|