summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2014-05-31 23:52:26 +0200
committerJose Antonio Ortega Ruiz <jao@gnu.org>2014-06-01 00:18:40 +0200
commitc961e6097c896b952bf6ccbb8ebbb794c8d50294 (patch)
tree12ea9e627c53c46935478cf088a73c1c9140e9c9 /elisp
parent9ff03facb2ea1e0a6b320f603dfd7e0e787d9593 (diff)
downloadgeiser-chez-c961e6097c896b952bf6ccbb8ebbb794c8d50294.tar.gz
geiser-chez-c961e6097c896b952bf6ccbb8ebbb794c8d50294.tar.bz2
Almost redundant REPL command to interrupt evaluation
Works almost identically to the stock C-c C-c, with just marginally better output aaand being well behaved when interrupting infinitely looping functions such as (define (f) (newline) (let loop () (loop))) -- cf. issue #29 on github. We like it so much that it replaces the old one.
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-repl.el8
1 files changed, 8 insertions, 0 deletions
diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el
index adc8872..9ecbd25 100644
--- a/elisp/geiser-repl.el
+++ b/elisp/geiser-repl.el
@@ -452,6 +452,11 @@ module command as a string")
(let ((comint-input-filter (lambda (x) nil)))
(comint-send-input nil t))))
+(defun geiser-repl-interrupt ()
+ (interactive)
+ (when (get-buffer-process (current-buffer))
+ (interrupt-process nil comint-ptyp)))
+
;;; REPL history
@@ -685,6 +690,9 @@ buffer."
("Previous input" "\C-c\M-p" comint-previous-input)
("Next input" "\C-c\M-n" comint-next-input)
--
+ ("Interrupt evaluation" ("\C-c\C-k" "\C-c\C-c" "\C-ck")
+ geiser-repl-interrupt)
+ --
(mode "Autodoc mode" ("\C-c\C-da" "\C-c\C-d\C-a") geiser-autodoc-mode)
("Symbol documentation" ("\C-c\C-dd" "\C-c\C-d\C-d")
geiser-doc-symbol-at-point