* lisp/term/screen.el (xterm-screen-extra-capabilities): New custom

(terminal-init-screen): Use it (bug#20356).
* lisp/term/xterm.el: Provide `term/xterm' instead of `xterm'.
(xterm--extra-capabilities-type): New const.
(xterm-extra-capabilities): Use it.
(xterm--version-handler): Lower the pseudo-version for `screen'.
This commit is contained in:
Stefan Monnier 2015-05-03 22:24:20 -04:00
parent b7bb71c801
commit 4183482f4d
3 changed files with 38 additions and 13 deletions

View file

@ -238,6 +238,8 @@ Unicode standards.
* Changes in Specialized Modes and Packages in Emacs 25.1
** New `xterm-screen-extra-capabilities' config.
** The `save-place' variable is replaced by a `save-place-mode'.
** Midnight-mode
@ -691,6 +693,11 @@ a typographically-correct documents.
* Incompatible Lisp Changes in Emacs 25.1
** `indirect-function' does not signal `void-function' any more.
This is mostly a bug-fix, since this change was missed back in 24.4 when
symbol-function was changed not to signal `void-function' any more.
*** As a consequence, the second arg of `indirect-function' is now obsolete.
** Comint, term, and compile do not set the EMACS env var any more.
Use the INSIDE_EMACS environment variable instead.

View file

@ -1,9 +1,22 @@
;;; screen.el --- terminal initialization for screen and tmux -*- lexical-binding: t -*-
;; Copyright (C) 1995, 2001-2015 Free Software Foundation, Inc.
(require 'term/xterm)
(defcustom xterm-screen-extra-capabilities '(modifyOtherKeys)
"Extra capabilities supported under \"screen\".
Some features of screen depend on the terminal emulator in which
it runs, which can change when the screen session is moved to another tty."
:type xterm--extra-capabilities-type
:group 'xterm)
(defun terminal-init-screen ()
"Terminal initialization function for screen."
;; Treat a screen terminal similar to an xterm.
(tty-run-terminal-initialization (selected-frame) "xterm"))
;; Treat a screen terminal similar to an xterm, but don't use
;; xterm-extra-capabilities's `check' setting since that doesn't seem
;; to work so well (it depends too much on the surrounding terminal
;; emulator, which can change during the session, bug#20356).
(let ((xterm-extra-capabilities xterm-screen-extra-capabilities))
(tty-run-terminal-initialization (selected-frame) "xterm")))
;; screen.el ends here

View file

@ -29,6 +29,13 @@
:version "24.1"
:group 'terminals)
(defconst xterm--extra-capabilities-type
;; NOTE: If you add entries here, make sure to update
;; `terminal-init-xterm' as well.
'(set (const :tag "modifyOtherKeys support" modifyOtherKeys)
(const :tag "report background" reportBackground)
(const :tag "set X selection" setSelection)))
(defcustom xterm-extra-capabilities 'check
"Whether Xterm supports some additional, more modern, features.
If nil, just assume that it does not.
@ -40,13 +47,8 @@ The relevant features are:
reportBackground -- if supported, Xterm reports its background color
setSelection -- if supported, Xterm saves yanked text to the X selection"
:version "24.1"
:type '(choice (const :tag "No" nil)
(const :tag "Check" check)
;; NOTE: If you add entries here, make sure to update
;; `terminal-init-xterm' as well.
(set (const :tag "modifyOtherKeys support" modifyOtherKeys)
(const :tag "report background" reportBackground)
(const :tag "set X selection" setSelection))))
:type `(choice (const :tag "Check" check)
,xterm--extra-capabilities-type))
(defcustom xterm-max-cut-length 100000
"Maximum number of bytes to cut into xterm using the OSC 52 sequence.
@ -623,8 +625,11 @@ string bytes that can be copied is 3/4 of this value."
(setq version 200))
(when (equal (match-string 1 str) "83")
;; `screen' (which returns 83;40003;0) seems to also lack support for
;; some of these (bug#17607).
(setq version 240))
;; some of these (bug#17607, bug#20356).
;; Note: this code path should normally not be used any more
;; since term/screen.el now binds xterm-extra-capabilities
;; to a fixed value, rather than using the dynamic checking.
(setq version 200))
;; If version is 242 or higher, assume the xterm supports
;; reporting the background color (TODO: maybe earlier
;; versions do too...)
@ -925,6 +930,6 @@ versions of xterm."
(set-terminal-parameter nil 'background-mode 'dark)
t))
(provide 'xterm)
(provide 'xterm) ;Backward compatibility.
(provide 'term/xterm)
;;; xterm.el ends here