From 6f07dca7bff37c6ca7e98f38e8613445d3e8ea32 Mon Sep 17 00:00:00 2001 From: Andrii Kolomoiets Date: Sat, 5 Sep 2020 22:18:59 +0300 Subject: [PATCH] Save and restore point in ewoc-invalidate * lisp/emacs-lisp/ewoc.el (ewoc-invalidate): Use 'goto-char' instead of 'save-excursion'. * lisp/vc/vc-dir.el (vc-dir-update): Don't save/restore point on calling 'ewoc-invalidate'. --- lisp/emacs-lisp/ewoc.el | 5 +++-- lisp/vc/vc-dir.el | 6 +----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el index 78ada3e076..7244fd9359 100644 --- a/lisp/emacs-lisp/ewoc.el +++ b/lisp/emacs-lisp/ewoc.el @@ -461,9 +461,10 @@ ewoc-invalidate Delete current text first, thus effecting a \"refresh\"." (ewoc--set-buffer-bind-dll-let* ewoc ((pp (ewoc--pretty-printer ewoc))) - (save-excursion + (let ((p (point))) (dolist (node nodes) - (ewoc--refresh-node pp node dll))))) + (ewoc--refresh-node pp node dll)) + (goto-char p)))) (defun ewoc-goto-prev (ewoc arg) "Move point to the ARGth previous element in EWOC. diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index 6c219005ce..cdf8ab984e 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -451,11 +451,7 @@ vc-dir-update (setf (vc-dir-fileinfo->state (ewoc-data node)) (nth 1 entry)) (setf (vc-dir-fileinfo->extra (ewoc-data node)) (nth 2 entry)) (setf (vc-dir-fileinfo->needs-update (ewoc-data node)) nil) - ;; `ewoc-invalidate' will kill line and insert new text, - ;; let's keep point column. - (let ((p (point))) - (ewoc-invalidate vc-ewoc node) - (goto-char p))) + (ewoc-invalidate vc-ewoc node)) ;; If the state is nil, the file does not exist ;; anymore, so remember the entry so we can remove ;; it after we are done inserting all ENTRIES. -- 2.15.1