Subject: 29.4; emerge-files with tramp + local file fails
From: Jörg Sommer <[email-masked]>
To: [email-masked]
Date: Wed, 13 Nov 2024 20:11:10 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

when running `emerge-files` with `/ssh:remote:file` and `~/local-file` I get
the buffer `*emerge-diff-errors*` with:

```
diff: /tmp/tramp.wlcRNL: No such file or directory
diff: /home/joerg/local-file: No such file or directory
```

This change solves the problem:

```diff
diff --git lisp/vc/emerge.el lisp/vc/emerge.el
index ca48f2f3c7b..562041e4232 100644
--- lisp/vc/emerge.el
+++ lisp/vc/emerge.el
@@ -581,6 +581,7 @@ emerge-make-diff-list
   (setq emerge-diff-buffer (get-buffer-create "*emerge-diff*"))
   (with-current-buffer
       emerge-diff-buffer
+    (setq default-directory (file-name-directory file-A))
     (erase-buffer)
     (shell-command
      (format "%s %s %s %s"
```

Regards Jörg

In GNU Emacs 29.4 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.42, cairo
 version 1.18.0) of 2024-06-30, modified by Debian built on sbuild
System Description: Debian GNU/Linux trixie/sid

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/libexec --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils
 --with-native-compilation --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man
 --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils
 --with-native-compilation --with-pgtk 'CFLAGS=-g -O2
 -Werror=implicit-function-declaration
 -ffile-prefix-map=/build/reproducible-path/emacs-29.4+1=.
 -fstack-protector-strong -fstack-clash-protection -Wformat
 -Werror=format-security -fcf-protection -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY
INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB

Important settings:
  value of $LANG: de_DE.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Shell-script

Minor modes in effect:
  async-bytecomp-package-mode: t
  sh-electric-here-document-mode: t
  treemacs-filewatch-mode: t
  treemacs-follow-mode: t
  treemacs-git-mode: t
  treemacs-fringe-indicator-mode: t
  desktop-save-mode: t
  global-whitespace-mode: t
  which-key-mode: t
  recentf-mode: t
  global-git-commit-mode: t
  shell-dirtrack-mode: t
  server-mode: t
  global-hl-todo-mode: t
  hl-todo-mode: t
  override-global-mode: t
  company-statistics-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  TeX-PDF-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: #[128 \304\300\301#\207 [yas--auto-fill #[128 \301\302\300!"\207 [auto-fill-function apply default-value] 4 

(fn &rest ARGS)] :around nil apply] 5 advice]
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
/usr/share/emacs/site-lisp/elpa/devscripts-40/pbuilder-mode hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/pbuilder-mode
/usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts
/usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts-autoloads hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts-autoloads
/usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts-pkg hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts-pkg
/usr/share/emacs/site-lisp/elpa/devscripts-40/pbuilder-log-view-mode hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/pbuilder-log-view-mode
/usr/share/emacs/site-lisp/elpa/mutt-alias-1.4/mutt-alias-autoloads hides /usr/share/emacs/site-lisp/elpa-src/mutt-alias-1.4/mutt-alias-autoloads
/usr/share/emacs/site-lisp/elpa/mutt-alias-1.4/mutt-alias-pkg hides /usr/share/emacs/site-lisp/elpa-src/mutt-alias-1.4/mutt-alias-pkg
/usr/share/emacs/site-lisp/elpa/mutt-alias-1.4/mutt-alias hides /usr/share/emacs/site-lisp/elpa-src/mutt-alias-1.4/mutt-alias
/usr/share/emacs/site-lisp/elpa/muttrc-mode-1.2.1/muttrc-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/muttrc-mode-1.2.1/muttrc-mode-autoloads
/usr/share/emacs/site-lisp/elpa/muttrc-mode-1.2.1/muttrc-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/muttrc-mode-1.2.1/muttrc-mode-pkg
/usr/share/emacs/site-lisp/elpa/muttrc-mode-1.2.1/muttrc-mode hides /usr/share/emacs/site-lisp/elpa-src/muttrc-mode-1.2.1/muttrc-mode
/usr/share/emacs/site-lisp/elpa/pod-mode-1.3/pod-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/pod-mode-1.3/pod-mode-pkg
/usr/share/emacs/site-lisp/elpa/pod-mode-1.3/pod-mode hides /usr/share/emacs/site-lisp/elpa-src/pod-mode-1.3/pod-mode
/usr/share/emacs/site-lisp/elpa/pod-mode-1.3/pod-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/pod-mode-1.3/pod-mode-autoloads
/home/joerg/.config/emacs/elpa/transient-20240918.1138/transient hides /usr/share/emacs/29.4/lisp/transient
/home/joerg/.config/emacs/elpa/csharp-mode-20221126.2005/csharp-mode hides /usr/share/emacs/29.4/lisp/progmodes/csharp-mode
/home/joerg/.config/emacs/elpa/project-0.11.1/project hides /usr/share/emacs/29.4/lisp/progmodes/project
/home/joerg/.config/emacs/elpa/xref-1.7.0/xref hides /usr/share/emacs/29.4/lisp/progmodes/xref

