>From 7e995dbcbe22b95e793e64961a62346adf370af0 Mon Sep 17 00:00:00 2001 From: Andrii Kolomoiets Date: Wed, 25 Nov 2020 21:55:25 +0200 Subject: [PATCH] Keep point position in *eldoc* buffer * list/emacs-lisp/eldoc.el (eldoc--echo-area-substring): Use 'save-excursion' to keep point position in *eldoc* buffer --- lisp/emacs-lisp/eldoc.el | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index 78cb8f08c3..9f6cc65842 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -508,27 +508,28 @@ eldoc--format-doc-buffer (defun eldoc--echo-area-substring (available) "Given AVAILABLE lines, get buffer substring to display in echo area. Helper for `eldoc-display-in-echo-area'." - (let ((start (prog1 (progn - (goto-char (point-min)) - (skip-chars-forward " \t\n") - (point)) - (goto-char (line-end-position available)) - (skip-chars-backward " \t\n"))) - (truncated (save-excursion - (skip-chars-forward " \t\n") - (not (eobp))))) - (cond ((eldoc--echo-area-prefer-doc-buffer-p truncated) - nil) - ((and truncated - (> available 1) - eldoc-echo-area-display-truncation-message) - (goto-char (line-end-position 0)) - (concat (buffer-substring start (point)) - (format - "\n(Documentation truncated. Use `%s' to see rest)" - (substitute-command-keys "\\[eldoc-doc-buffer]")))) - (t - (buffer-substring start (point)))))) + (save-excursion + (let ((start (prog1 (progn + (goto-char (point-min)) + (skip-chars-forward " \t\n") + (point)) + (goto-char (line-end-position available)) + (skip-chars-backward " \t\n"))) + (truncated (save-excursion + (skip-chars-forward " \t\n") + (not (eobp))))) + (cond ((eldoc--echo-area-prefer-doc-buffer-p truncated) + nil) + ((and truncated + (> available 1) + eldoc-echo-area-display-truncation-message) + (goto-char (line-end-position 0)) + (concat (buffer-substring start (point)) + (format + "\n(Documentation truncated. Use `%s' to see rest)" + (substitute-command-keys "\\[eldoc-doc-buffer]")))) + (t + (buffer-substring start (point))))))) (defun eldoc--echo-area-prefer-doc-buffer-p (truncatedp) "Tell if display in the echo area should be skipped. -- 2.15.1