diff --git a/modules/lang/racket/README.org b/modules/lang/racket/README.org index b1698c92e..36121d9f4 100644 --- a/modules/lang/racket/README.org +++ b/modules/lang/racket/README.org @@ -21,7 +21,7 @@ This module provide integration for [[https://github.com/greghendershott/racket- This module has no dedicated maintainers. ** Module Flags -This module provides no flags. ++ =+xp= Enables the explore mode, which "analyzes expanded code to explain and explore." ** Plugins + [[https://github.com/greghendershott/racket-mode][racket-mode]] diff --git a/modules/lang/racket/autoload.el b/modules/lang/racket/autoload.el index 4c71bdf62..0b81a943f 100644 --- a/modules/lang/racket/autoload.el +++ b/modules/lang/racket/autoload.el @@ -10,3 +10,20 @@ (let ((buf (get-buffer "*Racket REPL*"))) (bury-buffer buf) buf))))) + +;;;###autoload +(defun +racket-lookup-documentation (thing) + "A `+lookup/documentation' handler for Racket." + (let ((buf (if racket-xp-mode + (racket-xp-describe thing) + (racket-repl-describe thing)))) + (when buf + (pop-to-buffer buf) + t))) + +;;;###autoload +(defun +racket-lookup-definition (_thing) + "A `+lookup/definition' handler for Racket." + (if racket-xp-mode + (call-interactively #'racket-xp-visit-definition) + (call-interactively #'racket-repl-visit-definition))) diff --git a/modules/lang/racket/config.el b/modules/lang/racket/config.el index c297b076c..c61393746 100644 --- a/modules/lang/racket/config.el +++ b/modules/lang/racket/config.el @@ -13,8 +13,8 @@ :config (set-repl-handler! 'racket-mode #'+racket/open-repl) (set-lookup-handlers! 'racket-mode - :definition #'racket-xp-visit-definition - :documentation #'racket-xp-describe) + :definition #'+racket-lookup-definition + :documentation #'+racket-lookup-documentation) (set-docsets! 'racket-mode "Racket") (set-pretty-symbols! 'racket-mode :lambda "lambda" @@ -27,9 +27,12 @@ #'rainbow-delimiters-mode #'highlight-quoted-mode) + (when (featurep! +xp) + (add-hook 'racket-mode-hook #'racket-xp-mode)) + (unless (or (featurep! :editor parinfer) (featurep! :editor lispy)) - (add-hook! 'racket-mode-hook #'racket-smart-open-bracket-mode)) + (add-hook 'racket-mode-hook #'racket-smart-open-bracket-mode)) (map! :localleader :map racket-mode-map