Commit cffc04c4 authored by Alexander Gramiak's avatar Alexander Gramiak

Define and use new procedure display-symbol-keys-p

* 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.
parent c6ea522d
...@@ -1230,6 +1230,12 @@ the 128...255 range, as expected. ...@@ -1230,6 +1230,12 @@ the 128...255 range, as expected.
This allows to create and parent immediately a minibuffer-only child This allows to create and parent immediately a minibuffer-only child
frame when making a frame. 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 ** Tabulated List mode
+++ +++
......
...@@ -1927,6 +1927,16 @@ frame's display)." ...@@ -1927,6 +1927,16 @@ frame's display)."
(t (t
nil)))) 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)) (declare-function x-display-screens "xfns.c" (&optional terminal))
(defun display-screens (&optional display) (defun display-screens (&optional display)
......
...@@ -8690,7 +8690,7 @@ call `normal-erase-is-backspace-mode' (which see) instead." ...@@ -8690,7 +8690,7 @@ call `normal-erase-is-backspace-mode' (which see) instead."
(and (not noninteractive) (and (not noninteractive)
(or (memq system-type '(ms-dos windows-nt)) (or (memq system-type '(ms-dos windows-nt))
(memq window-system '(w32 ns)) (memq window-system '(w32 ns))
(and (memq window-system '(x)) (and (eq window-system 'x)
(fboundp 'x-backspace-delete-keys-p) (fboundp 'x-backspace-delete-keys-p)
(x-backspace-delete-keys-p)) (x-backspace-delete-keys-p))
;; If the terminal Emacs is running on has erase char ;; If the terminal Emacs is running on has erase char
...@@ -8701,6 +8701,8 @@ call `normal-erase-is-backspace-mode' (which see) instead." ...@@ -8701,6 +8701,8 @@ call `normal-erase-is-backspace-mode' (which see) instead."
normal-erase-is-backspace) normal-erase-is-backspace)
1 0))))) 1 0)))))
(declare-function display-symbol-keys-p "frame" (&optional display))
(define-minor-mode normal-erase-is-backspace-mode (define-minor-mode normal-erase-is-backspace-mode
"Toggle the Erase and Delete mode of the Backspace and Delete keys. "Toggle the Erase and Delete mode of the Backspace and Delete keys.
...@@ -8736,8 +8738,7 @@ See also `normal-erase-is-backspace'." ...@@ -8736,8 +8738,7 @@ See also `normal-erase-is-backspace'."
(let ((enabled (eq 1 (terminal-parameter (let ((enabled (eq 1 (terminal-parameter
nil 'normal-erase-is-backspace)))) nil 'normal-erase-is-backspace))))
(cond ((or (memq window-system '(x w32 ns pc)) (cond ((display-symbol-keys-p)
(memq system-type '(ms-dos windows-nt)))
(let ((bindings (let ((bindings
'(([M-delete] [M-backspace]) '(([M-delete] [M-backspace])
([C-M-delete] [C-M-backspace]) ([C-M-delete] [C-M-backspace])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment