diff options
| author | Richard M. Stallman | 1995-09-03 17:34:56 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1995-09-03 17:34:56 +0000 |
| commit | 6a4cd60590cea4afbfe5296054945a953495b4c1 (patch) | |
| tree | b2b4734ee7f8b57123fdce4fdf82c5920b5e2157 | |
| parent | aee81730019fba3d28a288fd843921671826c523 (diff) | |
| download | emacs-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.el | 20 |
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) |