X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/c6190ba03bb1140848f87daab09d2f3f4877c395..847b0831357d0280796fc054986e32bacaef87f6:/lisp/progmodes/executable.el diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el index a5d401a5f5..932c1f32ec 100644 --- a/lisp/progmodes/executable.el +++ b/lisp/progmodes/executable.el @@ -1,6 +1,7 @@ ;;; executable.el --- base functionality for executable interpreter scripts -*- byte-compile-dynamic: t -*- -;; Copyright (C) 1994, 1995, 1996, 2000, 2003, 2004 by Free Software Foundation, Inc. +;; Copyright (C) 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 +;; Free Software Foundation, Inc. ;; Author: Daniel Pfeiffer ;; Keywords: languages, unix @@ -19,8 +20,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -53,7 +54,7 @@ ;;; Code: (defgroup executable nil - "Base functionality for executable interpreter scripts" + "Base functionality for executable interpreter scripts." :group 'processes) ;; This used to default to `other', but that doesn't seem to have any @@ -161,30 +162,6 @@ If PROGRAM is non-nil, use that instead of \"find\"." (if (search-forward file nil t) t)))) -;;;###autoload -(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))) - (let ((suffixes exec-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 @@ -199,20 +176,20 @@ non-executable files." (file-modes buffer-file-name))))))) +;;;###autoload (defun executable-interpret (command) "Run script with user-specified args, and collect output in a buffer. -While script runs asynchronously, you can use the \\[next-error] command -to find the next error." +While script runs asynchronously, you can use the \\[next-error] +command to find the next error. The buffer is also in `comint-mode' and +`compilation-shell-minor-mode', so that you can answer any prompts." (interactive (list (read-string "Run script: " (or executable-command buffer-file-name)))) (require 'compile) (save-some-buffers (not compilation-ask-about-save)) - (make-local-variable 'executable-command) - (compile-internal (setq executable-command command) - "No more errors." "Interpretation" - ;; Give it a simpler regexp to match. - nil executable-error-regexp-alist)) + (set (make-local-variable 'executable-command) command) + (let ((compilation-error-regexp-alist executable-error-regexp-alist)) + (compilation-start command t (lambda (x) "*interpretation*")))) @@ -254,7 +231,7 @@ executable." (and (goto-char (match-beginning 1)) ;; If the line ends in a space, ;; don't offer to change it. - (not (= (char-after (1- (match-end 1))) ?\ )) + (not (= (char-after (1- (match-end 1))) ?\s)) (not (string= argument (buffer-substring (point) (match-end 1)))) (if (or (not executable-query) no-query-flag @@ -301,5 +278,5 @@ file modes." (provide 'executable) -;;; arch-tag: 58458d1c-d9db-45ec-942b-8bbb1d5e319d +;; arch-tag: 58458d1c-d9db-45ec-942b-8bbb1d5e319d ;;; executable.el ends here