Article View: gnu.emacs.bug
Article #87452Re: dired doesn't look for existing buffers
From: Lawrence R. Dodd
Date: Thu, 15 Sep 1994 19:31
Date: Thu, 15 Sep 1994 19:31
328 lines
13832 bytes
13832 bytes
I've installed 19.27 and updated those patches.
---
cd /usr/local/gnu/src/emacs-19.27/lisp/
diff -c dired.el.\~1\~ dired.el
*** dired.el.~1~ Sat Aug 6 14:36:26 1994
--- dired.el Thu Sep 15 14:22:28 1994
***************
*** 188,193 ****
--- 188,194 ----
(defvar dired-re-perms "-[-r][-w].[-r][-w].[-r][-w].")
(defvar dired-re-dot "^.* \\.\\.?$")
+ ;; The subdirectory names in this list are expanded.
(defvar dired-subdir-alist nil
"Association list of subdirectories and their buffer positions.
Each subdirectory has an element: (DIRNAME . STARTMARKER).
***************
*** 1250,1256 ****
;; Enlarged by dired-advertise
;; Queried by function dired-buffers-for-dir. When this detects a
;; killed buffer, it is removed from this list.
! "Alist of directories and their associated dired buffers.")
(defun dired-buffers-for-dir (dir)
;; Return a list of buffers that dired DIR (top level or in-situ subdir).
--- 1251,1257 ----
;; Enlarged by dired-advertise
;; Queried by function dired-buffers-for-dir. When this detects a
;; killed buffer, it is removed from this list.
! "Alist of expanded directories and their associated dired buffers.")
(defun dired-buffers-for-dir (dir)
;; Return a list of buffers that dired DIR (top level or in-situ subdir).
***************
*** 1258,1286 ****
;; As a side effect, killed dired buffers for DIR are removed from
;; dired-buffers.
(setq dir (file-name-as-directory dir))
! (let ((alist dired-buffers) result elt)
(while alist
! (setq elt (car alist))
! (if (dired-in-this-tree dir (car elt))
! (let ((buf (cdr elt)))
! (if (buffer-name buf)
! (if (assoc dir (save-excursion
! (set-buffer buf)
! dired-subdir-alist))
! (setq result (cons buf result)))
! ;; else buffer is killed - clean up:
! (setq dired-buffers (delq elt dired-buffers)))))
(setq alist (cdr alist)))
result))
(defun dired-advertise ()
;;"Advertise in variable `dired-buffers' that we dired `default-directory'."
;; With wildcards we actually advertise too much.
! (if (memq (current-buffer) (dired-buffers-for-dir default-directory))
! t ; we have already advertised ourselves
! (setq dired-buffers
! (cons (cons default-directory (current-buffer))
! dired-buffers))))
(defun dired-unadvertise (dir)
;; Remove DIR from the buffer alist in variable dired-buffers.
--- 1259,1288 ----
;; As a side effect, killed dired buffers for DIR are removed from
;; dired-buffers.
(setq dir (file-name-as-directory dir))
! (let ((alist dired-buffers) result elt buf)
(while alist
! (setq elt (car alist)
! buf (cdr elt))
! (if (buffer-name buf)
! (if (dired-in-this-tree dir (car elt))
! (if (assoc dir (save-excursion
! (set-buffer buf)
! dired-subdir-alist))
! (setq result (cons buf result))))
! ;; else buffer is killed - clean up:
! (setq dired-buffers (delq elt dired-buffers)))
(setq alist (cdr alist)))
result))
(defun dired-advertise ()
;;"Advertise in variable `dired-buffers' that we dired `default-directory'."
;; With wildcards we actually advertise too much.
! (let ((expanded-default (expand-file-name default-directory)))
! (if (memq (current-buffer) (dired-buffers-for-dir expanded-default))
! t ; we have already advertised ourselves
! (setq dired-buffers
! (cons (cons expanded-default (current-buffer))
! dired-buffers)))))
(defun dired-unadvertise (dir)
;; Remove DIR from the buffer alist in variable dired-buffers.
***************
*** 1288,1294 ****
;; It does not affect buffers in which DIR is a subdir.
;; Removing is also done as a side-effect in dired-buffer-for-dir.
(setq dired-buffers
! (delq (assoc dir dired-buffers) dired-buffers)))
;; Tree Dired
--- 1290,1296 ----
;; It does not affect buffers in which DIR is a subdir.
;; Removing is also done as a side-effect in dired-buffer-for-dir.
(setq dired-buffers
! (delq (assoc (expand-file-name dir) dired-buffers) dired-buffers)))
;; Tree Dired
***************
*** 1297,1303 ****
(defun dired-in-this-tree (file dir)
;;"Is FILE part of the directory tree starting at DIR?"
(let (case-fold-search)
! (string-match (concat "^" (regexp-quote (expand-file-name dir))) file)))
(defun dired-normalize-subdir (dir)
;; Prepend default-directory to DIR if relative path name.
--- 1299,1305 ----
(defun dired-in-this-tree (file dir)
;;"Is FILE part of the directory tree starting at DIR?"
(let (case-fold-search)
! (string-match (concat "^" (regexp-quote dir)) file)))
(defun dired-normalize-subdir (dir)
;; Prepend default-directory to DIR if relative path name.
diff -c dired-aux.el.\~1\~ dired-aux.el
*** dired-aux.el.~1~ Mon Jul 11 21:46:11 1994
--- dired-aux.el Thu Sep 15 14:21:46 1994
***************
*** 707,713 ****
(defun dired-fun-in-all-buffers (directory fun &rest args)
;; In all buffers dired'ing DIRECTORY, run FUN with ARGS.
;; Return list of buffers where FUN succeeded (i.e., returned non-nil).
! (let ((buf-list (dired-buffers-for-dir directory))
(obuf (current-buffer))
buf success-list)
(while buf-list
--- 707,713 ----
(defun dired-fun-in-all-buffers (directory fun &rest args)
;; In all buffers dired'ing DIRECTORY, run FUN with ARGS.
;; Return list of buffers where FUN succeeded (i.e., returned non-nil).
! (let ((buf-list (dired-buffers-for-dir (expand-file-name directory)))
(obuf (current-buffer))
buf success-list)
(while buf-list
***************
*** 891,902 ****
(dired-fun-in-all-buffers from-dir
(function dired-rename-subdir-1) from-dir to-dir)
;; Update visited file name of all affected buffers
! (let ((blist (buffer-list)))
(while blist
(save-excursion
! (set-buffer (car blist))
(if (and buffer-file-name
! (dired-in-this-tree buffer-file-name from-dir))
(let ((modflag (buffer-modified-p))
(to-file (dired-replace-in-string
(concat "^" (regexp-quote from-dir))
--- 891,903 ----
(dired-fun-in-all-buffers from-dir
(function dired-rename-subdir-1) from-dir to-dir)
;; Update visited file name of all affected buffers
! (let ((expanded-from-dir (expand-file-name from-dir))
! (blist (buffer-list)))
(while blist
(save-excursion
! (set-buffer (car blist))
(if (and buffer-file-name
! (dired-in-this-tree buffer-file-name expanded-from-dir))
(let ((modflag (buffer-modified-p))
(to-file (dired-replace-in-string
(concat "^" (regexp-quote from-dir))
***************
*** 909,920 ****
(defun dired-rename-subdir-1 (dir to)
;; Rename DIR to TO in headerlines and dired-subdir-alist, if DIR or
;; one of its subdirectories is expanded in this buffer.
! (let ((alist dired-subdir-alist)
(elt nil))
(while alist
(setq elt (car alist)
alist (cdr alist))
! (if (dired-in-this-tree (car elt) dir)
;; ELT's subdir is affected by the rename
(dired-rename-subdir-2 elt dir to)))
(if (equal dir default-directory)
--- 910,922 ----
(defun dired-rename-subdir-1 (dir to)
;; Rename DIR to TO in headerlines and dired-subdir-alist, if DIR or
;; one of its subdirectories is expanded in this buffer.
! (let ((expanded-dir (expand-file-name dir))
! (alist dired-subdir-alist)
(elt nil))
(while alist
(setq elt (car alist)
alist (cdr alist))
! (if (dired-in-this-tree (car elt) expanded-dir)
;; ELT's subdir is affected by the rename
(dired-rename-subdir-2 elt dir to)))
(if (equal dir default-directory)
***************
*** 1530,1535 ****
--- 1532,1538 ----
;;"Kill all proper subdirs of DIRNAME, excluding DIRNAME itself.
;; With optional arg REMEMBER-MARKS, return an alist of marked files."
(interactive "DKill tree below directory: ")
+ (setq dirname (expand-file-name dirname))
(let ((s-alist dired-subdir-alist) dir m-alist)
(while s-alist
(setq dir (car (car s-alist))
diff -c dired-x.el.\~1\~ dired-x.el
*** dired-x.el.~1~ Tue Sep 6 02:56:43 1994
--- dired-x.el Thu Sep 15 14:25:22 1994
***************
*** 3,10 ****
;; Author: Sebastian Kremer <sk@thp.uni-koeln.de>
;; Lawrence R. Dodd <dodd@roebling.poly.edu>
;; Maintainer: Lawrence R. Dodd <dodd@roebling.poly.edu>
! ;; Version: 2.37+
! ;; Date: 1994/08/18 19:27:42
;; Keywords: dired extensions
;; Copyright (C) 1993, 1994 Free Software Foundation
--- 3,10 ----
;; Author: Sebastian Kremer <sk@thp.uni-koeln.de>
;; Lawrence R. Dodd <dodd@roebling.poly.edu>
;; Maintainer: Lawrence R. Dodd <dodd@roebling.poly.edu>
! ;; Version: 2.43
! ;; Date: 1994/08/21 21:34:58
;; Keywords: dired extensions
;; Copyright (C) 1993, 1994 Free Software Foundation
***************
*** 301,307 ****
(file-name-nondirectory fn)))
(save-excursion ; you never know where kill-buffer leaves you
(kill-buffer buf))))
! (let ((buf-list (dired-buffers-for-dir fn))
(buf nil))
(and buf-list
(y-or-n-p (format "Kill dired buffer%s of %s, too? "
--- 301,307 ----
(file-name-nondirectory fn)))
(save-excursion ; you never know where kill-buffer leaves you
(kill-buffer buf))))
! (let ((buf-list (dired-buffers-for-dir (expand-file-name fn)))
(buf nil))
(and buf-list
(y-or-n-p (format "Kill dired buffer%s of %s, too? "
***************
*** 1364,1370 ****
(defun dired-find-buffer-nocreate (dirname)
(if dired-find-subdir
(let* ((cur-buf (current-buffer))
! (buffers (nreverse (dired-buffers-for-dir dirname)))
(cur-buf-matches (and (memq cur-buf buffers)
;; wildcards must match, too:
(equal dired-directory dirname))))
--- 1364,1371 ----
(defun dired-find-buffer-nocreate (dirname)
(if dired-find-subdir
(let* ((cur-buf (current-buffer))
! (buffers (nreverse
! (dired-buffers-for-dir (expand-file-name dirname))))
(cur-buf-matches (and (memq cur-buf buffers)
;; wildcards must match, too:
(equal dired-directory dirname))))
***************
*** 1388,1418 ****
(setq list (cdr list)))
more-recent)))
- ;;; Same thing as `dired-buffers-for-dir' of dired.el? - lrd 11/23/93
- ;;; (defun dired-buffers-for-dir-exact (dir)
- ;;; ;; Return a list of buffers that dired DIR (a directory or wildcard)
- ;;; ;; at top level, or as subdirectory.
- ;;; ;; Top level matches must match the wildcard part too, if any.
- ;;; ;; The list is in reverse order of buffer creation, most recent last.
- ;;; ;; As a side effect, killed dired buffers for DIR are removed from
- ;;; ;; dired-buffers.
- ;;; (let ((alist dired-buffers) result elt)
- ;;; (while alist
- ;;; (setq elt (car alist)
- ;;; alist (cdr alist))
- ;;; (let ((buf (cdr elt)))
- ;;; (if (buffer-name buf)
- ;;; ;; Top level must match exactly against dired-directory in
- ;;; ;; case one of them is a wildcard.
- ;;; (if (or (equal dir (save-excursion (set-buffer buf)
- ;;; dired-directory))
- ;;; (assoc dir (save-excursion (set-buffer buf)
- ;;; dired-subdir-alist)))
- ;;; (setq result (cons buf result)))
- ;;; ;; else buffer is killed - clean up:
- ;;; (setq dired-buffers (delq elt dired-buffers)))))
- ;;; result))
-
;;; REDEFINE.
;;; Redefines dired.el's version of `dired-initial-position'
(defun dired-initial-position (dirname)
--- 1389,1394 ----
***************
*** 1630,1636 ****
;;; This section is provided for reports. It uses Barry A. Warsaw's
;;; reporter.el which is bundled with GNU Emacs v19.
! (defconst dired-x-version "2.37"
"Revision number of dired-x.el -- dired extra for GNU Emacs v19.
Type \\[dired-x-submit-report] to send a bug report. Available via anonymous
ftp in
--- 1606,1612 ----
;;; This section is provided for reports. It uses Barry A. Warsaw's
;;; reporter.el which is bundled with GNU Emacs v19.
! (defconst dired-x-version "2.43"
"Revision number of dired-x.el -- dired extra for GNU Emacs v19.
Type \\[dired-x-submit-report] to send a bug report. Available via anonymous
ftp in
Technical Details
Message-ID:
<9409151921.AA19550@roebling.poly.edu>Path:
arc1-ca.pugleaf.net!bga.com!news.sprintlink.net!howland.reston.ans.net!math.ohio-state.edu!cis.ohio-state.edu!roebling.poly.edu!doddShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fb2f1,54a2ef4a30b7db48 X-Google-Attributes: gidfb2f1,public X-Google-ArrivalTime: 1994-09-16 11:53:04 PST Path: arc1-ca.pugleaf.net!bga.com!news.sprintlink.net!howland.reston.ans.net!math.ohio-state.edu!cis.ohio-state.edu!roebling.poly.edu!dodd From: dodd@roebling.poly.edu (Lawrence R. Dodd) Newsgroups: gnu.emacs.bug Subject: Re: dired doesn't look for existing buffers Date: 15 Sep 1994 15:31:13 -0400 Organization: GNUs Not Usenet Lines: 330 Sender: daemon@cis.ohio-state.edu Approved: bug-gnu-emacs@prep.ai.mit.edu Distribution: gnu Message-ID: <9409151921.AA19550@roebling.poly.edu> Reply-To: dodd@roebling.poly.edu