# HG changeset patch # User Richard M. Stallman # Date 1011739611 0 # Node ID 4e96369656bce875563db826cb5ed41cd988f1f3 # Parent 82930a88c1dd003e41f3ae75f37b48ff4817db7e (mode-line-copied-mode-name): New variable. (mode-line-mode-name): Don't modify mode-name itself! Instead, make a copy and reuse it. diff -r 82930a88c1dd -r 4e96369656bc lisp/bindings.el --- a/lisp/bindings.el Tue Jan 22 21:05:28 2002 +0000 +++ b/lisp/bindings.el Tue Jan 22 22:46:51 2002 +0000 @@ -316,28 +316,19 @@ (if binding (call-interactively binding))))) +(defvar mode-line-copied-mode-name nil + "A copy of `mode-name', with `help-echo' and `local-map' properties added.") + (defun mode-line-mode-name () "\ Return a string to display in the mode line for the current mode name." (when (stringp mode-name) - (let ((local-map (get-text-property 0 'local-map mode-name)) - (help-echo (get-text-property 0 'help-echo mode-name))) - ;; For correctness, we shouldn't modify mode-name. But adding some - ;; text-properties to those mode-name strings can't hurt, really, and - ;; furthermore, by doing it in-place, we make sure that we don't need to - ;; do the work over and over and over and .... -stef - (unless (and local-map help-echo) - (setq mode-name (copy-sequence mode-name))) - ;; Add `local-map' property if there isn't already one. - (unless (or local-map - (next-single-property-change 0 'local-map mode-name)) - (put-text-property 0 (length mode-name) - 'local-map mode-line-minor-mode-keymap mode-name) - ;; Add `help-echo' property if there isn't already one. - (unless (or help-echo - (next-single-property-change 0 'help-echo mode-name)) - (put-text-property 0 (length mode-name) 'help-echo - "mouse-3: minor mode menu" mode-name))))) - mode-name) + (if (equal mode-name mode-line-copied-mode-name) + mode-line-copied-mode-name + (setq mode-line-copied-mode-name + (propertize mode-name + 'local-map mode-line-minor-mode-keymap + 'help-echo "mouse-3: minor mode menu")))) + mode-line-copied-mode-name) (defmacro bound-and-true-p (var) "Return the value of symbol VAR if it is bound, else nil."