From: Richard M. Stallman Date: Mon, 29 Dec 2003 19:15:23 +0000 (+0000) Subject: (kill-find): New command. X-Git-Tag: ttn-vms-21-2-B4~8085 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1d0c27179df9117ca5ba32f23614c10b31027d74;p=emacs.git (kill-find): New command. (find-dired): Make buffer read-only. Set up a keymap with C-c C-k running kill-find. (find-dired-filter, find-dired-sentinel): Bind inhibit-read-only. --- diff --git a/lisp/find-dired.el b/lisp/find-dired.el index b1051acf7fd..9407afc3862 100644 --- a/lisp/find-dired.el +++ b/lisp/find-dired.el @@ -123,6 +123,10 @@ as the final argument." (car find-ls-option))) ;; The next statement will bomb in classic dired (no optional arg allowed) (dired-mode dir (cdr find-ls-option)) + (let ((map (make-sparse-keymap))) + (set-keymap-parent map (current-local-map)) + (define-key map "\C-c\C-k" 'kill-find) + (use-local-map map)) (make-local-variable 'dired-sort-inhibit) (setq dired-sort-inhibit t) (set (make-local-variable 'revert-buffer-function) @@ -144,6 +148,7 @@ as the final argument." ;; Make second line a ``find'' line in analogy to the ``total'' or ;; ``wildcard'' line. (insert " " args "\n") + (setq buffer-read-only t) ;; Start the find process. (let ((proc (start-process-shell-command find-dired-find-program (current-buffer) args))) (set-process-filter proc (function find-dired-filter)) @@ -152,6 +157,16 @@ as the final argument." (move-marker (process-mark proc) 1 (current-buffer))) (setq mode-line-process '(":%s")))) +(defun kill-find () + "Kill the `find' process running in the current buffer." + (interactive) + (let ((find (get-buffer-process (current-buffer)))) + (and find (eq (process-status find) 'run) + (eq (process-filter find) (function find-dired-filter)) + (condition-case nil + (delete-process find) + (error nil))))) + ;;;###autoload (defun find-name-dired (dir pattern) "Search DIR recursively for files matching the globbing pattern PATTERN, @@ -192,7 +207,8 @@ Thus ARG can also contain additional grep options." (defun find-dired-filter (proc string) ;; Filter for \\[find-dired] processes. - (let ((buf (process-buffer proc))) + (let ((buf (process-buffer proc)) + (inhibit-read-only t)) (if (buffer-name buf) ; not killed? (save-excursion (set-buffer buf) @@ -229,7 +245,8 @@ Thus ARG can also contain additional grep options." (defun find-dired-sentinel (proc state) ;; Sentinel for \\[find-dired] processes. - (let ((buf (process-buffer proc))) + (let ((buf (process-buffer proc)) + (inhibit-read-only t)) (if (buffer-name buf) (save-excursion (set-buffer buf)