aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2010-06-30 18:43:52 -0400
committerChong Yidong2010-06-30 18:43:52 -0400
commitdc9a226c7a4cbfa8909f493ee22cf31e0bb425f7 (patch)
tree29f04d74ceddb441a3bc0ba96a451f461fb355a7
parentbf93533944382aec92b21cd4bfed01a263fbabd0 (diff)
downloademacs-dc9a226c7a4cbfa8909f493ee22cf31e0bb425f7.tar.gz
emacs-dc9a226c7a4cbfa8909f493ee22cf31e0bb425f7.zip
Don't always set ruler-mode-header-line-format-old (Bug#5370).
* ruler-mode.el (ruler--save-header-line-format): New fun. (ruler-mode): Use it as a setter function, so as not to overwrite ruler-mode-header-line-format-old if Ruler mode is on (Bug#5370).
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/ruler-mode.el36
2 files changed, 32 insertions, 10 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ddef9202be3..e32ff83ff51 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
12010-06-30 Chong Yidong <cyd@stupidchicken.com>
2
3 * ruler-mode.el (ruler--save-header-line-format): New fun.
4 (ruler-mode): Use it as a setter function, so as not to overwrite
5 ruler-mode-header-line-format-old if Ruler mode is on (Bug#5370).
6
12010-06-29 Chong Yidong <cyd@stupidchicken.com> 72010-06-29 Chong Yidong <cyd@stupidchicken.com>
2 8
3 * vc/vc.el (vc-deduce-backend): New fun. Handle diff buffers. 9 * vc/vc.el (vc-deduce-backend): New fun. Handle diff buffers.
diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el
index e3895efac8a..c8ae2afc0d5 100644
--- a/lisp/ruler-mode.el
+++ b/lisp/ruler-mode.el
@@ -550,21 +550,37 @@ This variable is expected to be made buffer-local by modes.")
550Call `ruler-mode-ruler-function' to compute the ruler value.") 550Call `ruler-mode-ruler-function' to compute the ruler value.")
551 551
552;;;###autoload 552;;;###autoload
553(defvar ruler-mode nil
554 "Non-nil if Ruler mode is enabled.
555Use the command `ruler-mode' to change this variable.")
556(make-variable-buffer-local 'ruler-mode)
557
558(defun ruler--save-header-line-format ()
559 "Install the header line format for Ruler mode.
560Unless if Ruler mode is already enabled, save the old header line
561format first."
562 (when enable
563 (when (and (not ruler-mode)
564 (local-variable-p 'header-line-format)
565 (not (local-variable-p 'ruler-mode-header-line-format-old)))
566 (set (make-local-variable 'ruler-mode-header-line-format-old)
567 header-line-format))
568 (setq header-line-format ruler-mode-header-line-format)))
569
570;;;###autoload
553(define-minor-mode ruler-mode 571(define-minor-mode ruler-mode
554 "Display a ruler in the header line if ARG > 0." 572 "Toggle Ruler mode.
573In Ruler mode, Emacs displays a ruler in the header line."
555 nil nil 574 nil nil
556 ruler-mode-map 575 ruler-mode-map
557 :group 'ruler-mode 576 :group 'ruler-mode
577 :variable (ruler-mode
578 . (lambda (enable)
579 (when enable
580 (ruler--save-header-line-format))
581 (setq ruler-mode enable)))
558 (if ruler-mode 582 (if ruler-mode
559 (progn 583 (add-hook 'post-command-hook 'force-mode-line-update nil t)
560 ;; When `ruler-mode' is on save previous header line format
561 ;; and install the ruler header line format.
562 (when (and (local-variable-p 'header-line-format)
563 (not (local-variable-p 'ruler-mode-header-line-format-old)))
564 (set (make-local-variable 'ruler-mode-header-line-format-old)
565 header-line-format))
566 (setq header-line-format ruler-mode-header-line-format)
567 (add-hook 'post-command-hook 'force-mode-line-update nil t))
568 ;; When `ruler-mode' is off restore previous header line format if 584 ;; When `ruler-mode' is off restore previous header line format if
569 ;; the current one is the ruler header line format. 585 ;; the current one is the ruler header line format.
570 (when (eq header-line-format ruler-mode-header-line-format) 586 (when (eq header-line-format ruler-mode-header-line-format)