From 80e1568a890cc563649ed8766b4f85163b0ff33c Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 23 Jun 1998 18:37:01 +0000 Subject: [PATCH] (executable-binary-suffixes): New variable. (executable-find): Use it to look for executable program files. --- lisp/progmodes/executable.el | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) 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 -- 2.39.2