]> git.eshelyaron.com Git - emacs.git/commitdiff
Define and use new procedure display-symbol-keys-p
authorAlexander Gramiak <agrambot@gmail.com>
Wed, 3 Apr 2019 20:03:28 +0000 (14:03 -0600)
committerAlexander Gramiak <agrambot@gmail.com>
Sun, 7 Apr 2019 04:43:59 +0000 (22:43 -0600)
* lisp/frame.el (display-symbol-keys-p): Define.

* lisp/simple.el (normal-erase-is-backspace-setup-frame): Use eq
instead of memq.
(normal-erase-is-backspace-mode): Use display-symbol-keys-p.

etc/NEWS
lisp/frame.el
lisp/simple.el

index 26c761ae01f0f07dd7ef44758fc8d0b7d3509486..be4543c0166db86520a504b89eb931ba6d593418 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1230,6 +1230,12 @@ the 128...255 range, as expected.
 This allows to create and parent immediately a minibuffer-only child
 frame when making a frame.
 
+---
+*** New predicates 'display-blink-cursor-p' and 'display-symbol-keys-p'.
+These predicates are to be preferred over 'display-graphic-p' when
+testing for blinking cursor capability and the capability to have
+symbols (e.g., [return], [tab], [backspace]) as keys respectively.
+
 ** Tabulated List mode
 
 +++
index cc8ca49b3b7b2d4f804a6a52d2fbf9da4181d173..aa14e87d7b8cb51b53dbb247392707c991d695e4 100644 (file)
@@ -1927,6 +1927,16 @@ frame's display)."
      (t
       nil))))
 
+(defun display-symbol-keys-p (&optional display)
+  "Return non-nil if DISPLAY supports symbol names as keys.
+This means that, for example, DISPLAY can differentiate between
+the keybinding RET and [return]."
+  (let ((frame-type (framep-on-display display)))
+    (or (memq frame-type '(x w32 ns pc))
+        ;; MS-DOS and MS-Windows terminals have built-in support for
+        ;; function (symbol) keys
+        (memq system-type '(ms-dos windows-nt)))))
+
 (declare-function x-display-screens "xfns.c" (&optional terminal))
 
 (defun display-screens (&optional display)
index 306df9676616468d37be348b12e12727b8af7bfb..857e0fc001bcf843b0533cacd93b84273175e305 100644 (file)
@@ -8690,7 +8690,7 @@ call `normal-erase-is-backspace-mode' (which see) instead."
                (and (not noninteractive)
                     (or (memq system-type '(ms-dos windows-nt))
                        (memq window-system '(w32 ns))
-                        (and (memq window-system '(x))
+                        (and (eq window-system 'x)
                              (fboundp 'x-backspace-delete-keys-p)
                              (x-backspace-delete-keys-p))
                         ;; If the terminal Emacs is running on has erase char
@@ -8701,6 +8701,8 @@ call `normal-erase-is-backspace-mode' (which see) instead."
              normal-erase-is-backspace)
            1 0)))))
 
+(declare-function display-symbol-keys-p "frame" (&optional display))
+
 (define-minor-mode normal-erase-is-backspace-mode
   "Toggle the Erase and Delete mode of the Backspace and Delete keys.
 
@@ -8736,8 +8738,7 @@ See also `normal-erase-is-backspace'."
   (let ((enabled (eq 1 (terminal-parameter
                         nil 'normal-erase-is-backspace))))
 
-    (cond ((or (memq window-system '(x w32 ns pc))
-              (memq system-type '(ms-dos windows-nt)))
+    (cond ((display-symbol-keys-p)
           (let ((bindings
                  '(([M-delete] [M-backspace])
                    ([C-M-delete] [C-M-backspace])