/
anil-elixir.el
103 lines (95 loc) · 2.46 KB
/
anil-elixir.el
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
;; ;; elixir mode
(use-package
erlang
:ensure t
:mode "\\.erl$")
(use-package
elixir-ts-mode
:ensure t
:hook
(
(elixir-ts-mode . flycheck-mode)
(elixir-ts-mode . smartparens-mode)
(elixir-ts-mode . mix-minor-mode)
(elixir-ts-mode . exunit-mode)
;; (elixir-ts-mode . eglot-ensure)
)
;; :config (add-hook 'elixir-ts-mode-hook (lambda ()
;; (add-hook 'before-save-hook 'eglot-format-buffer)))
:config (add-hook 'elixir-ts-mode-hook (lambda ()
(add-hook 'before-save-hook 'lsp-format-buffer)))
(load "surface-ts-mode/surface-ts-mode.el") ;; load from vendor
:bind
(:map elixir-ts-mode-map
("C-c C-d" . lsp-ui-doc-show)
("s-t" . lsp-ui-imenu)
)
:mode (
".ex$"
".exs?$"
".eex$"
)
)
(use-package
exunit
:ensure t
:after elixir-ts-mode
:commands (anil/mix-format)
:bind
(:map elixir-ts-mode-map
("C-c , a" . exunit-verify-all)
("C-c , A" . exunit-verify-all-in-umbrella)
("C-c , s" . exunit-verify-single)
("C-c , v" . exunit-verify)
("C-c , r" . exunit-rerun)
("C-c , t" . exunit-toggle-file-and-test)
("s-r" . exunit-rerun)
)
(:map exunit-compilation-mode-map
("C-o" . ace-window))
)
(use-package
flycheck-credo
:ensure t
:after (flycheck elixir-ts-mode)
:config
(flycheck-credo-setup)
:custom (flycheck-elixir-credo-strict t))
(use-package
flycheck-dialyxir
:ensure t
:after elixir-ts-mode)
(use-package
flycheck
:no-require t
:init (flycheck-dialyxir-setup))
(use-package
inf-elixir
:ensure t
:after elixir-ts-mode
:bind (("C-c i i" . 'inf-elixir)
("C-c i f" . anil/mix-format)
("C-c i p" . 'inf-elixir-project)
("C-c i l" . 'inf-elixir-send-line)
("C-c i r" . 'inf-elixir-send-region)
("C-c i b" . 'inf-elixir-send-buffer)))
(use-package
mix
:ensure t
:after elixir-ts-mode
:bind
(:map elixir-ts-mode-map
("C-c i f" . anil/mix-format))
:config
(defun anil/mix-format ()
(interactive)
(save-buffer)
(message "formatting code...")
(shell-command (format "cd %s && mix format"
(or
(ignore-errors (exunit-umbrella-project-root))
(exunit-project-root))
(buffer-file-name)))
(revert-buffer t t))
:hook (elixir-ts-mode . mix-minor-mode)
)