summaryrefslogtreecommitdiff
path: root/fnl/config
diff options
context:
space:
mode:
Diffstat (limited to 'fnl/config')
-rw-r--r--fnl/config/cmp.fnl47
1 files changed, 47 insertions, 0 deletions
diff --git a/fnl/config/cmp.fnl b/fnl/config/cmp.fnl
new file mode 100644
index 0000000..a9163a1
--- /dev/null
+++ b/fnl/config/cmp.fnl
@@ -0,0 +1,47 @@
+;; Configuration for completion plugin.
+(module config.cmp
+ {autoload {nvim aniseed.nvim
+ util util}})
+
+(local luasnip (let [(ok? luasnip) util.load-plugin :luasnip]
+ (when ok?
+ ((require :luasnip/loaders/from_vscode).lazy_load)
+ luasnip)))
+
+(local lspkind (let [(ok? lspkind) util.load-plugin :lspkind]
+ (when ok?
+ lspkind)))
+
+(lspkind.init)
+
+(defn- snip [args]
+ (luasnip.lsp_expand args.body)
+
+(let [(ok? cmp) util.load-plugin :cmp]
+ (when ok?
+ (cmp.setup {
+ :snippet {
+ :expand snip}
+ :mapping {
+ "<C-k>" (cmp.mapping.select_prev_item)
+ "<C-j>" (cmp.mapping.select_next_item)}
+ :sources [
+ {:name "nvim_lsp"}
+ {:name "nvim_lua"}
+ {:name "luasnip"}
+ {:name "buffer" :keyword_length 4}
+ {:name "path" :keyword_length 6}]
+ :formatting {:format (lspkind.cmp_format {
+ :with_text true
+ :menu {
+ :buffer "[Buf]"
+ :nvim_lsp "[LSP]"
+ :nvim_lua "[api]"
+ :path "[path]"
+ :luasnip "[Snip]"
+ }})}
+ :documentation {
+ :border [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ]}
+ :experimental {
+ :ghost_text false
+ :native_menu false}})))