diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2013-08-12 00:31:12 +0200 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2013-08-12 00:31:12 +0200 |
commit | ceb418aff619db01c5ed1201abff75df41a35102 (patch) | |
tree | f7a6e36526e9b8190e5f0cd244ddc7092b6bf777 /elisp/geiser-repl.el | |
parent | 7fdc0f5aa049188043387608e92d4f3958c6cdeb (diff) | |
download | geiser-chez-ceb418aff619db01c5ed1201abff75df41a35102.tar.gz geiser-chez-ceb418aff619db01c5ed1201abff75df41a35102.tar.bz2 |
Newish emacsen don't have comint-last-prompt-overlay
... so we have to check if it's defined and, in its defect, use the
new shiny comint-last-prompt. A bit of refactoring resulted.
Diffstat (limited to 'elisp/geiser-repl.el')
-rw-r--r-- | elisp/geiser-repl.el | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index f0c495e..8a3f6a6 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -266,6 +266,23 @@ module command as a string") (geiser-repl--read-impl prompt))) +;;; Prompt &co. + +(defun geiser-repl--last-prompt-end () + (cond ((and (boundp 'comint-last-prompt) (markerp (cdr comint-last-prompt))) + (marker-position (cdr comint-last-prompt))) + ((and (boundp 'comint-last-prompt-overlay) comint-last-prompt-overlay) + (overlay-end comint-last-prompt-overlay)) + (t (save-excursion (geiser-repl--bol) (point))))) + +(defun geiser-repl--last-prompt-start () + (cond ((and (boundp 'comint-last-prompt) (markerp (car comint-last-prompt))) + (marker-position (car comint-last-prompt))) + ((and (boundp 'comint-last-prompt-overlay) comint-last-prompt-overlay) + (overlay-start comint-last-prompt-overlay)) + (t (save-excursion (geiser-repl--bol) (point))))) + + ;;; REPL connections (make-variable-buffer-local @@ -369,12 +386,9 @@ module command as a string") (defun geiser-repl--is-debugging () (let ((dp (geiser-con--connection-debug-prompt geiser-repl--connection))) (and dp - comint-last-prompt-overlay (save-excursion - (goto-char (overlay-start comint-last-prompt-overlay)) - (re-search-forward dp - (overlay-end comint-last-prompt-overlay) - t))))) + (goto-char (geiser-repl--last-prompt-start)) + (re-search-forward dp (geiser-repl--last-prompt-end) t))))) (defun geiser-repl--connection* () (let ((buffer (geiser-repl--set-up-repl geiser-impl--implementation))) @@ -489,8 +503,7 @@ module command as a string") (defun geiser-repl--beginning-of-defun () (save-restriction - (when comint-last-prompt-overlay - (narrow-to-region (overlay-end comint-last-prompt-overlay) (point))) + (narrow-to-region (geiser-repl--last-prompt-end) (point)) (let ((beginning-of-defun-function nil)) (beginning-of-defun)))) @@ -512,16 +525,6 @@ module command as a string") (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 () (save-restriction (narrow-to-region (geiser-repl--last-prompt-end) (point-max)) |