Files
sydnix/modules/home/users/crumb/emacs/modules/lang/syd-lang-idris2.el
Madeleine Sydney 4464e7cec1 wip
2025-03-16 12:08:55 -06:00

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)