From ceb418aff619db01c5ed1201abff75df41a35102 Mon Sep 17 00:00:00 2001
From: Jose Antonio Ortega Ruiz <jao@gnu.org>
Date: Mon, 12 Aug 2013 00:31:12 +0200
Subject: 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.
---
 elisp/geiser-repl.el | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

(limited to 'elisp')

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
@@ -265,6 +265,23 @@ module command as a string")
       (and (eq major-mode 'geiser-repl-mode) geiser-impl--implementation)
       (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
 
@@ -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))
-- 
cgit v1.2.3