fix autocompletion

This commit is contained in:
elkowar 2021-10-08 14:06:50 +02:00
parent ba10fd7e89
commit d9a92bb735
No known key found for this signature in database
GPG key ID: E321AD71B1D1F27F
3 changed files with 39 additions and 30 deletions

View file

@ -207,13 +207,18 @@
;:ms-jpq/coq.artifacts {:branch "artifacts"} ;:ms-jpq/coq.artifacts {:branch "artifacts"}
(abuse use :hrsh7th/vim-vsnip {})
(abuse use :hrsh7th/cmp-vsnip {})
(abuse use :hrsh7th/cmp-nvim-lsp {}) (abuse use :hrsh7th/cmp-nvim-lsp {})
(abuse use :hrsh7th/cmp-buffer {}) (abuse use :hrsh7th/cmp-buffer {})
(abuse (abuse
use use
:hrsh7th/nvim-cmp :hrsh7th/nvim-cmp
{:opt false {:opt false
:requires [:hrsh7th/cmp-nvim-lsp :hrsh7th/cmp-buffer] :requires [:hrsh7th/cmp-nvim-lsp
:hrsh7th/cmp-buffer
:hrsh7th/cmp-vsnip]
:config #(require "dots.plugins.cmp")}) :config #(require "dots.plugins.cmp")})
@ -222,6 +227,7 @@
use use
:tami5/lspsaga.nvim {:after "vim-gruvbox8" :tami5/lspsaga.nvim {:after "vim-gruvbox8"
:opt false :opt false
:commit "373bc031b39730cbfe492533c3acfac36007899a"
:config #(require "dots.plugins.lspsaga")}) :config #(require "dots.plugins.lspsaga")})
(abuse (abuse
@ -303,9 +309,7 @@
:requires ["mattn/webapi-vim"] :requires ["mattn/webapi-vim"]
:opt false :config #(do (set vim.g.rustfmt_fail_silently 1))}) :opt false :config #(do (set vim.g.rustfmt_fail_silently 1))})
(abuse (abuse use :simrat39/rust-tools.nvim {:requires ["nvim-lua/popup.nvim" "nvim-lua/plenary.nvim"]})
use
:simrat39/rust-tools.nvim {:requires ["nvim-lua/popup.nvim" "nvim-lua/plenary.nvim"]})
; (use ; (use
; :Saecki/crates.nvim {:requires ["nvim-lua/plenary.nvim"] ; :Saecki/crates.nvim {:requires ["nvim-lua/plenary.nvim"]

View file

@ -2,12 +2,27 @@
{autoload {a aniseed.core {autoload {a aniseed.core
cmp cmp}}) cmp cmp}})
(cmp.setup (cmp.setup
{:mapping {:<C-d> (cmp.mapping.scroll_docs -4) {:snippet {:expand (fn [args]
((. vim.fn :vsnip#anonymous) args.body))}
:mapping {:<C-d> (cmp.mapping.scroll_docs -4)
:<C-f> (cmp.mapping.scroll_docs 4) :<C-f> (cmp.mapping.scroll_docs 4)
:<C-space> (cmp.mapping.complete) :<C-space> (cmp.mapping.complete)
:<esc> #(do (cmp.mapping.close) (vim.cmd "stopinsert")) :<esc> #(do (cmp.mapping.close) (vim.cmd "stopinsert"))
:<CR> (cmp.mapping.confirm {:select true})} :<CR> (cmp.mapping.confirm {:select true})}
:sources [{:name "nvim_lsp"} :sources [{:name "nvim_lsp"
{:name "buffer"}]}) :priority 5}
{:name "vsnip"
:priority 3}]
;{:name "buffer"}]
:sorting {:comparators [#(do
;(print ($1:get_kind) $1.completion_item.label "--" ($2:get_kind) $2.completion_item.label)
(if (= 15 ($1:get_kind)) false nil)) ; 15 means "SNIPPET", see https://github.com/hrsh7th/nvim-cmp/blob/main/lua/cmp/types/lsp.lua
cmp.config.compare.offset
cmp.config.compare.exact
cmp.config.compare.score
cmp.config.compare.kind
cmp.config.compare.sort_text
cmp.config.compare.length
cmp.config.compare.order]}})

View file

@ -7,7 +7,6 @@
require-macros [macros]}) require-macros [macros]})
; TODO check https://github.com/neovim/nvim-lspconfig/blob/master/ADVANCED_README.md for default config for all of them ; TODO check https://github.com/neovim/nvim-lspconfig/blob/master/ADVANCED_README.md for default config for all of them
(tset vim.lsp.handlers :textDocument/publishDiagnostics (tset vim.lsp.handlers :textDocument/publishDiagnostics
@ -52,23 +51,13 @@
(def default-capabilities (def default-capabilities
(let [capabilities (vim.lsp.protocol.make_client_capabilities)] (let [capabilities (vim.lsp.protocol.make_client_capabilities)]
(set capabilities.textDocument.completion.completionItem.snippetSupport true) (set capabilities.textDocument.completion.completionItem.snippetSupport true)
(cmp_nvim_lsp.update_capabilities capabilities) (cmp_nvim_lsp.update_capabilities capabilities)))
capabilities))
(print cmp_nvim_lsp)
(fn init-lsp [lsp-name ?opts] (fn init-lsp [lsp-name ?opts]
"initialize a language server with defaults" "initialize a language server with defaults"
(let [merged-opts (a.merge {:on_attach on_attach :capabilities default-capabilities} (or ?opts {}))] (let [merged-opts (a.merge {:on_attach on_attach :capabilities default-capabilities} (or ?opts {}))]
((. lsp lsp-name :setup) merged-opts))) ((. lsp lsp-name :setup) merged-opts)))
; Added capabilities for rust-analyzer with nvim-compe
;(let [capabilities (vim.lsp.protocol.make_client_capabilities)]
;(set capabilities.textDocument.completion.completionItem.snippetSupport true)
;(set capabilities.textDocument.completion.completionItem.resolveSupport
;{:properties ["documentation" "detail" "additionalTextEdits"]})
;(init-lsp :rust_analyzer {:capabilities capabilities}))
(init-lsp :jsonls {:commands {:Format [ #(vim.lsp.buf.range_formatting [] [0 0] [(vim.fn.line "$") 0])]}}) (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 :denols {:root_dir (better_root_pattern [".git"] ["package.json"])})
(init-lsp :hls {:settings {:languageServerHaskell {:formattingProvider "stylish-haskell"}}}) (init-lsp :hls {:settings {:languageServerHaskell {:formattingProvider "stylish-haskell"}}})
@ -85,14 +74,15 @@
;(init-lsp :ccls) ;(init-lsp :ccls)
;(when (not lsp.ewwls) (let [ewwls-path "/home/leon/coding/projects/ls-eww/crates/ewwls/target/debug/ewwls"]
;(set lsp-configs.ewwls (when (vim.fn.filereadable ewwls-path)
;{:default_config {:cmd [ "/home/leon/coding/projects/ls-eww/crates/ewwls/target/debug/ewwls"] (when (not lsp.ewwls)
;:filetypes ["yuck"] (set lsp-configs.ewwls
;:root_dir (fn [fname] (or (lsp.util.find_git_ancestor fname) (vim.loop.os_homedir))) {:default_config {:cmd [ewwls-path]
;:settings {}}})) :filetypes ["yuck"]
:root_dir (fn [fname] (or (lsp.util.find_git_ancestor fname) (vim.loop.os_homedir)))
(init-lsp :ewwls) :settings {}}}))
(init-lsp :ewwls)))
(init-lsp :cssls {:filestypes ["css" "scss" "less" "stylus"] (init-lsp :cssls {:filestypes ["css" "scss" "less" "stylus"]
@ -110,8 +100,8 @@
(let [rust-tools (require "rust-tools")] (let [rust-tools (require "rust-tools")]
(rust-tools.setup {:tools {:inlay_hints {:show_parameter_hints false} (rust-tools.setup {:tools {:inlay_hints {:show_parameter_hints false}
:autoSetHints false} :autoSetHints false}
:server {:on_attach on_attach}})) :server {:on_attach on_attach
;:capabilities default-capabilities}})) :capabilities default-capabilities}}))
;:cmd ["/home/leon/coding/prs/rust-analyzer/target/release/rust-analyzer"]}})) ;:cmd ["/home/leon/coding/prs/rust-analyzer/target/release/rust-analyzer"]}}))
(let [sumneko_root_path (.. vim.env.HOME "/.local/share/lua-language-server") (let [sumneko_root_path (.. vim.env.HOME "/.local/share/lua-language-server")