From 122564229f068b13493db75b4521017e242f007c Mon Sep 17 00:00:00 2001 From: jao Date: Sun, 21 Nov 2021 18:01:55 +0000 Subject: New geiser-mode command: geiser-exit-repl Useful specially for REPLs including a debugger, where you might want to exit it from a scheme buffer. Bound by default to C-c C-q. --- elisp/geiser-mode.el | 6 ++++++ elisp/geiser-repl.el | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'elisp') diff --git a/elisp/geiser-mode.el b/elisp/geiser-mode.el index 4a524fd..4af9095 100644 --- a/elisp/geiser-mode.el +++ b/elisp/geiser-mode.el @@ -273,6 +273,11 @@ With prefix, try to enter the current buffer's module." (goto-char (point-max)) (pop-to-buffer b))) +(defun geiser-exit-repl () + "Issues the command `geiser-repl-exit' in this buffer's associated REPL." + (interactive) + (geiser-repl--call-in-repl #'geiser-repl-exit)) + ;;; Keys: @@ -312,6 +317,7 @@ With prefix, try to enter the current buffer's module." ("Switch to REPL and enter module" "\C-c\C-a" geiser-mode-switch-to-repl-and-enter) ("Set Scheme..." "\C-c\C-s" geiser-set-scheme) + ("Exit REPL or debugger" "\C-c\C-q" geiser-exit-repl) -- ("Edit symbol at point" "\M-." geiser-edit-symbol-at-point :enable (geiser--symbol-at-point)) diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index 73a2f39..6f28ae8 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -1,6 +1,6 @@ ;;; geiser-repl.el --- Geiser's REPL -;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2015, 2016, 2018, 2019, 2020 Jose Antonio Ortega Ruiz +;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2015, 2016, 2018, 2019, 2020, 2021 Jose Antonio Ortega Ruiz ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the Modified BSD License. You should @@ -956,6 +956,11 @@ over a Unix-domain socket." (defun geiser-repl--get-arglist (impl) (or geiser-repl--arglist (geiser-repl--arglist impl))) +(defun geiser-repl--call-in-repl (cmd) + (when-let (b (geiser-repl--repl/impl geiser-impl--implementation)) + (save-window-excursion + (with-current-buffer b (funcall cmd))))) + (defun switch-to-geiser (&optional ask impl buffer) "Switch to running Geiser REPL. -- cgit v1.2.3