Subject: 24.0.50; directory tracking functions (comint.el) non-functional on remote files

From: Jürgen Hötzel <[email-masked]>
Date: Fri, 30 Jul 2010 11:08:30 +0200

Steps to reproduce:
1. Open a tramp url like "/ssh:user@HOSTNAME:/"
2. M-x shell
3. cd /absolute/path
4. Check `default-directory' or try comints directory completion/tracking
Patch enclosed:

diff --git a/lisp/comint.el b/lisp/comint.el
index 071537f..128965f 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -674,6 +674,9 @@ Entry to this mode runs the hooks on `comint-mode-hook'."
   (make-local-variable 'comint-process-echoes)
   (make-local-variable 'comint-file-name-chars)
   (make-local-variable 'comint-file-name-quote-list)
+  ;; dir tracking on remote files
+  (set (make-local-variable 'comint-file-name-prefix)
+       (or (file-remote-p default-directory) ""))
   (make-local-variable 'comint-accum-marker)
   (setq comint-accum-marker (make-marker))
   (make-local-variable 'font-lock-defaults)

If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
    `bt full' and `xbacktrace'.
For information about debugging Emacs, please read the file
/usr/share/emacs/24.0.50/etc/DEBUG.

In GNU Emacs 24.0.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 2.20.1)
 of 2010-07-30 on bitzer.hoetzel.info
Windowing system distributor `The X.Org Foundation', version 11.0.60900000
configured using `configure  '--prefix=/usr' 'CFLAGS=-g -O0
-fno-optimize-sibling-calls''
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: de_DE.utf8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t
Major mode: Dired by name
Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  recentf-mode: t
  show-paren-mode: t
  yas/minor-mode: t
  savehist-mode: t
  auto-insert-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
Recent input:
<escape> x s t o w <tab> C-g C-x C-f <up> <return>
<escape> x s h e l l <return> <escape> : <up> <return>
c d SPC / m e d <tab> <return> l s SPC <tab> C-a C-k
C-x 1 C-x C-f C-g <f7> . . e l l <down> <down> <down>
<down> <return> <escape> x s h e l l <return> C-x k
<return> y e s <return> <escape> x s h e l l <return>
g i t SPC d i f f <return> p w d <return> c d <return>
c d SPC s o f <tab> e m <tab> <return> g i t SPC d
i f f <return> <return> SPC <return> q <return> g i
t SPC d i f f SPC <backspace> SPC > / t <backspace>
t m p / d i r - t r a c <tab> k i n g - o n - r e m
o t e - f i l e s . d i f f <return> C-x C-f C-a C-k
/ t m <tab> <return> g <down> v C-x k <return> <escape>
x b u g <tab> C-a C-k r e p o <tab> r <tab> <retur
n>
Recent messages:
View mode: type C-h for help, h for commands, q to quit.
Making completion list...
Saving file /home/juergen/.recentf...
Wrote /home/juergen/.recentf
insert-for-yank: Text is read-only
call-interactively: Text is read-only
Overwrite mode enabled
Overwrite mode disabled
Saving file /home/juergen/.recentf...
Wrote /home/juergen/.recentf
Load-path shadows:
/usr/share/emacs/24.0.50/lisp/progmodes/compile hides
/usr/share/emacs/24.0.50/lisp/cedet/srecode/compile
/usr/share/emacs/24.0.50/lisp/textmodes/table hides
/usr/share/emacs/24.0.50/lisp/cedet/srecode/table
/usr/share/emacs/24.0.50/lisp/cedet/semantic hides
/usr/share/emacs/24.0.50/lisp/cedet/srecode/semantic
/usr/share/emacs/24.0.50/lisp/progmodes/cpp hides
/usr/share/emacs/24.0.50/lisp/cedet/srecode/cpp
/usr/share/emacs/24.0.50/lisp/loaddefs hides
/usr/share/emacs/24.0.50/lisp/cedet/srecode/loaddefs
/usr/share/emacs/24.0.50/lisp/cedet/srecode/texi hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/texi
/usr/share/emacs/24.0.50/lisp/sort hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/sort
/usr/share/emacs/24.0.50/lisp/cedet/srecode/java hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/java
/usr/share/emacs/24.0.50/lisp/imenu hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/imenu
/usr/share/emacs/24.0.50/lisp/format hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/format
/usr/share/emacs/24.0.50/lisp/cedet/srecode/find hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/find
/usr/share/emacs/24.0.50/lisp/emacs-lisp/debug hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/debug
/usr/share/emacs/24.0.50/lisp/cedet/srecode/ctxt hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/ctxt
/usr/share/emacs/24.0.50/lisp/emacs-lisp/chart hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/chart
/usr/share/emacs/24.0.50/lisp/loaddefs hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/loaddefs
/usr/share/emacs/24.0.50/lisp/progmodes/python hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/wisent/python
/usr/share/emacs/24.0.50/lisp/cedet/semantic/wisent hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/wisent/wisent
/usr/share/emacs/24.0.50/lisp/progmodes/grep hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/symref/grep
/usr/share/emacs/24.0.50/lisp/cedet/srecode/mode hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/decorate/mode
/usr/share/emacs/24.0.50/lisp/emacs-lisp/debug hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/bovine/debug
/usr/share/emacs/24.0.50/lisp/cedet/srecode/el hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/bovine/el
/usr/share/emacs/24.0.50/lisp/cedet/semantic/complete hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/analyze/complete
/usr/share/emacs/24.0.50/lisp/emacs-lisp/debug hides
/usr/share/emacs/24.0.50/lisp/cedet/semantic/analyze/debug
Features:
(shadow sort mail-extr message idna sendmail rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev gmm-utils mailheader emacsbug diff-mode vc-git
help-mode view ansi-color time-date package tramp-imap tramp-gw
tramp-fish tramp-smb tramp-cache tramp-ftp tramp-cmds tramp shell
password-cache format-spec tramp-compat trampver recentf server
time-stamp paren anything-config warnings semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw eieio
byte-opt bytecomp byte-compile mode-local cedet imenu bookmark ffap
dired rx company-gtags company-dabbrev swank-clojure-project
pkgbuild-mode sh-script executable color-theme babel url-handlers json
mm-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-util url-parse auth-source timezone url-vars mailcap gnus
gnus-ems nnheader gnus-util mail-utils mm-util mail-prsvr dropdown-list
yasnippet sawfish inf-lisp pp info php-mode derived etags cc-langs
cc-mode cc-fonts cc-menus cc-cmds speedbar sb-image ezimage dframe
lxde-style highlight-symbol hi-lock thingatpt company easy-mmode
clojure-mode c-electric-paren2 anything edmacro kmacro woman easymenu
man assoc cc-styles cc-align cc-engine cc-vars cc-defs uniquify advice
help-fns advice-preload savehist cus-start cus-load codesearch
groovy-mode cl cl-19 gtags compile comint regexp-opt ring autoinsert
tree-widget wid-edit tooltip ediff-hook vc-hooks lisp-float-type mwheel
x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page
menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty emacs)