diff options
Diffstat (limited to 'elisp')
| -rw-r--r-- | elisp/geiser-connection.el | 8 | ||||
| -rw-r--r-- | elisp/geiser-repl.el | 52 | 
2 files changed, 27 insertions, 33 deletions
| diff --git a/elisp/geiser-connection.el b/elisp/geiser-connection.el index 9b98373..1068330 100644 --- a/elisp/geiser-connection.el +++ b/elisp/geiser-connection.el @@ -1,6 +1,6 @@  ;;; geiser-connection.el -- talking to a scheme process -;; Copyright (C) 2009, 2010, 2011, 2013 Jose Antonio Ortega Ruiz +;; Copyright (C) 2009, 2010, 2011, 2013, 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 @@ -92,11 +92,11 @@              (tq-queue-pop tq)))))))  (defun geiser-con--combined-prompt (prompt debug) -  (format "\\(%s%s\\)" prompt (if debug (format "\\|%s" debug) ""))) +  (if debug (format "\\(%s\\)\\|\\(%s\\)" prompt debug) prompt))  (defun geiser-con--connection-eot-re (prompt debug) -  (geiser-con--combined-prompt (format "\n%s" prompt) -                               (and debug (format "\n%s" debug)))) +  (geiser-con--combined-prompt (format "\n\\(%s\\)" prompt) +                               (and debug (format "\n\\(%s\\)" debug))))  (defun geiser-con--make-connection (proc prompt debug-prompt)    (list t diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index 6f28ae8..814c501 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -464,37 +464,31 @@ module command as a string")        (let ((font-lock-dont-widen t))          (font-lock-default-unfontify-region (point-min) (point-max)))))) -(defun geiser-repl--output-filter (txt) -  (let ((mark-output nil)) +(defun geiser-repl--find-output-region () +  (save-excursion +    (goto-char (point-max)) +    (re-search-backward comint-prompt-regexp) +    (move-to-column 0) +    (set-marker geiser-repl--last-output-end (point))      (save-excursion -      (goto-char (point-max)) -      (re-search-backward comint-prompt-regexp) -      ;; move to start of line to prevent accidentally marking a REPL prompt -      (move-to-column 0) -      ;; Only mark output which: -      ;; a) is not on the REPL output line -      ;; b) has at least one character -      ;; -      ;; This makes the magic number for distance 3 -- as the newline -      ;; after executing expression is also counted. This is due to the point -      ;; being set before comint-send-input. -      ;; -      ;; Restriction a) applies due to our inability to distinguish between -      ;; output from the REPL, and the REPL prompt output. -      (let ((distance (- (point) geiser-repl--last-output-start))) -        (when (> distance 2) -          (setq mark-output t) -          (set-marker geiser-repl--last-output-end (point))))) -    (when mark-output -      (with-silent-modifications -        (add-text-properties (1+ geiser-repl--last-output-start) -                             geiser-repl--last-output-end -                             `(read-only ,geiser-repl-read-only-output-p)) -        (geiser-repl--fontify-output-region geiser-repl--last-output-start -                                            geiser-repl--last-output-end) -        (geiser--font-lock-ensure geiser-repl--last-output-start -                                  geiser-repl--last-output-end)))) +      (when (re-search-backward comint-prompt-regexp nil t) +        (forward-line) +        (when (> (point) geiser-repl--last-output-start) +          (set-marker geiser-repl--last-output-start (point))))) +    (> (- geiser-repl--last-output-end geiser-repl--last-output-start) 2))) + +(defun geiser-repl--treat-output-region () +  (with-silent-modifications +    (add-text-properties (1- geiser-repl--last-output-start) +                         geiser-repl--last-output-end +                         `(read-only ,geiser-repl-read-only-output-p)) +    (geiser-repl--fontify-output-region geiser-repl--last-output-start +                                        geiser-repl--last-output-end) +    (geiser--font-lock-ensure geiser-repl--last-output-start +                              geiser-repl--last-output-end))) +(defun geiser-repl--output-filter (txt) +  (when (geiser-repl--find-output-region) (geiser-repl--treat-output-region))    (geiser-con--connection-update-debugging geiser-repl--connection txt)    (geiser-image--replace-images geiser-repl-inline-images-p                                  geiser-repl-auto-display-images-p) | 
