about summary refs log tree commit diff
path: root/fnl/nvrc/events.fnl
blob: 278e7214b1ac49d6ab8b7d1108c386f2b1c5ed17 (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
40
41
42
43
44
45
46
47
(import-macros {: au!
                : ac!} :nvrc.macro.event)
(import-macros {: set!
                : setl!} :nvrc.macro.set)
(local {: echo!} (require :nvrc.lib.io))

(local {: line
        : mode} vim.fn)
(fn cmd! [...] (vim.cmd ...))
(fn bufexists? [...] (= (vim.fn.bufexists ...) 1))

; Restore cursor style to beam on exit
(au! restore-cursor
          (ac! VimLeave * #(set! guicursor ["a:ver75-blinkon0"])))

; Restore the last cursor line
(au! restore-last-cursor-line
          (ac! BufReadPost * #(if (and (> (line "'\"") 1)
                                       (<= (line "'\"") (line "$")))
                                  (cmd! "normal! g'\""))))

; Resize splits on window resize
(au! resize-splits-on-resize
          (ac! VimResized * "wincmd ="))

;; Read file when it changes on disk
(au! read-file-on-disk-change
          (ac! [FocusGained BufEnter CursorHold CursorHoldI] *
                    #(if (and (not= :c (mode))
                              (not (bufexists? "[Command Line]")))
                       (cmd! "checktime")))
          (ac! FileChangedShellPost *
                    #(echo! "File changed on disk. Buffer reloaded.")))

(au! terminal-options
          ;; Enter Terminal-mode (insert) automatically
          (ac! TermOpen * "startinsert")
          ;; Disables line number on terminal buffers
          (ac! TermOpen * #(do
                                  (setl! nonumber)
                                  (setl! norelativenumber)))
          ;; Disables spell on terminal buffers
          (ac! TermOpen * #(setl! nospell))
          ;; Disables sign column on terminal buffers
          (ac! TermOpen * #(setl! signcolumn :no))
          ;; Disables colorcolumn on terminal buffers
          (ac! TermOpen * #(setl! colorcolumn [])))