emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/dired.el [emacs-unicode-2]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/dired.el [emacs-unicode-2]
Date: Mon, 28 Jun 2004 04:52:38 -0400

Index: emacs/lisp/dired.el
diff -c emacs/lisp/dired.el:1.264.2.1 emacs/lisp/dired.el:1.264.2.2
*** emacs/lisp/dired.el:1.264.2.1       Fri Apr 16 12:49:49 2004
--- emacs/lisp/dired.el Mon Jun 28 07:28:28 2004
***************
*** 60,65 ****
--- 60,69 ----
    :type 'string
    :group 'dired)
  
+ (defvar dired-subdir-switches nil
+   "If non-nil, switches passed to `ls' for inserting subdirectories.
+ If nil, `dired-listing-switches' is used.")
+ 
  ; Don't use absolute file names as /bin should be in any PATH and people
  ; may prefer /usr/local/gnu/bin or whatever.  However, chown is
  ; usually not in PATH.
***************
*** 274,286 ****
  (defvar dired-re-perms "[-bcdlps][-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).
  The order of elements is the reverse of the order in the buffer.
  In simple cases, this list contains one element.")
  
  (defvar dired-subdir-regexp "^. \\([^\n\r]+\\)\\(:\\)[\n\r]"
    "Regexp matching a maybe hidden subdirectory line in `ls -lR' output.
  Subexpression 1 is the subdirectory proper, no trailing colon.
--- 278,295 ----
  (defvar dired-re-perms "[-bcdlps][-r][-w].[-r][-w].[-r][-w].")
  (defvar dired-re-dot "^.* \\.\\.?/?$")
  
! ;; The subdirectory names in the next two lists are expanded.
  (defvar dired-subdir-alist nil
    "Association list of subdirectories and their buffer positions.
  Each subdirectory has an element: (DIRNAME . STARTMARKER).
  The order of elements is the reverse of the order in the buffer.
  In simple cases, this list contains one element.")
  
+ (defvar dired-switches-alist nil
+   "Keeps track of which switches to use for inserted subdirectories.
+ This is an alist of the form (SUBDIR . SWITCHES).")
+ (make-variable-buffer-local 'dired-switches-alist)
+ 
  (defvar dired-subdir-regexp "^. \\([^\n\r]+\\)\\(:\\)[\n\r]"
    "Regexp matching a maybe hidden subdirectory line in `ls -lR' output.
  Subexpression 1 is the subdirectory proper, no trailing colon.
***************
*** 871,877 ****
  Should not fail even on completely garbaged buffers.
  Preserves old cursor, marks/flags, hidden-p."
    (widen)                             ; just in case user narrowed
!   (let ((opoint (point))
        (ofile (dired-get-filename nil t))
        (mark-alist nil)                ; save marked files
        (hidden-subdirs (dired-remember-hidden))
--- 880,887 ----
  Should not fail even on completely garbaged buffers.
  Preserves old cursor, marks/flags, hidden-p."
    (widen)                             ; just in case user narrowed
!   (let ((modflag (buffer-modified-p))
!       (opoint (point))
        (ofile (dired-get-filename nil t))
        (mark-alist nil)                ; save marked files
        (hidden-subdirs (dired-remember-hidden))
***************
*** 898,906 ****
      (save-excursion                   ; hide subdirs that were hidden
        (dolist (dir hidden-subdirs)
        (if (dired-goto-subdir dir)
!           (dired-hide-subdir 1)))))
    ;; outside of the let scope
! ;;; Might as well not override the user if the user changed this.
  ;;;  (setq buffer-read-only t)
    )
  
--- 908,917 ----
      (save-excursion                   ; hide subdirs that were hidden
        (dolist (dir hidden-subdirs)
        (if (dired-goto-subdir dir)
!           (dired-hide-subdir 1))))
!     (unless modflag (restore-buffer-modified-p nil)))
    ;; outside of the let scope
! ;;;  Might as well not override the user if the user changed this.
  ;;;  (setq buffer-read-only t)
    )
  
***************
*** 1160,1165 ****
--- 1171,1178 ----
                  :help "Edit file at cursor"))
      (define-key map [menu-bar immediate create-directory]
        '(menu-item "Create Directory..." dired-create-directory))
+     (define-key map [menu-bar immediate wdired-mode]
+       '(menu-item "Edit File Names" wdired-change-to-wdired-mode))
  
      (define-key map [menu-bar regexp]
        (cons "Regexp" (make-sparse-keymap "Regexp")))
***************
*** 1402,1407 ****
--- 1415,1423 ----
         (or switches dired-listing-switches))
    (set (make-local-variable 'font-lock-defaults)
         '(dired-font-lock-keywords t nil nil beginning-of-line))
+   (set (make-local-variable 'desktop-save-buffer)
+        'dired-desktop-buffer-misc-data)
+   (setq dired-switches-alist nil)
    (dired-sort-other dired-actual-switches t)
    (run-mode-hooks 'dired-mode-hook)
    (when (featurep 'x-dnd)
***************
*** 1427,1440 ****
  (defun dired-undo ()
    "Undo in a dired buffer.
  This doesn't recover lost files, it just undoes changes in the buffer itself.
! You can use it to recover marks, killed lines or subdirs.
! In the latter case, you have to do \\[dired-build-subdir-alist] to
! parse the buffer again."
    (interactive)
    (let (buffer-read-only)
!     (undo)
!     (message "Change in Dired buffer undone.
! Actual changes in files cannot be undone by Emacs.")))
  
  (defun dired-next-line (arg)
    "Move down lines then position at filename.
--- 1443,1455 ----
  (defun dired-undo ()
    "Undo in a dired buffer.
  This doesn't recover lost files, it just undoes changes in the buffer itself.
! You can use it to recover marks, killed lines or subdirs."
    (interactive)
    (let (buffer-read-only)
!     (undo))
!   (dired-build-subdir-alist)
!   (message "Change in Dired buffer undone.
! Actual changes in files cannot be undone by Emacs."))
  
  (defun dired-next-line (arg)
    "Move down lines then position at filename.
***************
*** 1630,1638 ****
       ((eq localp 'verbatim)
        file)
       ((and (not no-error-if-not-filep)
!          (save-excursion
!            (beginning-of-line)
!            (looking-at dired-re-dot)))
        (error "Cannot operate on `.' or `..'"))
       ((and (eq localp 'no-dir) already-absolute)
        (file-name-nondirectory file))
--- 1645,1651 ----
       ((eq localp 'verbatim)
        file)
       ((and (not no-error-if-not-filep)
!          (member file '("." "..")))
        (error "Cannot operate on `.' or `..'"))
       ((and (eq localp 'no-dir) already-absolute)
        (file-name-nondirectory file))
***************
*** 1696,1702 ****
        (setq dir (expand-file-name dir)))
    (if (string-match (concat "^" (regexp-quote dir)) file)
        (substring file (match-end 0))
! ;;; (or no-error
  ;;;   (error "%s: not in directory tree growing at %s" file dir))
      file))
  
--- 1709,1715 ----
        (setq dir (expand-file-name dir)))
    (if (string-match (concat "^" (regexp-quote dir)) file)
        (substring file (match-end 0))
! ;;;  (or no-error
  ;;;   (error "%s: not in directory tree growing at %s" file dir))
      file))
  
***************
*** 2071,2077 ****
                             (goto-char (match-beginning 0))
                             (beginning-of-line)
                             (point-marker))))
!       (if (> count 1)
          (message "Buffer includes %d directories" count))
        ;; We don't need to sort it because it is in buffer order per
        ;; constructionem.  Return new alist:
--- 2084,2090 ----
                             (goto-char (match-beginning 0))
                             (beginning-of-line)
                             (point-marker))))
!       (if (and (> count 1) (interactive-p))
          (message "Buffer includes %d directories" count))
        ;; We don't need to sort it because it is in buffer order per
        ;; constructionem.  Return new alist:
***************
*** 3018,3261 ****
            ;; listing:
            (list (car (reverse dired-subdir-alist))))))))
  
- ;; To make this file smaller, the less common commands
- ;; go in a separate file.  But autoload them here
- ;; to make the separation invisible.
- 
- (autoload 'dired-diff "dired-aux"
-   "Compare file at point with file FILE using `diff'.
- FILE defaults to the file at the mark.  (That's the mark set by
- \\[set-mark-command], not by Dired's \\[dired-mark] command.)
- The prompted-for file is the first file given to `diff'."
-   t)
- 
- (autoload 'dired-backup-diff "dired-aux"
-   "Diff this file with its backup file or vice versa.
- Uses the latest backup, if there are several numerical backups.
- If this file is a backup, diff it with its original.
- The backup file is the first file given to `diff'."
-   t)
- 
- (autoload 'dired-clean-directory "dired-aux"
-   "Flag numerical backups for deletion.
- Spares `dired-kept-versions' latest versions, and `kept-old-versions' oldest.
- Positive prefix arg KEEP overrides `dired-kept-versions';
- Negative prefix arg KEEP overrides `kept-old-versions' with KEEP made 
positive.
- 
- To clear the flags on these files, you can use \\[dired-flag-backup-files]
- with a prefix argument."
-   t)
- 
- (autoload 'dired-do-chmod "dired-aux"
-   "Change the mode of the marked (or next ARG) files.
- This calls chmod, thus symbolic modes like `g+w' are allowed."
-   t)
- 
- (autoload 'dired-do-chgrp "dired-aux"
-   "Change the group of the marked (or next ARG) files."
-   t)
- 
- (autoload 'dired-do-chown "dired-aux"
-   "Change the owner of the marked (or next ARG) files."
-   t)
- 
- (autoload 'dired-do-touch "dired-aux"
-   "Change the timestamp of the marked (or next ARG) files."
-   t)
- 
- (autoload 'dired-do-print "dired-aux"
-   "Print the marked (or next ARG) files.
- Uses the shell command coming from variables `lpr-command' and
- `lpr-switches' as default."
-   t)
- 
- (autoload 'dired-do-shell-command "dired-aux"
-   "Run a shell command COMMAND on the marked files.
- If no files are marked or a specific numeric prefix arg is given,
- the next ARG files are used.  Just \\[universal-argument] means the current 
file.
- The prompt mentions the file(s) or the marker, as appropriate.
- 
- If there is a `*' in COMMAND, surrounded by whitespace, this runs
- COMMAND just once with the entire file list substituted there.
- 
- If there is no `*', but there is a `?' in COMMAND, surrounded by
- whitespace, this runs COMMAND on each file individually with the
- file name substituted for `?'.
- 
- Otherwise, this runs COMMAND on each file individually with the
- file name added at the end of COMMAND (separated by a space).
- 
- `*' and `?' when not surrounded by whitespace have no special
- significance for `dired-do-shell-command', and are passed through
- normally to the shell, but you must confirm first.  To pass `*' by
- itself to the shell as a wildcard, type `*\"\"'.
- 
- If COMMAND produces output, it goes to a separate buffer.
- 
- This feature does not try to redisplay Dired buffers afterward, as
- there's no telling what files COMMAND may have changed.
- Type \\[dired-do-redisplay] to redisplay the marked files.
- 
- When COMMAND runs, its working directory is the top-level directory of
- the Dired buffer, so output files usually are created there instead of
- in a subdir.
- 
- In a noninteractive call (from Lisp code), you must specify
- the list of file names explicitly with the FILE-LIST argument."
-   t)
- 
- (autoload 'dired-do-kill-lines "dired-aux"
-   "Kill all marked lines (not the files).
- With a prefix arg, kill all lines not marked or flagged."
-   t)
- 
- (autoload 'dired-do-compress "dired-aux"
-   "Compress or uncompress marked (or next ARG) files."
-   t)
- 
- (autoload 'dired-do-byte-compile "dired-aux"
-   "Byte compile marked (or next ARG) Emacs Lisp files."
-   t)
- 
- (autoload 'dired-do-load "dired-aux"
-   "Load the marked (or next ARG) Emacs Lisp files."
-   t)
- 
- (autoload 'dired-do-redisplay "dired-aux"
-   "Redisplay all marked (or next ARG) files.
- If on a subdir line, redisplay that subdirectory.  In that case,
- a prefix arg lets you edit the `ls' switches used for the new listing."
-   t)
- 
- (autoload 'dired-create-directory "dired-aux"
-   "Create a directory called DIRECTORY."
-   t)
- 
- (autoload 'dired-do-copy "dired-aux"
-   "Copy all marked (or next ARG) files, or copy the current file.
- Thus, a zero prefix argument copies nothing.  But it toggles the
- variable `dired-copy-preserve-time' (which see)."
-   t)
- 
- (autoload 'dired-do-symlink "dired-aux"
-   "Make symbolic links to current file or all marked (or next ARG) files.
- When operating on just the current file, you specify the new name.
- When operating on multiple or marked files, you specify a directory
- and new symbolic links are made in that directory
- with the same names that the files currently have."
-   t)
- 
- (autoload 'dired-do-hardlink "dired-aux"
-   "Add names (hard links) current file or all marked (or next ARG) files.
- When operating on just the current file, you specify the new name.
- When operating on multiple or marked files, you specify a directory
- and new hard links are made in that directory
- with the same names that the files currently have."
-   t)
- 
- (autoload 'dired-do-rename "dired-aux"
-   "Rename current file or all marked (or next ARG) files.
- When renaming just the current file, you specify the new name.
- When renaming multiple or marked files, you specify a directory."
-   t)
- 
- (autoload 'dired-do-rename-regexp "dired-aux"
-   "Rename marked files containing REGEXP to NEWNAME.
- As each match is found, the user must type a character saying
-   what to do with it.  For directions, type \\[help-command] at that time.
- NEWNAME may contain \\=\\<n> or \\& as in `query-replace-regexp'.
- REGEXP defaults to the last regexp used.
- With a zero prefix arg, renaming by regexp affects the full file name;
- usually only the non-directory part of file names is used and changed."
-   t)
- 
- (autoload 'dired-do-copy-regexp "dired-aux"
-   "Copy all marked files containing REGEXP to NEWNAME.
- See function `dired-do-rename-regexp' for more info."
-   t)
- 
- (autoload 'dired-do-hardlink-regexp "dired-aux"
-   "Hardlink all marked files containing REGEXP to NEWNAME.
- See function `dired-do-rename-regexp' for more info."
-   t)
- 
- (autoload 'dired-do-symlink-regexp "dired-aux"
-   "Symlink all marked files containing REGEXP to NEWNAME.
- See function `dired-do-rename-regexp' for more info."
-   t)
- 
- (autoload 'dired-upcase "dired-aux"
-   "Rename all marked (or next ARG) files to upper case."
-   t)
- 
- (autoload 'dired-downcase "dired-aux"
-   "Rename all marked (or next ARG) files to lower case."
-   t)
- 
- (autoload 'dired-maybe-insert-subdir "dired-aux"
-   "Insert this subdirectory into the same dired buffer.
- If it is already present, just move to it (type \\[dired-do-redisplay] to 
refresh),
-   else inserts it at its natural place (as `ls -lR' would have done).
- With a prefix arg, you may edit the ls switches used for this listing.
-   You can add `R' to the switches to expand the whole tree starting at
-   this subdirectory.
- This function takes some pains to conform to `ls -lR' output."
-   t)
- 
- (autoload 'dired-next-subdir "dired-aux"
-   "Go to next subdirectory, regardless of level."
-   t)
- 
- (autoload 'dired-prev-subdir "dired-aux"
-   "Go to previous subdirectory, regardless of level.
- When called interactively and not on a subdir line, go to this subdir's line."
-   t)
- 
- (autoload 'dired-goto-subdir "dired-aux"
-   "Go to end of header line of DIR in this dired buffer.
- Return value of point on success, otherwise return nil.
- The next char is either \\n, or \\r if DIR is hidden."
-   t)
- 
- (autoload 'dired-mark-subdir-files "dired-aux"
-   "Mark all files except `.' and `..'."
-   t)
- 
- (autoload 'dired-kill-subdir "dired-aux"
-   "Remove all lines of current subdirectory.
- Lower levels are unaffected."
-   t)
- 
- (autoload 'dired-tree-up "dired-aux"
-   "Go up ARG levels in the dired tree."
-   t)
- 
- (autoload 'dired-tree-down "dired-aux"
-   "Go down in the dired tree."
-   t)
- 
- (autoload 'dired-hide-subdir "dired-aux"
-   "Hide or unhide the current subdirectory and move to next directory.
- Optional prefix arg is a repeat factor.
- Use \\[dired-hide-all] to (un)hide all directories."
-   t)
- 
- (autoload 'dired-hide-all "dired-aux"
-   "Hide all subdirectories, leaving only their header lines.
- If there is already something hidden, make everything visible again.
- Use \\[dired-hide-subdir] to (un)hide a particular subdirectory."
-   t)
- 
- (autoload 'dired-show-file-type "dired-aux"
-   "Print the type of FILE, according to the `file' command.
- If FILE is a symbolic link and the optional argument DEREF-SYMLINKS is
- true then the type of the file linked to by FILE is printed instead."
-   t)
- 
- (autoload 'dired-run-shell-command "dired-aux")
- 
- (autoload 'dired-query "dired-aux")
- 
  
  ;;;;  Drag and drop support
  
--- 3031,3036 ----
***************
*** 3272,3287 ****
        nil)))
  
  (defun dired-dnd-popup-notice ()
!   (x-popup-dialog 
     t
!    '("Recursive copies not enabled.\nSee variable dired-recursive-copies." 
       ("Ok" . nil))))
  
  
  (defun dired-dnd-do-ask-action (uri)
    ;; No need to get actions and descriptions from the source,
    ;; we only have three actions anyway.
!   (let ((action (x-popup-menu 
                 t
                 (list "What action?"
                       (cons ""
--- 3047,3062 ----
        nil)))
  
  (defun dired-dnd-popup-notice ()
!   (x-popup-dialog
     t
!    '("Recursive copies not enabled.\nSee variable dired-recursive-copies."
       ("Ok" . nil))))
  
  
  (defun dired-dnd-do-ask-action (uri)
    ;; No need to get actions and descriptions from the source,
    ;; we only have three actions anyway.
!   (let ((action (x-popup-menu
                 t
                 (list "What action?"
                       (cons ""
***************
*** 3340,3346 ****
--- 3115,3163 ----
    (let ((local-file (x-dnd-get-local-file-uri uri)))
      (if local-file (dired-dnd-handle-local-file local-file action)
        nil)))
+ 
+ 
+ ;;;;  Desktop support
+ 
+ (eval-when-compile (require 'desktop))
  
+ (defun dired-desktop-buffer-misc-data (desktop-dirname)
+   "Auxiliary information to be saved in desktop file."
+   (cons
+    ;; Value of `dired-directory'.
+    (if (consp dired-directory)
+        ;; Directory name followed by list of files.
+        (cons (desktop-file-name (car dired-directory) desktop-dirname)
+              (cdr dired-directory))
+      ;; Directory name, optionally with with shell wildcard.
+      (desktop-file-name dired-directory desktop-dirname))
+    ;; Subdirectories in `dired-subdir-alist'.
+    (cdr
+      (nreverse
+        (mapcar
+          (function (lambda (f) (desktop-file-name (car f) desktop-dirname)))
+          dired-subdir-alist)))))
+ 
+ ;;;###autoload
+ (defun dired-restore-desktop-buffer (desktop-buffer-file-name
+                                      desktop-buffer-name
+                                      desktop-buffer-misc)
+   "Restore a dired buffer specified in a desktop file."
+   ;; First element of `desktop-buffer-misc' is the value of `dired-directory'.
+   ;; This value is a directory name, optionally with with shell wildcard or
+   ;; a directory name followed by list of files.
+   (let* ((dired-dir (car desktop-buffer-misc))
+          (dir (if (consp dired-dir) (car dired-dir) dired-dir)))
+     (if (file-directory-p (file-name-directory dir))
+         (progn
+           (dired dired-dir)
+           ;; The following elements of `desktop-buffer-misc' are the keys
+           ;; from `dired-subdir-alist'.
+           (mapcar 'dired-maybe-insert-subdir (cdr desktop-buffer-misc))
+           (current-buffer))
+       (message "Desktop: Directory %s no longer exists." dir)
+       (when desktop-missing-file-warning (sit-for 1))
+       nil)))
  
  
  (if (eq system-type 'vax-vms)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]