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:
Henrik Lissner 2019-10-23 21:39:19 -04:00
parent e6094f262f
commit 0b67251159
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
9 changed files with 71 additions and 47 deletions

View file

@ -8,6 +8,19 @@
;;
;; Packages
(set-popup-rule!
(lambda (bufname _)
(when (boundp '+eval-repl-mode)
(buffer-local-value '+eval-repl-mode (get-buffer bufname))))
:ttl (lambda (buf)
(unless (plist-get +eval-repl-plist :persist)
(when-let (process (get-buffer-process buf))
(set-process-query-on-exit-flag process nil)
(kill-process process)
(kill-buffer buf))))
:size 0.25 :quit nil)
(after! quickrun
(setq quickrun-focus-p nil)