>From d50e46f53dd09f9ab133ef3ca048ec3cd8023bdf Mon Sep 17 00:00:00 2001 From: Jeremy Compostella Date: Thu, 19 Jan 2012 20:21:58 +0100 Subject: [PATCH] window.el: Improve mark management First, `mark-active' save was missing in the `window-state-get' function. Second, `window-state-put' restore the mark without taking into account the previously set mark(s). It looks better to use `push-mark' instead of `set-mark'. Moreover it does not restore the active mark state which lead to an automatically active mark in restored buffer. Signed-off-by: Jeremy Compostella --- lisp/window.el | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/window.el b/lisp/window.el index 54e5ec9..6a2be23 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -3632,7 +3632,8 @@ specific buffers." (start . ,(if ignore start (copy-marker start))) ,@(when mark `((mark . ,(if ignore - mark (copy-marker mark)))))))))))) + mark (copy-marker mark))) + (mark-active . ,mark-active)))))))))) (tail (when (memq type '(vc hc)) (let (list) @@ -3816,10 +3817,10 @@ value can be also stored on disk and read back in a new session." (ignore-errors (set-window-start window (cdr (assq 'start state))) (set-window-point window (cdr (assq 'point state))) - ;; I'm not sure whether we should set the mark here, but maybe - ;; it can be used. (let ((mark (cdr (assq 'mark state)))) - (when mark (set-mark mark)))) + (when mark + (push-mark mark t) + (setq mark-active (cdr (assq 'mark-active state)))))) ;; Select window if it's the selected one. (when (cdr (assq 'selected state)) (select-window window))))))) -- 1.7.2.5