;;; cmp.fnl - nvim-cmp config (import-macros {: module-call!} :macros) { :configure #(let [cmp (require :cmp) compare (require :cmp.config.compare)] (cmp.setup { :snippet { :expand #(module-call! :snippy :expand_snippet $1.body) } :mapping { : (cmp.mapping (cmp.mapping.scroll_docs -4) [ :i :c ]) : (cmp.mapping (cmp.mapping.scroll_docs 4) [ :i :c ]) : (cmp.mapping (cmp.mapping.complete) [ :i :c ]) : (cmp.mapping (cmp.mapping.abort) [ :i :c ]) : (cmp.mapping (cmp.mapping.confirm { :select false }) [ :i :c ]) : (cmp.mapping (cmp.mapping.select_next_item { :behavior cmp.SelectBehavior.Select }) [ :i :c ]) : (cmp.mapping (cmp.mapping.select_prev_item { :behavior cmp.SelectBehavior.Select }) [ :i :c ]) : (cmp.mapping (cmp.mapping.select_next_item { :behavior cmp.SelectBehavior.Select }) [ :i :c ]) : (cmp.mapping (cmp.mapping.select_prev_item { :behavior cmp.SelectBehavior.Select }) [ :i :c ]) : (cmp.mapping (cmp.mapping.select_next_item { :behavior cmp.SelectBehavior.Select }) [ :i :c ]) : (cmp.mapping (cmp.mapping.select_prev_item { :behavior cmp.SelectBehavior.Select }) [ :i :c ]) } :formatting { :format (fn [entry vim_item] (tset vim_item :menu (. { :nvim_lsp "[LSP]" :treesitter "[TS]" :snippy "[Snippy]" :buffer "[Buffer]" :path "[Path]" :vlime "[Vlime]" } entry.source.name)) vim_item) } :sources [{ :name "snippy" :priority 2 :group 1 } { :name "treesitter" :priority 1 :group 2 } { :name "buffer" :priority 0 :group 3 } { :name "path" :priority 0 :group 4 }] :view { :entries { :name "custom" :selection_order "near_cursor" }} :sorting { :priority_weight 2 :comparators [ compare.score compare.locality compare.recently_used compare.offset compare.order ; compare.scopes ; compare.exact ; compare.sort_text ; compare.kind ; compare.length ]}}) (cmp.setup.filetype [ :lisp ] { :option { :fuzzy false } :sources [{ :name "vlime" :priority 2 :group 1 } { :name "snippy" :priority 2 :group 2 } { :name "buffer" :priority 0 :group 3 } { :name "path" :priority 0 :group 4 }]}) (let [cmdline-mappings { : (cmp.mapping (cmp.mapping.complete) [ :i :c ]) : (cmp.mapping (cmp.mapping.abort) [ :i :c ]) : (cmp.mapping (cmp.mapping.confirm { :select false }) [ :i :c ]) : (cmp.mapping (fn [] (if (cmp.visible) (cmp.select_next_item) (do (cmp.complete) (cmp.complete_common_string)))) [ :i :c ]) : (cmp.mapping (fn [] (if (cmp.visible) (cmp.select_prev_item) (do (cmp.complete) (cmp.complete_common_string)))) [ :i :c ]) : (cmp.mapping (fn [] (if (cmp.visible) (cmp.select_next_item { :behavior cmp.SelectBehavior.Select }) (vim.api.nvim_feedkeys (vim.api.nvim_replace_termcodes : true false true) :n false))) [ :i :c ]) : (cmp.mapping (fn [] (if (cmp.visible) (cmp.select_prev_item { :behavior cmp.SelectBehavior.Select }) (vim.api.nvim_feedkeys (vim.api.nvim_replace_termcodes : true false true) :n false))) [ :i :c ]) : (cmp.mapping (cmp.mapping.select_next_item { :behavior cmp.SelectBehavior.Select }) [ :i :c ]) : (cmp.mapping (cmp.mapping.select_prev_item { :behavior cmp.SelectBehavior.Select }) [ :i :c ]) : (cmp.mapping (fn [fallback] (if (cmp.visible) (cmp.select_next_item { :behavior cmp.SelectBehavior.Select }) (fallback))) [ :i :c ]) : (cmp.mapping (fn [fallback] (if (cmp.visible) (cmp.select_prev_item { :behavior cmp.SelectBehavior.Select }) (fallback))) [ :i :c ])}] (cmp.setup.cmdline "/" { :completion { :autocomplete true } :mapping cmdline-mappings :sources (cmp.config.sources [{ :name "buffer" }])}) (cmp.setup.cmdline ":" { :completion { :autocomplete false } :mapping cmdline-mappings :sources (cmp.config.sources [{ :name "cmdline" } { :name "path" }])})))}