(local {: autoload : utils} (require :dots.prelude)) (local cmp (autoload :cmp)) ; check this for coloring maybe ; https://github.com/hrsh7th/nvim-cmp/blob/ada9ddeff71e82ad0e52c9a280a1e315a8810b9a/lua/cmp/entry.lua#L199 (fn item-formatter [item vim-item] (let [padding (string.rep " " (- 10 (vim.fn.strwidth vim-item.abbr))) details (?. item :completion_item :detail)] (when details (set vim-item.abbr (.. vim-item.abbr padding " " details)))) vim-item) (fn setup [] (cmp.setup {:snippet {:expand (fn [args] ((. vim.fn :vsnip#anonymous) args.body))} :completion {:autocomplete false} :mapping (cmp.mapping.preset.insert {: (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})}) :experimental {:custom_menu true} :sources [{:name "nvim_lsp" :priority 5} {:name "vsnip" :priority 3} ; {:name "omni"} ; this prints the completion thing, for some reason,.... {:name "nvim_lua"} {:name "calc"} {:name "path"} {:name "nvim_lsp_signature_help"} {:name "conventionalcommits"} {:name "crates"}] ;{:name "buffer"}] :formatting {:format item-formatter} :sorting {:priority_weight 2 :comparators [#(do (if (and (= 15 ($1:get_kind)) (= 15 ($2:get_kind))) nil (= 15 ($1:get_kind)) false (= 15 ($2:get_kind)) true 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]}}) (cmp.setup.cmdline "/" {:sources [{:name :buffer}]})) [(utils.plugin :hrsh7th/vim-vsnip {:lazy true :event ["VeryLazy"]}) (utils.plugin :hrsh7th/vim-vsnip-integ {:lazy true :event ["VeryLazy"]}) (utils.plugin :rafamadriz/friendly-snippets) (utils.plugin :hrsh7th/nvim-cmp {:lazy true :event ["VeryLazy"] :dependencies [[:hrsh7th/cmp-nvim-lsp] [:hrsh7th/cmp-buffer] [:hrsh7th/cmp-vsnip] [:hrsh7th/cmp-nvim-lua] [:hrsh7th/cmp-calc] [:hrsh7th/cmp-path] [:hrsh7th/cmp-nvim-lsp-signature-help] [:davidsierradz/cmp-conventionalcommits] [:hrsh7th/cmp-omni]] :config setup})]