From: Chong Yidong Date: Wed, 30 Jun 2010 22:43:52 +0000 (-0400) Subject: Don't always set ruler-mode-header-line-format-old (Bug#5370). X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~51^2~89 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=dc9a226c7a4cbfa8909f493ee22cf31e0bb425f7;p=emacs.git 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). --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ddef9202be3..e32ff83ff51 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2010-06-30 Chong Yidong + + * 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). + 2010-06-29 Chong Yidong * 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 @@ -549,22 +549,38 @@ This variable is expected to be made buffer-local by modes.") "`header-line-format' used in ruler mode. Call `ruler-mode-ruler-function' to compute the ruler value.") +;;;###autoload +(defvar ruler-mode nil + "Non-nil if Ruler mode is enabled. +Use the command `ruler-mode' to change this variable.") +(make-variable-buffer-local 'ruler-mode) + +(defun ruler--save-header-line-format () + "Install the header line format for Ruler mode. +Unless if Ruler mode is already enabled, save the old header line +format first." + (when enable + (when (and (not ruler-mode) + (local-variable-p 'header-line-format) + (not (local-variable-p 'ruler-mode-header-line-format-old))) + (set (make-local-variable 'ruler-mode-header-line-format-old) + header-line-format)) + (setq header-line-format ruler-mode-header-line-format))) + ;;;###autoload (define-minor-mode ruler-mode - "Display a ruler in the header line if ARG > 0." + "Toggle Ruler mode. +In Ruler mode, Emacs displays a ruler in the header line." nil nil ruler-mode-map :group 'ruler-mode + :variable (ruler-mode + . (lambda (enable) + (when enable + (ruler--save-header-line-format)) + (setq ruler-mode enable))) (if ruler-mode - (progn - ;; When `ruler-mode' is on save previous header line format - ;; and install the ruler header line format. - (when (and (local-variable-p 'header-line-format) - (not (local-variable-p 'ruler-mode-header-line-format-old))) - (set (make-local-variable 'ruler-mode-header-line-format-old) - header-line-format)) - (setq header-line-format ruler-mode-header-line-format) - (add-hook 'post-command-hook 'force-mode-line-update nil t)) + (add-hook 'post-command-hook 'force-mode-line-update nil t) ;; When `ruler-mode' is off restore previous header line format if ;; the current one is the ruler header line format. (when (eq header-line-format ruler-mode-header-line-format)