GNU bug report logs - #36742
25.2; shell-mode over TRAMP does not read remote history file as comint input ring

Previous Next

Package: emacs;

Reported by: Fan Yang <fan_yang <at> sjtu.edu.cn>

Date: Sat, 20 Jul 2019 14:42:01 UTC

Severity: normal

Found in version 25.2

Fixed in version 27.1

Done: Michael Albinus <michael.albinus <at> gmx.de>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 36742 in the body.
You can then email your comments to 36742 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#36742; Package emacs. (Sat, 20 Jul 2019 14:42:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Fan Yang <fan_yang <at> sjtu.edu.cn>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 20 Jul 2019 14:42:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Fan Yang <fan_yang <at> sjtu.edu.cn>
To: bug-gnu-emacs <at> gnu.org
Subject: 25.2; shell-mode over TRAMP does not read remote history file as
 comint input ring
Date: Sat, 20 Jul 2019 22:30:42 +0800 (CST)
* Bug description:

When using "M-x shell" on a remote file (say "/scp:yf <at> val17:"), a bash
is started at the server "val17" as the user "yf".  But the "*shell*"
buffer is started with an empty input ring.  It does not read bash
history file ("/scp:yf <at> val17:~/.bash_history") into comint input ring.

* What is expected:

When using "M-x shell" on a remote file (say "/scp:yf <at> val17:"), a bash
is started at the server "val17" as the user "yf".  The "*shell*"
1. has the content of "/scp:yf <at> val17:~/.bash_history" as comint input
   ring.  And I can use "M-p" to insert previous command, use "M-r" to
   isearch previous comamnd, etc.
2. the commands I have input in this "*shell*" will be appended to
   "/scp:yf <at> val17:~/.bash_history" after shell exit.
Just like what "shell-mode" does for local shell.

* To re-produce:

Here is the content of the dribble file of my re-producing this issue
(control characters are replaced with caret)

