# HG changeset patch # User Richard M. Stallman # Date 1072725323 0 # Node ID 5e98e2525d62afa3f22e0865dee1522e64ef00a4 # Parent 9bdc3d1a6a5ff3e65865dc9856cc6cad235a94cb (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 -r 9bdc3d1a6a5f -r 5e98e2525d62 lisp/find-dired.el --- a/lisp/find-dired.el Mon Dec 29 19:14:03 2003 +0000 +++ b/lisp/find-dired.el Mon Dec 29 19:15:23 2003 +0000 @@ -123,6 +123,10 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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)