tools/eval: associate plist with repl handlers
Also consolidates all REPLs (opened through the :tools eval module) under one popup rule, which inhibits ESC from prematurely closing them (#1944), and cleans up after their buffers *only* if their handlers weren't specified to :persist, e.g. (set-repl-handler! 'some-mode #'some-repl-handler :persist t) Also standardized ESS's REPL commands.
This commit is contained in:
parent
e6094f262f
commit
0b67251159
9 changed files with 71 additions and 47 deletions
|
@ -17,8 +17,8 @@
|
|||
:hook (clojure-mode-local-vars . cider-mode)
|
||||
:init
|
||||
(after! clojure-mode
|
||||
(set-repl-handler! 'clojure-mode #'+clojure/open-repl)
|
||||
(set-repl-handler! 'clojurescript-mode #'+clojure/open-cljs-repl)
|
||||
(set-repl-handler! 'clojure-mode #'+clojure/open-repl :persist t)
|
||||
(set-repl-handler! 'clojurescript-mode #'+clojure/open-cljs-repl :persist t)
|
||||
(set-eval-handler! '(clojure-mode clojurescript-mode) #'cider-eval-region))
|
||||
:config
|
||||
(add-hook 'cider-mode-hook #'eldoc-mode)
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
;;; lang/ess/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defun +ess-repl-buffer (&optional start-args)
|
||||
"Returns an R/Julia REPL buffer."
|
||||
(defun +ess/open-julia-repl (&optional arg)
|
||||
"Open an ESS Julia REPL"
|
||||
(interactive "P")
|
||||
(pcase major-mode
|
||||
('ess-r-mode (run-ess-r start-args))
|
||||
('ess-julia-mode (run-ess-julia start-args))
|
||||
(_ (inferior-ess nil nil t)))
|
||||
(run-ess-julia arg)
|
||||
(current-buffer))
|
||||
|
||||
;;;###autoload
|
||||
(defun +ess/open-r-repl (&optional arg)
|
||||
"Open an ESS R REPL"
|
||||
(interactive "P")
|
||||
(run-ess-r arg)
|
||||
(current-buffer))
|
||||
|
|
|
@ -21,7 +21,8 @@
|
|||
ess-default-style 'DEFAULT
|
||||
ess-history-directory (expand-file-name "ess-history/" doom-cache-dir))
|
||||
|
||||
(set-repl-handler! '(ess-r-mode ess-julia-mode) #'+ess-repl-buffer)
|
||||
(set-repl-handler! 'ess-r-mode #'+ess/open-r-repl)
|
||||
(set-repl-handler! 'ess-julia-mode #'+ess/open-julia-repl)
|
||||
(set-lookup-handlers! '(ess-r-mode ess-julia-mode)
|
||||
:documentation #'ess-display-help-on-object)
|
||||
|
||||
|
|
|
@ -21,19 +21,9 @@
|
|||
(set-file-template! 'haskell-mode
|
||||
:trigger #'haskell-auto-insert-module-template
|
||||
:project t)
|
||||
(set-repl-handler! '(haskell-mode
|
||||
haskell-cabal-mode
|
||||
literate-haskell-mode)
|
||||
#'+haskell/open-repl)
|
||||
|
||||
;; Prevent the 'Kill the whole session (y or n)?' prompt caused by the popup
|
||||
;; manager auto-killing haskell-interactive-mode's popup buffer (and process)
|
||||
;; by settings :ttl to nil.
|
||||
(set-popup-rule!
|
||||
(lambda (bname _action)
|
||||
(eq (buffer-local-value 'major-mode (get-buffer bname))
|
||||
'haskell-interactive-mode))
|
||||
:select t :ttl nil :quit nil)
|
||||
(set-repl-handler!
|
||||
'(haskell-mode haskell-cabal-mode literate-haskell-mode)
|
||||
#'+haskell/open-repl :persist t)
|
||||
|
||||
(add-hook! 'haskell-mode-hook
|
||||
#'haskell-collapse-mode ; support folding haskell code blocks
|
||||
|
|
|
@ -21,7 +21,7 @@ called.")
|
|||
(setq python-environment-directory doom-cache-dir
|
||||
python-indent-guess-indent-offset-verbose nil)
|
||||
:config
|
||||
(set-repl-handler! 'python-mode #'+python/open-repl)
|
||||
(set-repl-handler! 'python-mode #'+python/open-repl :persist t)
|
||||
(set-docsets! 'python-mode "Python 3" "NumPy" "SciPy")
|
||||
|
||||
(set-pretty-symbols! 'python-mode
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
(use-package! racket-mode
|
||||
:hook (racket-repl-mode . racket-unicode-input-method-enable)
|
||||
:config
|
||||
(set-popup-rule! "^\\*Racket REPL" :size 10 :select t)
|
||||
(set-repl-handler! 'racket-mode #'+racket/open-repl)
|
||||
(set-lookup-handlers! 'racket-mode
|
||||
:definition #'racket-visit-definition
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue