From 1ccb3110be45a9492a53bc149ff7f824dc132479 Mon Sep 17 00:00:00 2001 From: Jay Kamat Date: Sat, 18 Nov 2017 16:41:34 -0500 Subject: [PATCH] Fix erc keep-place module with new defaults (bug#29111) Allows erc keep-place to continue working with switch-to-buffer-preserve-window-point set to t, the new default. --- lisp/erc/erc-goodies.el | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el index a655d48a6a..8906da1e47 100644 --- a/lisp/erc/erc-goodies.el +++ b/lisp/erc/erc-goodies.el @@ -147,7 +147,19 @@ erc-keep-place (>= (point) erc-insert-marker)) (deactivate-mark) (goto-char (erc-beg-of-input-line)) - (forward-line -1))) + (forward-line -1) + ;; if `switch-to-buffer-preserve-window-point' is set, + ;; we cannot rely on point being saved, and must commit + ;; it to window-prev-buffers. + (when switch-to-buffer-preserve-window-point + (dolist (frame (frame-list)) + (walk-window-tree + (lambda (window) + (let ((prev (assq (current-buffer) + (window-prev-buffers window)))) + (when prev + (setf (nth 2 prev) (point-marker))))) + frame nil 'nominibuf))))) ;;; Distinguish non-commands (defvar erc-noncommands-list '(erc-cmd-ME -- 2.11.0