Make comint-term-environment connection-aware (bug#51426)

* lisp/comint.el (comint-term-environment): Make it connection-aware.

* doc/emacs/misc.texi (Shell Options): Document the above change, and
explain how this interacts with 'system-uses-terminfo'.

* etc/NEWS: Announce the above change.
This commit is contained in:
Jim Porter 2021-10-28 18:44:39 +02:00 committed by Michael Albinus
parent 802e9b1b45
commit 9c95a4fa55
3 changed files with 24 additions and 9 deletions

View file

@ -1497,14 +1497,20 @@ directory stack if they are not already on it
underlying shell, of course.
@vindex comint-terminfo-terminal
@vindex system-uses-terminfo
@vindex TERM@r{, environment variable, in sub-shell}
Comint mode sets the @env{TERM} environment variable to a safe default
value, but this value disables some useful features. For example,
color is disabled in applications that use @env{TERM} to determine if
color is supported. Therefore, Emacs provides an option
@code{comint-terminfo-terminal}, which you can set to a terminal that
is present in your system's terminfo database, in order to take
advantage of advanced features of that terminal.
@code{comint-terminfo-terminal} to let you choose a terminal with more
advanced features, as defined in your system's terminfo database.
Emacs will use this option as the value for @env{TERM} so long as
@code{system-uses-terminfo} is non-nil.
Both @code{comint-terminfo-terminal} and @code{system-uses-terminfo}
can be declared as connection-local variables to adjust these options
to match what a remote system expects (@pxref{Connection Variables}).
@node Terminal emulator
@subsection Emacs Terminal Emulator

View file

@ -120,6 +120,14 @@ When non-nil, if the point is in a closing delimiter and the opening
delimiter is offscreen, shows some context around the opening
delimiter in the echo area.
** Comint
+++
*** 'comint-term-environment' is now aware of connection-local variables.
The user option 'comint-terminfo-terminal' and variable
'system-uses-terminfo' can now be set as connection-local variables to
change the terminal used on a remote host.
* Changes in Specialized Modes and Packages in Emacs 29.1

View file

@ -889,12 +889,13 @@ series of processes in the same Comint buffer. The hook
;; and there is no way for us to define it here.
;; Some programs that use terminfo get very confused
;; if TERM is not a valid terminal type.
(if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
(list (format "TERM=%s" comint-terminfo-terminal)
"TERMCAP="
(format "COLUMNS=%d" (window-width)))
(list "TERM=emacs"
(format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width)))))
(with-connection-local-variables
(if system-uses-terminfo
(list (format "TERM=%s" comint-terminfo-terminal)
"TERMCAP="
(format "COLUMNS=%d" (window-width)))
(list "TERM=emacs"
(format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width))))))
(defun comint-nonblank-p (str)
"Return non-nil if STR contains non-whitespace syntax."