Some checks are pending
/ Test config on ${{matrix.node}} (20) (push) Waiting to run
50 lines
1.7 KiB
EmacsLisp
50 lines
1.7 KiB
EmacsLisp
;;; languages/elixir -- summary -*- lexical-binding: t; -*-
|
|
;;; Commentary:
|
|
;;; Code:
|
|
|
|
(require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el")
|
|
(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el")
|
|
(require '+custom-pkg-transient "$HOME/.emacs.d/pkg/transient.el")
|
|
|
|
(use-package elixir-mode :defer t :straight t)
|
|
(use-package elixir-ts-mode :requires (elixir-mode lsp-mode lsp-ui) :straight t)
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.exs\\'" . elixir-ts-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.ex\\'" . elixir-ts-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.heex\\'" . elixir-ts-mode))
|
|
|
|
(transient-define-prefix +custom-lang-elixir/transient-context-menu ()
|
|
"Elixir Buffer Commands"
|
|
[""
|
|
["LSP"
|
|
("m" "iMenu" lsp-ui-imenu)]
|
|
["Buffer"
|
|
("r" "Reload" revert-buffer-no-confirm)
|
|
("f" "Format" elixir-format)
|
|
("i" "Indent" mark-and-indent-whole-buffer)
|
|
("e" "Show Errors" flycheck-list-errors)]]
|
|
[""
|
|
("q" "Quit" keyboard-quit)])
|
|
|
|
(defun +custom-lang-elixir/activate-elixir-ts-mode ()
|
|
"All things Elixir."
|
|
(set-indent 2)
|
|
(column-enforce-n 98)
|
|
(lsp)
|
|
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
|
|
(setq-local lsp-eldoc-enable-hover nil)
|
|
(setq-local company-minimum-prefix-length 3)
|
|
|
|
;; If needed, switch the one below to false to disable documentation pop-ups
|
|
;; (setq-local lsp-ui-doc-enable t)
|
|
|
|
(define-key elixir-ts-mode-map (kbd "C-c l") '+custom-lang-elixir/transient-context-menu)
|
|
|
|
;; Company list override
|
|
(add-to-list (make-local-variable 'company-backends)
|
|
'(company-capf company-yasnippet)))
|
|
|
|
(add-hook 'elixir-ts-mode-hook '+custom-lang-elixir/activate-elixir-ts-mode)
|
|
|
|
(provide '+custom-lang-elixir)
|
|
;;; elixir.el ends here
|