46 lines
1.3 KiB
EmacsLisp
46 lines
1.3 KiB
EmacsLisp
;;; syd-lang-idris2.el -*- lexical-binding: t; -*-
|
|
|
|
(require 'syd-handle-repl)
|
|
(require 'syd-handle-lookup)
|
|
|
|
(defun syd-idris2-open-repl ()
|
|
(interactive)
|
|
(idris2-repl-buffer))
|
|
|
|
(use-package idris2-mode
|
|
:mode "\\.idr\\'"
|
|
:straight (:type git
|
|
:host github
|
|
:repo "idris-community/idris2-mode")
|
|
:config
|
|
;; Fixes lag when editing idris code with Evil. See
|
|
;; https://github.com/idris-community/idris2-mode?tab=readme-ov-file#doom-emacs
|
|
(syd-defadvice syd-idris2--fix-evil-motion-range (fn &rest args)
|
|
"Like `evil-motion-range', but override field-beginning for performance.
|
|
See `https://github.com/ProofGeneral/PG/issues/427'."
|
|
:around #'evil-motion-range
|
|
(cl-letf (((symbol-function 'field-beginning)
|
|
(lambda (&rest args) 1)))
|
|
(apply fn args)))
|
|
|
|
(add-hook 'idris2-mode-hook #'lsp)
|
|
|
|
(general-define-key
|
|
:keymaps 'idris2-mode-map
|
|
:states '(normal visual motion emacs insert)
|
|
:major-modes t
|
|
:prefix syd-localleader-key
|
|
:non-normal-prefix syd-alt-localleader-key
|
|
"l" #'idris2-load-file)
|
|
|
|
(set-repl-handler! 'idris2-mode
|
|
#'syd-idris2-open-repl)
|
|
|
|
(set-popup-rules!
|
|
`((,(rx bol "*idris2-notes*" eol)
|
|
:ttl nil)
|
|
(,(rx bol "*idris2-holes" eol)
|
|
:ttl nil :quit t :vslot -5 :height 7))))
|
|
|
|
(provide 'syd-lang-idris2)
|