49 lines
1.3 KiB
EmacsLisp
49 lines
1.3 KiB
EmacsLisp
;;;; Markdown
|
|
(use-package markdown-mode)
|
|
|
|
;;;; Odin
|
|
(use-package odin-mode
|
|
:vc (:url "https://github.com/mattt-b/odin-mode"
|
|
:rev :newest)
|
|
:mode "\\.odin\\'"
|
|
:hook (odin-mode . eglot-ensure))
|
|
|
|
(use-package eglot
|
|
:ensure nil
|
|
:config
|
|
(setq eglot-autoshutdown t)
|
|
(add-to-list 'eglot-ignored-server-capabilities :signatureHelpProvider)
|
|
|
|
;; Explicit OLS configuration.
|
|
(add-to-list
|
|
'eglot-server-programs
|
|
'(odin-mode
|
|
. ("/home/jason/.local/bin/ols"
|
|
:initializationOptions
|
|
(:odin_command "/home/jason/.odin/odin"
|
|
:enable_document_symbols t
|
|
:enable_format t
|
|
:collections
|
|
[(:name "core"
|
|
:path "/home/jason/.odin/core")
|
|
(:name "vendor"
|
|
:path "/home/jason/.odin/vendor")])))))
|
|
|
|
;; OLS built-in definitions.
|
|
(setenv "OLS_BUILTIN_FOLDER" "/home/jason/ThirdParty/ols/builtin")
|
|
|
|
;;;; Code navigation
|
|
;; Vim-style code navigation.
|
|
(evil-define-key '(normal motion) 'global
|
|
"gd" #'xref-find-definitions
|
|
"gD" #'xref-find-references
|
|
"K" #'eldoc
|
|
(kbd "C-t") #'xref-go-back)
|
|
|
|
;; ESC closes any open eldoc window.
|
|
(defun my/eldoc-close (&rest _)
|
|
(dolist (w (window-list))
|
|
(when (string-prefix-p "*eldoc" (buffer-name (window-buffer w)))
|
|
(quit-window nil w))))
|
|
(advice-add 'evil-force-normal-state :after #'my/eldoc-close)
|