From: Richard M. Stallman Date: Tue, 23 Jun 1998 18:37:01 +0000 (+0000) Subject: (executable-binary-suffixes): New variable. X-Git-Tag: emacs-20.3~520 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=80e1568a890cc563649ed8766b4f85163b0ff33c;p=emacs.git (executable-binary-suffixes): New variable. (executable-find): Use it to look for executable program files. --- diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el index 454090d508b..49028f7e7b7 100644 --- a/lisp/progmodes/executable.el +++ b/lisp/progmodes/executable.el @@ -136,21 +136,33 @@ This can be included in `font-lock-keywords' by modes that call `executable'.") See `compilation-error-regexp-alist'.") ;; The C function openp slightly modified would do the trick fine +(defvar executable-binary-suffixes + (if (memq system-type '(ms-dos windows-nt)) + '(".exe" ".com" ".bat" ".cmd" ".btm" "") + '(""))) (defun executable-find (command) "Search for COMMAND in exec-path and return the absolute file name. Return nil if COMMAND is not found anywhere in `exec-path'." (let ((list exec-path) file) (while list - (setq list (if (and (setq file (expand-file-name command (car list))) - (file-executable-p file) - (not (file-directory-p file))) - nil - (setq file nil) - (cdr list)))) + (setq list + (if (and (setq file (expand-file-name command (car list))) + (let ((suffixes executable-binary-suffixes) + candidate) + (while suffixes + (setq candidate (concat file (car suffixes))) + (if (and (file-executable-p candidate) + (not (file-directory-p candidate))) + (setq suffixes nil) + (setq suffixes (cdr suffixes)) + (setq candidate nil))) + (setq file candidate))) + nil + (setq file nil) + (cdr list)))) file)) - (defun executable-chmod () "This gets called after saving a file to assure that it be executable. You can set the absolute or relative mode in variable `executable-chmod' for