If @var{string} is non-@code{nil}, its characters are sent to Emacs's
superior shell, to be read as terminal input.
-@c FIXME? It seems to me that shell does echo STRING.
-The characters in @var{string} are not echoed by the superior shell;
-only the results appear.
Before suspending, @code{suspend-emacs} runs the normal hook
@code{suspend-hook}. After the user resumes Emacs,
@end group
@end smallexample
-@c FIXME? AFAICS, it is echoed.
-Note that @samp{pwd} is not echoed after Emacs is suspended. But it
-is read and executed by the shell.
+Note that on some operating systems, sending @var{string} to the Emacs
+parent shell might require special privileges, in which case it might
+silently fail to send @var{string} to the shell for execution. On other
+systems this is not supported, and Emacs will signal an error if you
+try. Also, @var{string} might not be echoed, even if it is executed by
+the shell. So we don't recommend relying on this feature in portable
+Lisp programs.
@end deffn
@defvar suspend-hook
After resumption run the normal hook `suspend-resume-hook'.
Some operating systems cannot stop the Emacs process and resume it later.
-On such systems, Emacs starts a subshell instead of suspending. */)
+On such systems, Emacs starts a subshell instead of suspending.
+
+On some operating systems, stuffing characters into terminal input
+buffer requires special privileges or is not supported at all.
+On such systems, calling this function with non-nil STUFFSTRING might
+either signal an error or silently fail to stuff the characters. */)
(Lisp_Object stuffstring)
{
specpdl_ref count = SPECPDL_INDEX ();