From c7ed57eaef46ed74ce926fc05dec9eaa5737f3d9 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 1 Apr 2017 23:15:46 -0400 Subject: [PATCH] Mention that processes start in default-directory (Bug#18515) * doc/lispref/processes.texi (Synchronous Processes): (Asynchronous Processes): * lisp/subr.el (start-process): * src/callproc.c (call-process): Mention that the subprocess starts in `default-directory' when local, suggest `start-file-process' and `process-file' otherwise. --- doc/lispref/processes.texi | 13 +++++++++++-- lisp/subr.el | 7 ++++++- src/callproc.c | 4 ++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 2a79cc781f8..2acb7c99e02 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -300,8 +300,11 @@ system, much like text written into a file. @xref{Coding Systems}. @defun call-process program &optional infile destination display &rest args This function calls @var{program} and waits for it to finish. -The current working directory of the subprocess is -@code{default-directory}. +The current working directory of the subprocess is set to the current +buffer's value of @code{default-directory} if that is local (as +determined by @code{unhandled-file-name-directory}), or "~" otherwise. +If you want to run a process in a remote directory use +@code{process-file}. The standard input for the new process comes from file @var{infile} if @var{infile} is not @code{nil}, and from the null device otherwise. @@ -677,6 +680,12 @@ created with @code{make-pipe-process}, described below. The original argument list, modified with the actual connection information, is available via the @code{process-contact} function. + +The current working directory of the subprocess is set to the current +buffer's value of @code{default-directory} if that is local (as +determined by `unhandled-file-name-directory'), or "~" otherwise. If +you want to run a process in a remote direcotry use +@code{start-file-process}. @end defun @defun make-pipe-process &rest args diff --git a/lisp/subr.el b/lisp/subr.el index ebac2e0ef5d..472f931306e 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1970,7 +1970,12 @@ arguments PROGRAM-ARGS are strings to give program as arguments. If you want to separate standard output from standard error, use `make-process' or invoke the command through a shell and redirect -one of them using the shell syntax." +one of them using the shell syntax. + +The process runs in `default-directory' if that is local (as +determined by `unhandled-file-name-directory'), or \"~\" +otherwise. If you want to run a process in a remote directory +use `start-file-process'." (unless (fboundp 'make-process) (error "Emacs was compiled without subprocess support")) (apply #'make-process diff --git a/src/callproc.c b/src/callproc.c index 6d69e13757f..a781e47b171 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -240,6 +240,10 @@ Otherwise it waits for PROGRAM to terminate and returns a numeric exit status or a signal description string. If you quit, the process is killed with SIGINT, or SIGKILL if you quit again. +The process runs in `default-directory' if that is local (as +determined by `unhandled-file-name-directory'), or "~" otherwise. If +you want to run a process in a remote directory use `process-file'. + usage: (call-process PROGRAM &optional INFILE DESTINATION DISPLAY &rest ARGS) */) (ptrdiff_t nargs, Lisp_Object *args) { -- 2.39.5