diff options
| author | Chong Yidong | 2010-06-30 18:43:52 -0400 |
|---|---|---|
| committer | Chong Yidong | 2010-06-30 18:43:52 -0400 |
| commit | dc9a226c7a4cbfa8909f493ee22cf31e0bb425f7 (patch) | |
| tree | 29f04d74ceddb441a3bc0ba96a451f461fb355a7 | |
| parent | bf93533944382aec92b21cd4bfed01a263fbabd0 (diff) | |
| download | emacs-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/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/ruler-mode.el | 36 |
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 @@ | |||
| 1 | 2010-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 | |||
| 1 | 2010-06-29 Chong Yidong <cyd@stupidchicken.com> | 7 | 2010-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.") | |||
| 550 | Call `ruler-mode-ruler-function' to compute the ruler value.") | 550 | Call `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. | ||
| 555 | Use 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. | ||
| 560 | Unless if Ruler mode is already enabled, save the old header line | ||
| 561 | format 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. |
| 573 | In 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) |