From 1649bcb91781d19be3494e682a0d6e133ca30a87 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Sun, 31 Oct 2010 19:47:40 +0100 Subject: REPL: RET on an error jumps to it --- elisp/geiser-repl.el | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'elisp') diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index 900ba16..c5d6543 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -463,13 +463,20 @@ With a prefix argument, force exit by killing the scheme process." (insert "\n") (lisp-indent-line))) +(defun geiser-repl--last-prompt-end () + (if comint-last-prompt-overlay + (overlay-end comint-last-prompt-overlay) + (save-excursion (geiser-repl--bol) (point)))) + +(defun geiser-repl--last-prompt-start () + (if comint-last-prompt-overlay + (overlay-start comint-last-prompt-overlay) + (save-excursion (geiser-repl--bol) (point)))) + (defun geiser-repl--nesting-level () - (let ((begin (if comint-last-prompt-overlay - (overlay-end comint-last-prompt-overlay) - (save-excursion (geiser-repl--bol) (point))))) - (save-restriction - (narrow-to-region begin (point-max)) - (geiser-syntax--nesting-level)))) + (save-restriction + (narrow-to-region (geiser-repl--last-prompt-end) (point-max)) + (geiser-syntax--nesting-level))) (defun geiser-repl--send-input () (let* ((proc (get-buffer-process (current-buffer))) @@ -487,13 +494,14 @@ With a prefix argument, force exit by killing the scheme process." (defun geiser-repl--maybe-send () (interactive) (let ((p (point))) - (end-of-line) - (if (<= (geiser-repl--nesting-level) 0) - (geiser-repl--send-input) - (goto-char p) - (if geiser-repl-auto-indent-p - (geiser-repl--newline-and-indent) - (insert "\n"))))) + (cond ((< p (geiser-repl--last-prompt-start)) + (ignore-errors (compile-goto-error))) + ((progn (end-of-line) (<= (geiser-repl--nesting-level) 0)) + (geiser-repl--send-input)) + (t (goto-char p) + (if geiser-repl-auto-indent-p + (geiser-repl--newline-and-indent) + (insert "\n")))))) (define-derived-mode geiser-repl-mode comint-mode "REPL" "Major mode for interacting with an inferior scheme repl process. -- cgit v1.2.3 From 472a01715e740b1acebe2e3c37089da4dc2eccfe Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Sun, 31 Oct 2010 20:03:16 +0100 Subject: REPL: TAB when away from last prompt goes to next error --- elisp/geiser-repl.el | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'elisp') diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index c5d6543..57111f4 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -12,6 +12,7 @@ (require 'geiser-company) (require 'geiser-autodoc) (require 'geiser-edit) +(require 'geiser-completion) (require 'geiser-impl) (require 'geiser-eval) (require 'geiser-connection) @@ -503,6 +504,12 @@ With a prefix argument, force exit by killing the scheme process." (geiser-repl--newline-and-indent) (insert "\n")))))) +(defun geiser-repl--tab (n) + (interactive "p") + (if (> (point) (geiser-repl--last-prompt-end)) + (geiser-completion--maybe-complete) + (compilation-next-error n))) + (define-derived-mode geiser-repl-mode comint-mode "REPL" "Major mode for interacting with an inferior scheme repl process. \\{geiser-repl-mode-map}" @@ -520,8 +527,6 @@ With a prefix argument, force exit by killing the scheme process." (geiser--save-msg (geiser-autodoc-mode 1))) (setq geiser-autodoc--inhibit-function 'geiser-con--is-debugging) (geiser-company--setup geiser-repl-company-p) - (setq geiser-smart-tab-mode-string "") - (geiser-smart-tab-mode t) ;; enabling compilation-shell-minor-mode without the annoying highlighter (compilation-setup t)) @@ -529,6 +534,7 @@ With a prefix argument, force exit by killing the scheme process." (define-key geiser-repl-mode-map "\C-m" 'geiser-repl--maybe-send) (define-key geiser-repl-mode-map [return] 'geiser-repl--maybe-send) (define-key geiser-repl-mode-map "\C-j" 'geiser-repl--newline-and-indent) +(define-key geiser-repl-mode-map (kbd "TAB") 'geiser-repl--tab) (define-key geiser-repl-mode-map "\C-a" 'geiser-repl--bol) (define-key geiser-repl-mode-map (kbd "") 'geiser-repl--bol) -- cgit v1.2.3