diff options
-rw-r--r-- | doc/cheat.texi | 7 | ||||
-rw-r--r-- | elisp/geiser-repl.el | 13 |
2 files changed, 18 insertions, 2 deletions
diff --git a/doc/cheat.texi b/doc/cheat.texi index 6087949..d83a540 100644 --- a/doc/cheat.texi +++ b/doc/cheat.texi @@ -110,6 +110,13 @@ @item M-. @tab geiser-edit-symbol-at-point @tab Edit identifier at point +@item TAB +@tab geiser-completion--tab +@tab Complete identifier at point or indent if none; away from +last prompt, go to next error in the buffer. +@item S-TAB (backtab) +@tab geiser-completion--previous-error +@tab Go to previous error in the REPL buffer @item TAB, M-TAB @tab geiser-completion--complete-symbol @tab Complete identifier at point diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index 57111f4..b84613b 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -505,11 +505,19 @@ With a prefix argument, force exit by killing the scheme process." (insert "\n")))))) (defun geiser-repl--tab (n) + "If we're after the last prompt, complete symbol or indent (if +there's no symbol at point). Otherwise, go to next error in the REPL +buffer." (interactive "p") (if (> (point) (geiser-repl--last-prompt-end)) (geiser-completion--maybe-complete) (compilation-next-error n))) +(defun geiser-repl--previous-error (n) + "Go to previous error in the REPL buffer." + (interactive "p") + (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}" @@ -535,13 +543,14 @@ With a prefix argument, force exit by killing the scheme process." (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 [backtab] 'geiser-repl--previous-error) (define-key geiser-repl-mode-map "\C-a" 'geiser-repl--bol) (define-key geiser-repl-mode-map (kbd "<home>") 'geiser-repl--bol) (geiser-menu--defmenu repl geiser-repl-mode-map - ("Complete symbol" ((kbd "TAB") (kbd "M-TAB")) - geiser-completion--complete-symbol :enable (symbol-at-point)) + ("Complete symbol" ((kbd "M-TAB")) + geiser-repl--tab :enable (symbol-at-point)) ("Complete module name" ((kbd "C-.") (kbd "M-`")) geiser-completion--complete-module :enable (symbol-at-point)) ("Edit symbol" "\M-." geiser-edit-symbol-at-point |