summaryrefslogtreecommitdiff
path: root/fnl/plugins/snippets.fnl
diff options
context:
space:
mode:
Diffstat (limited to 'fnl/plugins/snippets.fnl')
-rw-r--r--fnl/plugins/snippets.fnl33
1 files changed, 33 insertions, 0 deletions
diff --git a/fnl/plugins/snippets.fnl b/fnl/plugins/snippets.fnl
new file mode 100644
index 0000000..91865d6
--- /dev/null
+++ b/fnl/plugins/snippets.fnl
@@ -0,0 +1,33 @@
+;; Snippets functionality.
+
+(local dependencies [:rafamadriz/friendly-snippets])
+
+(λ add-snippets [name]
+ (let [snippets (require (.. :plugins.snippets. name))]
+ (snippets.add-snippets)))
+
+(local {: load-and-apply} (require :util.load))
+
+(λ config []
+ (let [ls (require :luasnip)
+ luasnip-vscode (require :luasnip.loaders.from_vscode)]
+ (luasnip-vscode.lazy_load)
+ (load-and-apply :/fnl/plugins/snippets add-snippets)
+ (ls.config.set_config {:history false
+ :updateevents "TextChanged,TextChangedI"})
+ (vim.keymap.set [:i :s] :<c-u>
+ (lambda []
+ (when (ls.expand_or_jumpable)
+ (ls.expand_or_jump))) {:silent true})
+ (vim.keymap.set [:i :s] :<c-l>
+ (lambda []
+ (when (ls.jumpable -1)
+ (ls.jump -1))
+ {:silent true}))
+ (vim.keymap.set [:i] :<c-j>
+ (lambda []
+ (when (ls.choice_active)
+ (ls.change_choice 1)))
+ {:silent true})))
+
+{1 :L3MON4D3/LuaSnip :event :InsertEnter : config : dependencies}