]> git.eshelyaron.com Git - emacs.git/commitdiff
Make mode line help-echo visible for unibyte buffers.
authorChong Yidong <cyd@gnu.org>
Sun, 3 Jun 2012 10:23:49 +0000 (18:23 +0800)
committerChong Yidong <cyd@gnu.org>
Sun, 3 Jun 2012 10:23:49 +0000 (18:23 +0800)
* src/xdisp.c (decode_mode_spec_coding): Display a space for a unibyte
buffer.

* lisp/bindings.el (mode-line-mule-info-help-echo)
(mode-line-read-only-help-echo, mode-line-modified-help-echo):
New functions.
(mode-line-mule-info, mode-line-modified): Use them.
(mode-line-eol-desc, propertized-buffer-identification):
Consistency fixes for help text.

Fixes: debbugs:11226
etc/NEWS
lisp/ChangeLog
lisp/bindings.el
src/ChangeLog
src/xdisp.c

index 3ffbbd24d45a36478a1dcb921223937c2a3d1484..c24a8fbdfc6c9e70e21b76ef9ef6f3263150b551 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -87,6 +87,12 @@ to nil.  Use with caution, and only if you really need to.
 ** Using "unibyte: t" in Lisp source files is obsolete.
 Use "coding: raw-text" instead.
 
+** Mode line changes
+
+*** New option `mode-line-default-help-echo' specifies the help text
+(shown in a tooltip or in the echo area) for any part of the mode line
+that does not have its own specialized help text.
+
 \f
 * Editing Changes in Emacs 24.2
 
index 5a3b1d3926d1218c896de36cec4e2f215ec22dc2..5ecd949d4c15420f09565c6966f6077ed49f985c 100644 (file)
@@ -7,6 +7,11 @@
        (mode-line-modes, mode-line-position): Move the default value to
        the variable definition.
        (mode-line-default-help-echo): New defcustom.
+       (mode-line-mule-info-help-echo, mode-line-read-only-help-echo)
+       (mode-line-modified-help-echo): New functions.
+       (mode-line-mule-info, mode-line-modified): Use them.
+       (mode-line-eol-desc, propertized-buffer-identification):
+       Consistency fixes for help text.
 
 2012-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 
index 65dd68a4447a37adfc3fe87902fdce0813fd9236..8e6c94466cf46593b1cf0961b8a8c9f24f359ebb 100644 (file)
@@ -111,7 +111,7 @@ corresponding to the mode line clicked."
       (setq desc
            (propertize
             mnemonic
-            'help-echo (format "End-of-line style: %s\nmouse-1 to cycle"
+            'help-echo (format "End-of-line style: %s\nmouse-1: Cycle"
                                (if (eq eol 0) "Unix-style LF"
                                  (if (eq eol 1) "DOS-style CRLF"
                                    (if (eq eol 2) "Mac-style CR"
@@ -148,6 +148,16 @@ the mode line, except that if there is a memory-full message, it
 is displayed first.")
 (put 'mode-line-front-space 'risky-local-variable t)
 
+(defun mode-line-mule-info-help-echo (window _object _point)
+  "Return help text specifying WINDOW's buffer coding system."
+  (with-current-buffer (window-buffer window)
+    (if buffer-file-coding-system
+       (format "Buffer coding system (%s): %s
+mouse-1: Describe coding system"
+               (if enable-multibyte-characters "multi-byte" "unibyte")
+               (symbol-name buffer-file-coding-system))
+      "Buffer coding system: none specified")))
+
 (defvar mode-line-mule-info
   `(""
     (current-input-method
@@ -162,31 +172,16 @@ mouse-3: Describe current input method"))
                  mouse-face mode-line-highlight))
     ,(propertize
       "%z"
-      'help-echo
-      (lambda (window _object _point)
-       (with-current-buffer (window-buffer window)
-         ;; Don't show this tip if the coding system is nil,
-         ;; it reads like a bug, and is not useful anyway.
-         (when buffer-file-coding-system
-           (format "Buffer coding system %s\nmouse-1: describe coding system"
-                   (if enable-multibyte-characters
-                       (concat "(multi-byte): "
-                               (symbol-name buffer-file-coding-system))
-                     (concat "(unibyte): "
-                             (symbol-name buffer-file-coding-system)))))))
+      'help-echo 'mode-line-mule-info-help-echo
       'mouse-face 'mode-line-highlight
       'local-map mode-line-coding-system-map)
     (:eval (mode-line-eol-desc)))
-  "Mode line construct for displaying information of multilingual environment.
+  "Mode line construct to report the multilingual environment.
 Normally it displays current input method (if any activated) and
 mnemonics of the following coding systems:
   coding system for saving or writing the current buffer
