]> git.eshelyaron.com Git - emacs.git/commitdiff
Make comint-term-environment connection-aware (bug#51426)
authorJim Porter <jporterbugs@gmail.com>
Thu, 28 Oct 2021 16:44:39 +0000 (18:44 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Thu, 28 Oct 2021 16:44:39 +0000 (18:44 +0200)
* 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.

doc/emacs/misc.texi
etc/NEWS
lisp/comint.el

index 5123a716dcb655bcdab332393a264984b45738d7..f66b69cdd733cdc42ecdf4faf61634e24461b5bf 100644 (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
index 4f48cfbd88b8660f65b22d5f7617592272f3c14d..f006fa530f3a6e0db5d6f9a141496f7aabe128b3 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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.
+
 \f
 * Changes in Specialized Modes and Packages in Emacs 29.1
 
index e925b3a4b632a5532093e1276b566fa52bdebee1..c114bdf758a75b12413bba09757d3bec07b7634f 100644 (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."