summaryrefslogtreecommitdiff
path: root/fnl/plugins/snippets.fnl
blob: 6dd317e06a0c2919a9a5772335e4da348b9e0b6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
;; Snippets functionality.
(import-macros {: keymaps} :macros)

(local dependencies [:rafamadriz/friendly-snippets])

(λ add-snippets [name]
  (let [snippets (require (.. :plugins.snippets. name))]
    (snippets.add-snippets)))

(λ config []
  (let [ls (require :luasnip)
        luasnip-vscode (require :luasnip.loaders.from_vscode)]
    (luasnip-vscode.lazy_load)
    (each [fname type (vim.fs.dir (.. (vim.fn.stdpath :config)
                                      :/fnl/plugins/snippets))]
      (when (= type :file)
        (add-snippets (fname:match "^(.*)%.fnl$"))))
    (ls.config.set_config {:history true
                           :updateevents "TextChanged,TextChangedI"})
    (keymaps [[:i :s]
              :<c-u>
              (λ []
                (when (ls.expand_or_jumpable)
                  (ls.expand_or_jump)))
              {:silent true}]
             [[:i :s]
              :<c-l>
              (λ []
                (when (ls.jumpable -1)
                  (ls.jump -1)))
              {:silent true}]
             [[:i]
              :<c-j>
              (λ []
                (when (ls.choice_active)
                  (ls.change_choice 1)))
              {:silent true}])))

{1 :L3MON4D3/LuaSnip :event :InsertEnter : config : dependencies}