Subject: Re: custom-reevaluate-setting / custom-initialize-delay

From: Stefan Monnier <[email-masked]>
Date: Wed, 24 Feb 2010 11:30:21 -0500

>>>>> "Drew" == Drew Adams <[email-masked]> writes:

>> [ Bringing this back to #5299 where it belongs ]
>> 
>> > (setq message-send-mail-function 'mailclient-send-it)
>> >
>> > shell-command-to-string: Searching for program: no such 
>> > file or directory, /bin/bash
>> 
>> Can you get a backtrace of that?
>> [with (setq debug-on-error t) and if
>> that doesn't work with additionally (setq 
>> debug-ignored-errors nil) and/or
>> maybe even (setq debug-on-signal t)]
>> 
>> Also, can you explain why "bash" shows up here?  Do you have 
>> the envvar SHELL set to "/bin/bash" somehow?

> Yes, in my Windows settings (since I use Cygwin).

> With those 3 variables set, emacs -Q:

> Help > Send Bug Report

> Type "ffffffffff" as the subject.
[...]
> Starting over, emacs -Q, with only `debug-on-error' set:

> I get to buffer *mail to [email-masked]*. I type some text "xxxxxxxxxxx",
> then `C-c C-c', reply "yes". I get this backtrace:

> Debugger entered--Lisp error: (file-error "Searching for program" "no such file
> or directory" "/bin/bash")
>   call-process("/bin/bash" nil t nil "-c" "uncompface")
>   shell-command-to-string("uncompface")
>   (string-match "^0x" (shell-command-to-string "uncompface"))

Thanks, so I think the patch below is needed, can you try it to see if
it helps?

There's still another bug in sendmail.el where we use
custom-initialize-delay on a defcustom that's autoloaded (the problem
there being that autoloaded defcustoms aren't copied verbatim, so only
some of the defcustom features are supported for autoloaded defcustoms,
and currently custom-initialize-delay is not one of them), but this
patch may be sufficient for you and seems useful in anny case.

        Stefan

=== modified file 'lisp/gnus/gnus-art.el'
--- lisp/gnus/gnus-art.el	2010-01-13 08:35:10 +0000
+++ lisp/gnus/gnus-art.el	2010-02-24 16:25:07 +0000
@@ -1422,8 +1422,12 @@
        (gnus-image-type-available-p 'xbm)
        (if (featurep 'xemacs)
 	   (featurep 'xface)
+	 (condition-case nil
 	 (and (string-match "^0x" (shell-command-to-string "uncompface"))
-	      (executable-find "icontopbm")))
+                  (executable-find "icontopbm"))
+           ;; shell-command-to-string may signal an error, e.g. if
+           ;; shell-file-name is not found.
+           (error nil)))
        'head)
   "Display X-Face headers.
 Valid values are nil and `head'.