Features:
(shadow sort mail-extr emacsbug ibuffer ibuffer-loaddefs apropos mule-util
helpful cc-langs trace info-look elisp-refs bug-reference emerge help-fns
radix-tree cl-print expand-region text-mode-expansions cc-mode-expansions
python-el-fgallina-expansions latex-mode-expansions js2-mode-expansions
js-mode-expansions html-mode-expansions css-mode-expansions
er-basic-expansions expand-region-core expand-region-custom misearch
multi-isearch helm-x-files helm-for-files helm-bookmark helm-adaptive
treemacs-bookmarks treemacs-tags magit-bookmark bookmark pp helm-external
helm-net css-mode sgml-mode facemenu eww url-queue shr pixel-fill kinsoku
url-file svg mm-url gnus nnheader range winner minibuffer-complete-cycle
tramp-archive tramp-gvfs helm-command helm-elisp helm-eval edebug debug
backtrace helm-info helm-mode helm-misc helm-files image-dired
image-dired-tags image-dired-external image-dired-util xdg image-mode exif
helm-buffers helm-occur helm-tags helm-locate helm-grep helm-regexp
helm-utils helm-types helm-help helm helm-global-bindings helm-easymenu
helm-core async-bytecomp helm-source helm-multi-match helm-lib async systemd
conf-mode make-mode view lsp-zig lsp-yang lsp-yaml lsp-xml lsp-wgsl
lsp-volar lsp-vimscript lsp-vhdl lsp-vetur lsp-html lsp-verilog lsp-vala
lsp-v lsp-typeprof lsp-ttcn3 lsp-trunk lsp-toml lsp-tilt lsp-tex
lsp-terraform lsp-svelte lsp-steep lsp-sqls lsp-sql lsp-sorbet lsp-solidity
lsp-solargraph lsp-semgrep lsp-rust lsp-ruff lsp-ruby-syntax-tree
lsp-ruby-lsp lsp-rubocop lsp-roslyn lsp-rf lsp-remark lsp-racket lsp-r
lsp-qml lsp-pylsp lsp-pyls lsp-pwsh lsp-purescript lsp-pls lsp-php
lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-nushell lsp-nix
lsp-nim lsp-nginx lsp-move lsp-mojo lsp-mint lsp-meson lsp-mdx lsp-marksman
lsp-markdown lsp-magik lsp-lua lsp-lisp lsp-kotlin lsp-json lsp-jq
lsp-javascript lsp-idris lsp-haxe lsp-hack lsp-groovy lsp-graphql
lsp-golangci-lint lsp-glsl lsp-gleam lsp-gdscript lsp-fsharp lsp-fortran
lsp-eslint lsp-erlang lsp-emmet lsp-elm lsp-elixir lsp-earthly
lsp-dockerfile lsp-dhall lsp-d lsp-cypher lsp-cucumber lsp-css lsp-csharp
gnutls lsp-crystal lsp-credo lsp-cobol lsp-cmake lsp-clojure lsp-clangd
lsp-bufls lsp-go lsp-beancount lsp-bash lsp-awk lsp-autotools lsp-astro
lsp-asm lsp-ansible lsp-angular lsp-ada lsp-semantic-tokens lsp-actionscript
python sh-script smie executable lsp-treemacs lsp-treemacs-generic
lsp-treemacs-themes treemacs-treelib treemacs treemacs-header-line
treemacs-compatibility treemacs-mode treemacs-interface treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
treemacs-visuals treemacs-fringe-indicator pulse treemacs-faces
treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils pfuture
hl-line treemacs-logging treemacs-customization treemacs-macros lsp-ui
lsp-ui-flycheck lsp-ui-imenu lsp-ui-peek lsp-ui-sideline lsp-ui-doc
goto-addr lsp-ui-util face-remap lsp-modeline lsp-headerline lsp-icons
lsp-diagnostics flycheck lsp-completion lsp-origami origami origami-parsers
lsp-mode lsp-protocol spinner network-stream nsm lv inline ht f ewoc
js2-mode js c-ts-common treesit cc-mode cc-fonts cc-guess cc-menus cc-cmds
jka-compr company-emoji company-emoji-list company-math math-symbol-lists
company-oddmuse company-keywords company-etags etags fileloop generator xref
company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic company-template
company-bbdb guess-language find-func flyspell ispell typo markdown-mode
color noutline outline desktop frameset disp-table whitespace diminish
which-key use-package-diminish dom tramp-cache time-stamp tramp-sh tramp
tramp-loaddefs trampver tramp-integration files-x tramp-compat parse-time
iso8601 recentf tree-widget wid-edit MRU-yank randomsig cl magit-submodule
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files
magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log
which-func imenu magit-diff smerge-mode diff git-commit log-edit message
sendmail yank-media puny rfc822 mml mml-sec epa epg rfc6068 epg-config
gnus-util time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
mailheader pcvs-util add-log magit-core magit-autorevert autorevert
filenotify magit-margin magit-transient magit-process with-editor comp
comp-cstr shell pcomplete server magit-mode transient benchmark magit-git
magit-base magit-section format-spec cursor-sensor hl-todo compat compat-30
compat-macs dokuwiki-mode derived diff-mode use-package-bind-key bind-key
company-statistics company-auctex react-snippets yasnippet-snippets
yasnippet company latex easy-mmode edmacro kmacro latex-flymake flymake-proc
flymake project compile text-property-search warnings icons thingatpt
tex-ispell tex-style tex dbus xml crm texmathp cc-styles cc-align cc-engine
cc-vars cc-defs bitbake dash s mmm-mode mmm-univ mmm-class mmm-region
mmm-auto mmm-vars mmm-utils mmm-compat comint ansi-osc ring ansi-color
cl-extra help-mode use-package-core tty-dark-theme finder-inf advice
bitbake-autoloads cmake-font-lock-autoloads cmake-mode-autoloads
color-theme-modern-autoloads auctex-autoloads tex-site
company-emoji-autoloads company-fuzzy-autoloads company-autoloads
csv-mode-autoloads dpkg-dev-el-autoloads debian-el-autoloads debian-el dired
dired-loaddefs expand-region-autoloads flycheck-rust-autoloads
go-guru-autoloads go-mode-autoloads guess-language-autoloads
helm-c-yasnippet-autoloads helm-autoloads helm-core-autoloads
async-autoloads helpful-autoloads elisp-refs-autoloads hl-todo-autoloads
jenkinsfile-mode-autoloads groovy-mode-autoloads jq-mode-autoloads
jq-ts-mode-autoloads json-mode-autoloads kconfig-mode-autoloads
know-your-http-well-autoloads lsp-origami-autoloads lsp-treemacs-autoloads
lsp-ui-autoloads lsp-mode-autoloads lua-mode-autoloads magit-autoloads pcase
magit-section-autoloads mmm-mode-autoloads move-text-autoloads
multiple-cursors-autoloads nginx-mode-autoloads php-mode-autoloads
po-mode-autoloads restclient-test-autoloads restclient-autoloads
js2-mode-autoloads rustic-autoloads flycheck-autoloads project-autoloads
markdown-mode-autoloads f-autoloads rust-mode-autoloads
smartparens-autoloads rx test-simple-autoloads transient-autoloads
treemacs-autoloads posframe-autoloads dash-autoloads
visual-fill-column-autoloads wfnames-autoloads which-key-autoloads
with-editor-autoloads info compat-autoloads xref-autoloads
yaml-mode-autoloads yasnippet-snippets-autoloads yasnippet-autoloads
devscripts-autoloads mutt-alias-autoloads muttrc-mode-autoloads
pod-mode-autoloads package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie generate-lisp-file url-domsuf url-util
mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars
cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win
pgtk-win term/common-win pgtk-dnd tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame
minibuffer nadvice seq simple cl-generic indonesian philippine 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 composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify dynamic-setting
system-font-setting font-render-setting cairo gtk pgtk lcms2 multi-tty
make-network-process native-compile emacs)

Memory information:
((conses 16 1166425 809726)
 (symbols 48 69186 1)
 (strings 32 377226 108544)
 (string-bytes 1 11859790)
 (vectors 16 151735)
 (vector-slots 8 3622097 737749)
 (floats 8 922 3217)
 (intervals 56 223573 4049)
 (buffers 984 62))

-- 
Hügelschäfer's Law (http://www.bruhaha.de/laws.html):
Beiträge werden dort gepostet, wo sie den größten Widerstand hervorrufen.