diff --git a/nvim/.config/nvim/fnl/dots/plugins.fnl b/nvim/.config/nvim/fnl/dots/plugins.fnl index 589c3c6..ec81711 100644 --- a/nvim/.config/nvim/fnl/dots/plugins.fnl +++ b/nvim/.config/nvim/fnl/dots/plugins.fnl @@ -207,13 +207,18 @@ ;: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-buffer {}) (abuse use :hrsh7th/nvim-cmp {: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")}) @@ -222,6 +227,7 @@ use :tami5/lspsaga.nvim {:after "vim-gruvbox8" :opt false + :commit "373bc031b39730cbfe492533c3acfac36007899a" :config #(require "dots.plugins.lspsaga")}) (abuse @@ -303,9 +309,7 @@ :requires ["mattn/webapi-vim"] :opt false :config #(do (set vim.g.rustfmt_fail_silently 1))}) - (abuse - use - :simrat39/rust-tools.nvim {:requires ["nvim-lua/popup.nvim" "nvim-lua/plenary.nvim"]}) + (abuse use :simrat39/rust-tools.nvim {:requires ["nvim-lua/popup.nvim" "nvim-lua/plenary.nvim"]}) ; (use ; :Saecki/crates.nvim {:requires ["nvim-lua/plenary.nvim"] diff --git a/nvim/.config/nvim/fnl/dots/plugins/cmp.fnl b/nvim/.config/nvim/fnl/dots/plugins/cmp.fnl index f590dc8..095fc3d 100644 --- a/nvim/.config/nvim/fnl/dots/plugins/cmp.fnl +++ b/nvim/.config/nvim/fnl/dots/plugins/cmp.fnl @@ -2,12 +2,27 @@ {autoload {a aniseed.core cmp cmp}}) - (cmp.setup - {:mapping {: (cmp.mapping.scroll_docs -4) + {:snippet {:expand (fn [args] + ((. vim.fn :vsnip#anonymous) args.body))} + :mapping {: (cmp.mapping.scroll_docs -4) : (cmp.mapping.scroll_docs 4) : (cmp.mapping.complete) : #(do (cmp.mapping.close) (vim.cmd "stopinsert")) : (cmp.mapping.confirm {:select true})} - :sources [{:name "nvim_lsp"} - {:name "buffer"}]}) + :sources [{:name "nvim_lsp" + :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]}}) + diff --git a/nvim/.config/nvim/fnl/dots/plugins/lsp.fnl b/nvim/.config/nvim/fnl/dots/plugins/lsp.fnl index d4de3b7..2bef38b 100644 --- a/nvim/.config/nvim/fnl/dots/plugins/lsp.fnl +++ b/nvim/.config/nvim/fnl/dots/plugins/lsp.fnl @@ -7,7 +7,6 @@ require-macros [macros]}) - ; 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 @@ -52,23 +51,13 @@ (def default-capabilities (let [capabilities (vim.lsp.protocol.make_client_capabilities)] (set capabilities.textDocument.completion.completionItem.snippetSupport true) - (cmp_nvim_lsp.update_capabilities capabilities) - capabilities)) - -(print cmp_nvim_lsp) + (cmp_nvim_lsp.update_capabilities capabilities))) (fn init-lsp [lsp-name ?opts] "initialize a language server with defaults" (let [merged-opts (a.merge {:on_attach on_attach :capabilities default-capabilities} (or ?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 :denols {:root_dir (better_root_pattern [".git"] ["package.json"])}) (init-lsp :hls {:settings {:languageServerHaskell {:formattingProvider "stylish-haskell"}}}) @@ -85,14 +74,15 @@ ;(init-lsp :ccls) -;(when (not lsp.ewwls) - ;(set lsp-configs.ewwls - ;{:default_config {:cmd [ "/home/leon/coding/projects/ls-eww/crates/ewwls/target/debug/ewwls"] - ;:filetypes ["yuck"] - ;:root_dir (fn [fname] (or (lsp.util.find_git_ancestor fname) (vim.loop.os_homedir))) - ;:settings {}}})) - -(init-lsp :ewwls) +(let [ewwls-path "/home/leon/coding/projects/ls-eww/crates/ewwls/target/debug/ewwls"] + (when (vim.fn.filereadable ewwls-path) + (when (not lsp.ewwls) + (set lsp-configs.ewwls + {:default_config {:cmd [ewwls-path] + :filetypes ["yuck"] + :root_dir (fn [fname] (or (lsp.util.find_git_ancestor fname) (vim.loop.os_homedir))) + :settings {}}})) + (init-lsp :ewwls))) (init-lsp :cssls {:filestypes ["css" "scss" "less" "stylus"] @@ -110,8 +100,8 @@ (let [rust-tools (require "rust-tools")] (rust-tools.setup {:tools {:inlay_hints {:show_parameter_hints false} :autoSetHints false} - :server {:on_attach on_attach}})) - ;:capabilities default-capabilities}})) + :server {:on_attach on_attach + :capabilities default-capabilities}})) ;:cmd ["/home/leon/coding/prs/rust-analyzer/target/release/rust-analyzer"]}})) (let [sumneko_root_path (.. vim.env.HOME "/.local/share/lua-language-server")