aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1995-09-03 17:34:56 +0000
committerRichard M. Stallman1995-09-03 17:34:56 +0000
commit6a4cd60590cea4afbfe5296054945a953495b4c1 (patch)
treeb2b4734ee7f8b57123fdce4fdf82c5920b5e2157
parentaee81730019fba3d28a288fd843921671826c523 (diff)
downloademacs-6a4cd60590cea4afbfe5296054945a953495b4c1.tar.gz
emacs-6a4cd60590cea4afbfe5296054945a953495b4c1.zip
(dired-internal-noselect): New arg MODE.
If it's non-nil, switch to that nil. (dired-find-buffer-nocreate): New arg MODE.
-rw-r--r--lisp/dired.el20
1 files changed, 14 insertions, 6 deletions
diff --git a/lisp/dired.el b/lisp/dired.el
index 9b0ba468fb5..1bd50d4fc06 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -392,7 +392,7 @@ If DIRNAME is already in a dired buffer, that buffer is used without refresh."
392 (dired-internal-noselect dir-or-list switches))) 392 (dired-internal-noselect dir-or-list switches)))
393 393
394;; Separate function from dired-noselect for the sake of dired-vms.el. 394;; Separate function from dired-noselect for the sake of dired-vms.el.
395(defun dired-internal-noselect (dir-or-list &optional switches) 395(defun dired-internal-noselect (dir-or-list &optional switches mode)
396 ;; If there is an existing dired buffer for DIRNAME, just leave 396 ;; If there is an existing dired buffer for DIRNAME, just leave
397 ;; buffer as it is (don't even call dired-revert). 397 ;; buffer as it is (don't even call dired-revert).
398 ;; This saves time especially for deep trees or with ange-ftp. 398 ;; This saves time especially for deep trees or with ange-ftp.
@@ -402,8 +402,13 @@ If DIRNAME is already in a dired buffer, that buffer is used without refresh."
402 ;; revert the buffer. 402 ;; revert the buffer.
403 ;; A pity we can't possibly do "Directory has changed - refresh? " 403 ;; A pity we can't possibly do "Directory has changed - refresh? "
404 ;; like find-file does. 404 ;; like find-file does.
405 ;; Optional argument MODE is passed to dired-find-buffer-nocreate,
406 ;; see there.
405 (let* ((dirname (if (consp dir-or-list) (car dir-or-list) dir-or-list)) 407 (let* ((dirname (if (consp dir-or-list) (car dir-or-list) dir-or-list))
406 (buffer (dired-find-buffer-nocreate dir-or-list)) 408 ;; The following line used to use dir-or-list.
409 ;; That never found an existing buffer, in the case
410 ;; where it is a list.
411 (buffer (dired-find-buffer-nocreate dirname mode))
407 ;; note that buffer already is in dired-mode, if found 412 ;; note that buffer already is in dired-mode, if found
408 (new-buffer-p (not buffer)) 413 (new-buffer-p (not buffer))
409 (old-buf (current-buffer))) 414 (old-buf (current-buffer)))
@@ -435,6 +440,7 @@ If DIRNAME is already in a dired buffer, that buffer is used without refresh."
435 (file-name-directory dirname))) 440 (file-name-directory dirname)))
436 (or switches (setq switches dired-listing-switches)) 441 (or switches (setq switches dired-listing-switches))
437 (dired-mode dirname switches) 442 (dired-mode dirname switches)
443 (if mode (funcall mode))
438 ;; default-directory and dired-actual-switches are set now 444 ;; default-directory and dired-actual-switches are set now
439 ;; (buffer-local), so we can call dired-readin: 445 ;; (buffer-local), so we can call dired-readin:
440 (let ((failed t)) 446 (let ((failed t))
@@ -454,16 +460,18 @@ If DIRNAME is already in a dired buffer, that buffer is used without refresh."
454 (set-buffer old-buf) 460 (set-buffer old-buf)
455 buffer)) 461 buffer))
456 462
457;; This differs from dired-buffers-for-dir in that it does not consider 463(defun dired-find-buffer-nocreate (dirname &optional mode)
458;; subdirs of default-directory and searches for the first match only 464 ;; This differs from dired-buffers-for-dir in that it does not consider
459(defun dired-find-buffer-nocreate (dirname) 465 ;; subdirs of default-directory and searches for the first match only.
466 ;; Also, the major mode must be MODE.
460 (let (found (blist dired-buffers)) ; was (buffer-list) 467 (let (found (blist dired-buffers)) ; was (buffer-list)
468 (or mode (setq mode 'dired-mode))
461 (while blist 469 (while blist
462 (if (null (buffer-name (cdr (car blist)))) 470 (if (null (buffer-name (cdr (car blist))))
463 (setq blist (cdr blist)) 471 (setq blist (cdr blist))
464 (save-excursion 472 (save-excursion
465 (set-buffer (cdr (car blist))) 473 (set-buffer (cdr (car blist)))
466 (if (and (eq major-mode 'dired-mode) 474 (if (and (eq major-mode mode)
467 (equal dired-directory dirname)) 475 (equal dired-directory dirname))
468 (setq found (cdr (car blist)) 476 (setq found (cdr (car blist))
469 blist nil) 477 blist nil)