--8<---------------cut here---------------start------------->8---
^X^F/scp:yf <at> val17:
^[xshell

^[p^[p^[p^X^Cyes
--8<---------------cut here---------------end--------------->8---

* My findings, if I may:

The code of shell-mode shows

--8<---------------cut here---------------start------------->8---
      (setq comint-input-ring-file-name
	    (or (getenv "HISTFILE")
		(cond ((string-equal shell "bash") "~/.bash_history")
		      ((string-equal shell "ksh") "~/.sh_history")
		      (t "~/.history"))))
--8<---------------cut here---------------end--------------->8---

It seems remote file path is not considered.

* How big this issue is?

Have a shell history is convenient and saves a lot of typing repeated or
similar commands.  Me and many of my colleagues use shell history
isearch heavily.  It works very well for local shells.  It is a little
bit disappointing that it does not work on remote shells.

Best Regards,
Fan


In GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21)
 of 2017-09-23, modified by Debian built on lgw01-amd64-050
System Description:	Ubuntu 18.04.2 LTS

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --build x86_64-linux-gnu
 --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-x=yes --with-x-toolkit=gtk3
 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs25-jYekUr/emacs25-25.2+1=. -fstack-protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro''

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LC_MONETARY: en_US.UTF-8
  value of $LC_NUMERIC: en_US.UTF-8
  value of $LC_TIME: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message dired format-spec rfc822 mml
mml-sec password-cache epg epg-config gnus-util mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util help-fns help-mode easymenu
cl-loaddefs pcase cl-lib mail-prsvr mail-utils term/xterm xterm
time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel x-win term/common-win x-dnd tool-bar dnd fontset
image regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core frame cl-generic cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese charscript case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote dbusbind inotify dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 90407 5144)
 (symbols 48 19870 0)
 (miscs 40 41 96)
 (strings 32 14595 4563)
 (string-bytes 1 413565)
 (vectors 16 9720)
 (vector-slots 8 385876 17362)
 (floats 8 166 540)
 (intervals 56 245 0)
 (buffers 976 18))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#36742; Package emacs. (Mon, 22 Jul 2019 11:13:02 GMT) Full text and rfc822 format available.

Message #8 received at 36742 <at> debbugs.gnu.org (full text, mbox):

From: Michael Albinus <michael.albinus <at> gmx.de>
To: Fan Yang <fan_yang <at> sjtu.edu.cn>
Cc: 36742 <at> debbugs.gnu.org
Subject: Re: bug#36742: 25.2; shell-mode over TRAMP does not read remote
 history file as comint input ring
Date: Mon, 22 Jul 2019 13:11:21 +0200
Fan Yang <fan_yang <at> sjtu.edu.cn> writes:

Hi Fan,

> * Bug description:
>
> When using "M-x shell" on a remote file (say "/scp:yf <at> val17:"), a bash
> is started at the server "val17" as the user "yf".  But the "*shell*"
> buffer is started with an empty input ring.  It does not read bash
> history file ("/scp:yf <at> val17:~/.bash_history") into comint input ring.
>
> * What is expected:
>
> When using "M-x shell" on a remote file (say "/scp:yf <at> val17:"), a bash
> is started at the server "val17" as the user "yf".  The "*shell*"
> 1. has the content of "/scp:yf <at> val17:~/.bash_history" as comint input
>    ring.  And I can use "M-p" to insert previous command, use "M-r" to
>    isearch previous comamnd, etc.
> 2. the commands I have input in this "*shell*" will be appended to
>    "/scp:yf <at> val17:~/.bash_history" after shell exit.
> Just like what "shell-mode" does for local shell.

I've fixed this in the Emacs repository, commit 7f95d2d407. It works as
expected, but you shall be aware that the history file contains also the
commands Tramp has sent in the background.

You shall also set tramp-histfile-override to nil in order to get the
expected history file.

Do you have a chance to test with a recent Emacs 27.0.50?

> Best Regards,
> Fan

Best regards, Michael.




bug Marked as fixed in versions 27.1. Request was from Michael Albinus <michael.albinus <at> gmx.de> to control <at> debbugs.gnu.org. (Mon, 22 Jul 2019 11:13:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#36742; Package emacs. (Tue, 23 Jul 2019 02:03:02 GMT) Full text and rfc822 format available.

Message #13 received at 36742 <at> debbugs.gnu.org (full text, mbox):

From: Fan_Yang <Fan_Yang <at> sjtu.edu.cn>
To: Michael Albinus <michael.albinus <at> gmx.de>
Cc: 36742 <at> debbugs.gnu.org
Subject: Re: bug#36742: 25.2; shell-mode over TRAMP does not read remote
 history file as comint input ring
Date: Tue, 23 Jul 2019 09:55:35 +0800
[Message part 1 (text/plain, inline)]
Hi Michael!

I have cloned the git repo and tested your commit.  It works well in my 
environment!

> ...but you shall be aware that the history file contains also the
> commands Tramp has sent in the background.

I see.  It is reasonable and acceptable.

> You shall also set tramp-histfile-override to nil in order to get the
> expected history file.

OK, thanks for reminding~

Fan


> 在 2019年7月22日,19:11,Michael Albinus <michael.albinus <at> gmx.de> 写道:
> 
> Fan Yang <fan_yang <at> sjtu.edu.cn <mailto:fan_yang <at> sjtu.edu.cn>> writes:
> 
> Hi Fan,
> 
>> * Bug description:
>> 
>> When using "M-x shell" on a remote file (say "/scp:yf <at> val17:"), a bash
>> is started at the server "val17" as the user "yf".  But the "*shell*"
>> buffer is started with an empty input ring.  It does not read bash
>> history file ("/scp:yf <at> val17:~/.bash_history") into comint input ring.
>> 
>> * What is expected:
>> 
>> When using "M-x shell" on a remote file (say "/scp:yf <at> val17:"), a bash
>> is started at the server "val17" as the user "yf".  The "*shell*"
>> 1. has the content of "/scp:yf <at> val17:~/.bash_history" as comint input
>>   ring.  And I can use "M-p" to insert previous command, use "M-r" to
>>   isearch previous comamnd, etc.
>> 2. the commands I have input in this "*shell*" will be appended to
>>   "/scp:yf <at> val17:~/.bash_history" after shell exit.
>> Just like what "shell-mode" does for local shell.
> 
> I've fixed this in the Emacs repository, commit 7f95d2d407. It works as
> expected, but you shall be aware that the history file contains also the
> commands Tramp has sent in the background.
> 
> You shall also set tramp-histfile-override to nil in order to get the
> expected history file.
> 
> Do you have a chance to test with a recent Emacs 27.0.50?
> 
>> Best Regards,
>> Fan
> 
> Best regards, Michael.

[Message part 2 (text/html, inline)]

Reply sent to Michael Albinus <michael.albinus <at> gmx.de>:
You have taken responsibility. (Tue, 23 Jul 2019 07:09:03 GMT) Full text and rfc822 format available.

Notification sent to Fan Yang <fan_yang <at> sjtu.edu.cn>:
bug acknowledged by developer. (Tue, 23 Jul 2019 07:09:03 GMT) Full text and rfc822 format available.

Message #18 received at 36742-done <at> debbugs.gnu.org (full text, mbox):

From: Michael Albinus <michael.albinus <at> gmx.de>
To: Fan_Yang <Fan_Yang <at> sjtu.edu.cn>
Cc: 36742-done <at> debbugs.gnu.org
Subject: Re: bug#36742: 25.2; shell-mode over TRAMP does not read remote
 history file as comint input ring
Date: Tue, 23 Jul 2019 09:08:30 +0200
Version: 27.1

Fan_Yang <Fan_Yang <at> sjtu.edu.cn> writes:

> Hi Michael!

Hi Fan,

> I have cloned the git repo and tested your commit.  It works well in
> my environment!

Thanks for the feedback, I'm closing the bug.

> Fan

Best regards, Michael.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 20 Aug 2019 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 262 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.