emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master a27c892 1/2: Have what-cursor-position optionally show character


From: Robert Pluim
Subject: master a27c892 1/2: Have what-cursor-position optionally show character name
Date: Sat, 23 Nov 2019 12:53:59 -0500 (EST)

branch: master
commit a27c8929f2ab26dc0d27c8969857d3bc108747f5
Author: Robert Pluim <address@hidden>
Commit: Robert Pluim <address@hidden>

    Have what-cursor-position optionally show character name
    
    * lisp/simple.el (what-cursor-show-names): New defcustom, default nil.
    (what-cursor-position): Show character names if what-cursor-show-names
    is non-nil.
    
    * doc/emacs/basic.texi (Position Info): Add what-cursor-show-names
    description.
    
    * etc/NEWS: Announce what-cursor-show-names.
---
 doc/emacs/basic.texi |  9 +++++++++
 etc/NEWS             |  5 +++++
 lisp/simple.el       | 33 +++++++++++++++++++++++----------
 3 files changed, 37 insertions(+), 10 deletions(-)

diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index d0bd46c..5939d45 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -696,6 +696,15 @@ position as a percentage of the total.  After 
@samp{column=} is the
 horizontal position of point, in columns counting from the left edge
 of the window.
 
+@vindex what-cursor-show-names
+  If the user option @code{what-cursor-show-names} is non-@code{nil},
+the name of the character, as defined by the Unicode Character
+Database, is shown as well.  The part in parentheses would then become:
+
+@smallexample
+(99, #o143, #x63, LATIN SMALL LETTER C)
+@end smallexample
+
   If the buffer has been narrowed, making some of the text at the
 beginning and the end temporarily inaccessible, @kbd{C-x =} displays
 additional text describing the currently accessible range.  For
diff --git a/etc/NEWS b/etc/NEWS
index ad349b1..a872a8f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -232,6 +232,11 @@ To get the old, less-secure behavior, you can set the
 (Instead you can use Tramp methods to run root commands in a non-root Emacs.)
 
 +++
+** New user option 'what-cursor-show-names'.
+When non-nil, 'what-cursor-position' will show the name of the character
+in addition to the decimal/hex/octal representation.  Default nil.
+
++++
 ** New function 'network-lookup-address-info'.
 This does IPv4 and/or IPv6 address lookups on hostnames.
 
diff --git a/lisp/simple.el b/lisp/simple.el
index c61ccd5..2aac557 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1389,10 +1389,17 @@ absolute line number."
         (forward-line 0)
         (1+ (count-lines start (point)))))))
 
+(defcustom what-cursor-show-names nil
+  "Whether to show character names in `what-cursor-position'."
+  :type 'boolean
+  :version "27.1"
+  :group 'editing-basics)
+
 (defun what-cursor-position (&optional detail)
   "Print info on cursor position (on screen and within buffer).
-Also describe the character after point, and give its character code
-in octal, decimal and hex.
+Also describe the character after point, and give its character
+code in octal, decimal and hex.  If `what-cursor-show-names' is
+non-nil, additionally show the name of the character.
 
 For a non-ASCII multibyte character, also give its encoding in the
 buffer's selected coding system if the coding system encodes the
@@ -1404,6 +1411,12 @@ In addition, with prefix argument, show details about 
that character
 in *Help* buffer.  See also the command `describe-char'."
   (interactive "P")
   (let* ((char (following-char))
+         (char-name (and what-cursor-show-names
+                         (or (get-char-code-property char 'name)
+                             (get-char-code-property char 'old-name))))
+         (char-name-fmt (if char-name
+                            (format ", %s" char-name)
+                          ""))
         (bidi-fixer
          ;; If the character is one of LRE, LRO, RLE, RLO, it will
          ;; start a directional embedding, which could completely
@@ -1449,7 +1462,7 @@ in *Help* buffer.  See also the command `describe-char'."
            (setq coding (default-value 'buffer-file-coding-system)))
        (if (eq (char-charset char) 'eight-bit)
            (setq encoding-msg
-                 (format "(%d, #o%o, #x%x, raw-byte)" char char char))
+                 (format "(%d, #o%o, #x%x%s, raw-byte)" char char char 
char-name-fmt))
          ;; Check if the character is displayed with some `display'
          ;; text property.  In that case, set under-display to the
          ;; buffer substring covered by that property.
@@ -1468,17 +1481,17 @@ in *Help* buffer.  See also the command 
`describe-char'."
          (setq encoding-msg
                (if display-prop
                    (if (not (stringp display-prop))
-                       (format "(%d, #o%o, #x%x, part of display \"%s\")"
-                               char char char under-display)
-                     (format "(%d, #o%o, #x%x, part of display \"%s\"->\"%s\")"
-                             char char char under-display display-prop))
+                       (format "(%d, #o%o, #x%x%s, part of display \"%s\")"
+                               char char char char-name-fmt under-display)
+                     (format "(%d, #o%o, #x%x%s, part of display 
\"%s\"->\"%s\")"
+                             char char char char-name-fmt under-display 
display-prop))
                  (if encoded
-                     (format "(%d, #o%o, #x%x, file %s)"
-                             char char char
+                     (format "(%d, #o%o, #x%x%s, file %s)"
+                             char char char char-name-fmt
                              (if (> (length encoded) 1)
                                  "..."
                                (encoded-string-description encoded coding)))
-                   (format "(%d, #o%o, #x%x)" char char char)))))
+                   (format "(%d, #o%o, #x%x%s)" char char char 
char-name-fmt)))))
        (if detail
            ;; We show the detailed information about CHAR.
            (describe-char (point)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]