-  coding system for keyboard input (if Emacs is running on terminal)
-  coding system for terminal output (if Emacs is running on terminal)"
-  ;; Currently not:
-  ;;  coding system for decoding output of buffer process (if any)
-  ;;  coding system for encoding text to send to buffer process (if any)."
-)
+  coding system for keyboard input (on a text terminal)
+  coding system for terminal output (on a text terminal)")
 ;;;###autoload
 (put 'mode-line-mule-info 'risky-local-variable t)
 (make-variable-buffer-local 'mode-line-mule-info)
@@ -199,29 +194,29 @@ mnemonics of the following coding systems:
 ;;;###autoload
 (put 'mode-line-client 'risky-local-variable t)
 
+(defun mode-line-read-only-help-echo (window _object _point)
+  "Return help text specifying WINDOW's buffer read-only status."
+  (format "Buffer is %s\nmouse-1: Toggle"
+         (if (buffer-local-value 'buffer-read-only (window-buffer window))
+             "read-only"
+           "writable")))
+
+(defun mode-line-modified-help-echo (window _object _point)
+  "Return help text specifying WINDOW's buffer modification status."
+  (format "Buffer is %smodified\nmouse-1: Toggle modification state"
+         (if (buffer-modified-p (window-buffer window)) "" "not ")))
+
 (defvar mode-line-modified
   (list (propertize
         "%1*"
-        'help-echo (purecopy (lambda (window _object _point)
-                               (format "Buffer is %s\nmouse-1 toggles"
-                                       (save-selected-window
-                                         (select-window window)
-                                         (if buffer-read-only
-                                             "read-only"
-                                           "writable")))))
+        'help-echo 'mode-line-read-only-help-echo
         'local-map (purecopy (make-mode-line-mouse-map
                               'mouse-1
                               #'mode-line-toggle-read-only))
         'mouse-face 'mode-line-highlight)
        (propertize
         "%1+"
-        'help-echo  (purecopy (lambda (window _object _point)
-                                (format "Buffer is %sodified\nmouse-1 toggles modified state"
-                                        (save-selected-window
-                                          (select-window window)
-                                          (if (buffer-modified-p)
-                                            "m"
-                                          "not m")))))
+        'help-echo 'mode-line-modified-help-echo
         'local-map (purecopy (make-mode-line-mouse-map
                               'mouse-1 #'mode-line-toggle-modified))
         'mouse-face 'mode-line-highlight))
@@ -312,7 +307,7 @@ mouse-1: Display minor mode menu\n\
 mouse-2: Show help for minor mode\n\
 mouse-3: Toggle minor modes"
                        local-map ,mode-line-minor-mode-keymap)
-         (propertize "%n" 'help-echo "mouse-2: Remove narrowing from the current buffer"
+         (propertize "%n" 'help-echo "mouse-2: Remove narrowing from buffer"
                      'mouse-face 'mode-line-highlight
                      'local-map (make-mode-line-mouse-map
                                  'mouse-2 #'mode-line-widen))
@@ -401,9 +396,8 @@ text properties for face, help-echo, and local-map to it."
   (list (propertize fmt
                    'face 'mode-line-buffer-id
                    'help-echo
-                   (purecopy "Buffer name\n\
-mouse-1: previous buffer\n\
-mouse-3: next buffer")
+                   (purecopy "Buffer name
+mouse-1: Previous buffer\nmouse-3: Next buffer")
                    'mouse-face 'mode-line-highlight
                    'local-map mode-line-buffer-identification-keymap)))
 
index c0098445cb820d6883c77b23409a41eb9b7e720f..4eaf2d49f36b464e330010fb78f1da64e5079b47 100644 (file)
@@ -1,3 +1,8 @@
+2012-06-03  Chong Yidong  <cyd@gnu.org>
+
+       * xdisp.c (decode_mode_spec_coding): Display a space for a unibyte
+       buffer (Bug#11226).
+
 2012-06-03  Chong Yidong  <cyd@gnu.org>
 
        * xdisp.c (calc_pixel_width_or_height): Use Fbuffer_local_value.
index 8a1d83dc8e6907933f57687c4e2af52286a5772d..f01c86b2a071b1f387687fc06ec2cbb90509dfa5 100644 (file)
@@ -21012,8 +21012,7 @@ decode_mode_spec_coding (Lisp_Object coding_system, register char *buf, int eol_
 
   if (!VECTORP (val))          /* Not yet decided.  */
     {
-      if (multibyte)
-       *buf++ = '-';
+      *buf++ = multibyte ? '-' : ' ';
       if (eol_flag)
        eoltype = eol_mnemonic_undecided;
       /* Don't mention EOL conversion if it isn't decided.  */
@@ -21026,8 +21025,9 @@ decode_mode_spec_coding (Lisp_Object coding_system, register char *buf, int eol_
       attrs = AREF (val, 0);
       eolvalue = AREF (val, 2);
 
-      if (multibyte)
-       *buf++ = XFASTINT (CODING_ATTR_MNEMONIC (attrs));
+      *buf++ = multibyte
+       ? XFASTINT (CODING_ATTR_MNEMONIC (attrs))
+       : ' ';
 
       if (eol_flag)
        {