# HG changeset patch # User Richard M. Stallman # Date 898627021 0 # Node ID d9e33b33a02f314d23ee52dbc48fd2c28c4d1773 # Parent a342b7785783f777b7ec8eb9b8e3a9a3b95b8596 (executable-binary-suffixes): New variable. (executable-find): Use it to look for executable program files. diff -r a342b7785783 -r d9e33b33a02f lisp/progmodes/executable.el --- a/lisp/progmodes/executable.el Tue Jun 23 17:45:10 1998 +0000 +++ b/lisp/progmodes/executable.el Tue Jun 23 18:37:01 1998 +0000 @@ -136,21 +136,33 @@ 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