I run Emacs 27.1 in a Windows 10 environment, and I use tramp via plinkx for remote editing. I don't have diff installed locally, and I don't have the privileges to do it, so I'd like to avail of the one installed in the linux server. I put into my init.el

(require 'tramp)
(add-to-list 'tramp-remote-path 'tramp-own-remote-path)

But when I try to compare two buffers I get:

(file-missing "Searching for program" #("No such file or directory" 0 25 (charset windows-1252)) "diff")
call-process("diff" nil #<buffer *ediff-diff*> nil "--binary" "c:/Users/giglida/AppData/Local/Temp/1/responsabile..." "c:/Users/giglida/AppData/Local/Temp/1/responsabile...")

Why does it insist in searching for diff locally?

1 Answer 1


call-process runs local processes. For remote processes, you must use process-file instead.

  • I'm reading the documentation but it's really puzzling. I suppose I have to create an exception for the program diff only.
    – Daniele
    Commented Oct 29, 2021 at 9:07
  • 1
    If you want to call a program either local or remote, you can always use process-file. It supports both cases. If you need a guarantee that the program is called locally only, use call-process. Commented Oct 29, 2021 at 11:53
  • Dear Michael sorry if I bother you againg but my problem is that the program is invoked via ediff as a frontend, so I cannot figure out where to insert my customization.
    – Daniele
    Commented Nov 8, 2021 at 10:42
  • 1
    ediff shall be aware of remote processes. Hard to debug via stackexchange, I recommend to contact the Tramp team via [email protected]. Commented Nov 8, 2021 at 15:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.