# HG changeset patch # User Dave Love # Date 980514851 0 # Node ID 5b26cd3356a1efa02d09859bfedf860db1505960 # Parent 86098cdc4a123f42601fc6f921e3909b1ad2adc6 Revert last change. diff -r 86098cdc4a12 -r 5b26cd3356a1 lisp/dired-aux.el --- a/lisp/dired-aux.el Fri Jan 26 12:43:05 2001 +0000 +++ b/lisp/dired-aux.el Fri Jan 26 13:14:11 2001 +0000 @@ -99,7 +99,7 @@ (setq failures (dired-bunch-files 10000 (function dired-check-process) - (append + (append (list operation program new-attribute) (if (string-match "gnu" system-configuration) '("--") nil)) @@ -198,7 +198,7 @@ nil op-symbol files (function read-string) (format prompt (dired-mark-prompt arg files)) initial)) - + ;;; Cleaning a directory: flagging some backups for deletion. (defvar dired-file-version-alist) @@ -290,7 +290,7 @@ (progn (beginning-of-line) (delete-char 1) (insert dired-del-marker))))) - + ;;; Shell commands (defun dired-read-shell-command (prompt arg files) @@ -379,10 +379,12 @@ ;; your cmd. (let ((stuff-it (cond ((string-match "\\*" command) - (lambda (x) (replace-regexp-in-string "\\*" x command))) + (function (lambda (x) + (dired-replace-in-string "\\*" x command)))) ((string-match "\\?" command) - (lambda (x) (replace-regexp-in-string "\\?" x command))) - (t (lambda (x) (concat command " " x)))))) + (function (lambda (x) + (dired-replace-in-string "\\?" x command)))) + (t (function (lambda (x) (concat command " " x))))))) (if on-each (mapconcat stuff-it (mapcar 'shell-quote-argument file-list) ";") (let ((fns (mapconcat 'shell-quote-argument @@ -400,7 +402,7 @@ (shell-command command))) ;; Return nil for sake of nconc in dired-bunch-files. nil) - + ;; In Emacs 19 this will return program's exit status. ;; This is a separate function so that ange-ftp can redefine it. (defun dired-call-process (program discard &rest arguments) @@ -439,7 +441,7 @@ (kill-buffer err-buffer) (message "%s...done" msg) nil)))) - + ;; Commands that delete or redisplay part of the dired buffer. (defun dired-kill-line (&optional arg) @@ -498,7 +500,7 @@ count)))) ;;;###end dired-cmd.el - + ;;; 30K ;;;###begin dired-cp.el @@ -555,7 +557,7 @@ (setq suffix (car suffixes) suffixes nil)) (setq suffixes (cdr suffixes)))) ;; If so, compute desired new name. - (if suffix + (if suffix (setq newname (concat (substring file 0 (match-beginning 0)) (nth 1 suffix)))) (cond (handler @@ -589,7 +591,7 @@ "compress" "-f" file)) ;; Don't use NEWNAME with `compress'. (concat file ".Z")))))))) - + (defun dired-mark-confirm (op-symbol arg) ;; Request confirmation from the user that the operation described ;; by OP-SYMBOL is to be performed on the marked files. @@ -674,7 +676,7 @@ (apply 'message qprompt qs-args) (setq char (set qs-var (read-char)))) (memq (cdr elt) '(t y yes))))))) - + ;;;###autoload (defun dired-do-compress (&optional arg) "Compress or uncompress marked (or next ARG) files." @@ -747,7 +749,7 @@ arg) (dired-move-to-filename) (message "Redisplaying...done"))) - + (defun dired-update-file-line (file) ;; Delete the current line, and insert an entry for FILE. ;; If FILE is nil, then just delete the current line. @@ -847,7 +849,7 @@ ;; It inserts the file's absolute name, rather than ;; the relative one. That may be hard to fix since it ;; is probably controlled by something in ftp. - (goto-char opoint) + (goto-char opoint) (let ((inserted-name (dired-get-filename 'verbatim))) (if (file-name-directory inserted-name) (progn @@ -929,7 +931,7 @@ (save-excursion (forward-line 1) (point)))) (setq file (directory-file-name file)) (dired-add-entry file (if (eq ?\040 marker) nil marker))))) - + ;;; Copy, move/rename, making hard and symbolic links (defcustom dired-recursive-copies nil @@ -1026,7 +1028,7 @@ (if (and buffer-file-name (dired-in-this-tree buffer-file-name expanded-from-dir)) (let ((modflag (buffer-modified-p)) - (to-file (replace-regexp-in-string + (to-file (dired-replace-in-string (concat "^" (regexp-quote from-dir)) to-dir buffer-file-name))) @@ -1085,8 +1087,8 @@ ;; Update buffer-local dired-subdir-alist (setcar elt (dired-normalize-subdir - (replace-regexp-in-string regexp newtext (car elt))))))) - + (dired-replace-in-string regexp newtext (car elt))))))) + ;; The basic function for half a dozen variations on cp/mv/ln/ln -s. (defun dired-create-files (file-creator operation fn-list name-constructor &optional marker-char) @@ -1181,7 +1183,7 @@ (message "%s: %s file%s" operation success-count (dired-plural-s success-count))))) (dired-move-to-filename)) - + (defun dired-do-create-files (op-symbol file-creator operation arg &optional marker-char op1 how-to) @@ -1302,7 +1304,7 @@ (dired-current-directory))))) (or other-dir this-dir)) this-dir))) - + ;;;###autoload (defun dired-create-directory (directory) "Create a directory called DIRECTORY." @@ -1379,7 +1381,7 @@ (dired-do-create-files 'move (function dired-rename-file) "Move" arg dired-keep-marker-rename "Rename")) ;;;###end dired-cp.el - + ;;; 5K ;;;###begin dired-re.el (defun dired-do-create-files-regexp @@ -1542,7 +1544,7 @@ (dired-rename-non-directory (function downcase) "Rename downcase" arg)) ;;;###end dired-re.el - + ;;; 13K ;;;###begin dired-ins.el @@ -1695,7 +1697,7 @@ (message "Reading directory %s..." dirname) (let ((dired-actual-switches (or switches - (replace-regexp-in-string "R" "" dired-actual-switches)))) + (dired-replace-in-string "R" "" dired-actual-switches)))) (if (equal dirname (car (car (reverse dired-subdir-alist)))) ;; top level directory may contain wildcards: (dired-readin-insert dired-directory) @@ -1798,7 +1800,7 @@ (setq result (cons (substring str end) result))) (nreverse result))) - + ;;; moving by subdirectories ;;;###autoload @@ -1841,7 +1843,7 @@ ;; at either \r or \n after this function succeeds. (progn (skip-chars-forward "^\r\n") (point))))) - + ;;;###autoload (defun dired-mark-subdir-files () "Mark all files except `.' and `..' in current subdirectory. @@ -1903,7 +1905,7 @@ (if pos (goto-char pos) (error "At the bottom")))) - + ;;; hiding (defun dired-unhide-subdir () @@ -1970,7 +1972,7 @@ ;;;###end dired-ins.el - + ;; Functions for searching in tags style among marked files. ;;;###autoload @@ -1990,14 +1992,14 @@ (interactive "sQuery replace in marked files (regexp): \nsQuery replace %s by: \nP") (tags-query-replace from to delimited '(dired-get-marked-files))) - + ;;;###autoload (defun dired-show-file-type (file &optional deref-symlinks) "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." +true then the type of the file linked to by FILE is printed instead." (interactive (list (dired-get-filename t) current-prefix-arg)) - (with-temp-buffer + (with-temp-buffer (if deref-symlinks (call-process "file" nil t t "-L" file) (call-process "file" nil t t file)) diff -r 86098cdc4a12 -r 5b26cd3356a1 lisp/dired.el --- a/lisp/dired.el Fri Jan 26 12:43:05 2001 +0000 +++ b/lisp/dired.el Fri Jan 26 13:14:11 2001 +0000 @@ -292,7 +292,7 @@ '(".+" (dired-move-to-filename) nil (0 font-lock-function-name-face))) ;; ;; Symbolic links. - (list dired-re-sym + (list dired-re-sym '(".+" (dired-move-to-filename) nil (0 font-lock-keyword-face))) ;; ;; Files suffixed with `completion-ignored-extensions'. @@ -303,7 +303,7 @@ (list (concat "\\(" (mapconcat 'identity extensions "\\|") "\\|#\\)$") '(".+" (dired-move-to-filename) nil (0 font-lock-string-face)))))) "Additional expressions to highlight in Dired mode.") - + ;;; Macros must be defined before they are used, for the byte compiler. ;; Mark all files for which CONDITION evals to non-nil. @@ -406,10 +406,10 @@ (save-excursion (nreverse (dired-map-over-marks (dired-get-filename localp) arg)))) - + ;; Function dired-ls is redefinable for VMS, ange-ftp, Prospero or ;; other special applications. - + ;; The dired command (defun dired-read-dir-and-switches (str) @@ -514,12 +514,12 @@ (setq buffer (create-file-buffer (directory-file-name dirname))))) (set-buffer buffer) (if (not new-buffer-p) ; existing buffer ... - (cond (switches ; ... but new switches + (cond (switches ; ... but new switches ;; file list may have changed - (if (consp dir-or-list) + (if (consp dir-or-list) (setq dired-directory dir-or-list)) ;; this calls dired-revert - (dired-sort-other switches)) + (dired-sort-other switches)) ;; If directory has changed on disk, offer to revert. ((if (let ((attributes (file-attributes dirname)) (modtime (visited-file-modtime))) @@ -586,7 +586,7 @@ (setq blist (cdr blist)))))) found)) - + ;; Read in a new dired buffer ;; dired-readin differs from dired-insert-subdir in that it accepts @@ -749,7 +749,7 @@ ;; boundaries. (save-excursion (insert " " (directory-file-name dir) ":\n"))) - + ;; Reverting a dired buffer (defun dired-revert (&optional arg noconfirm) @@ -857,7 +857,7 @@ (let ((handler (find-file-name-handler dir 'dired-uncache))) (if handler (funcall handler 'dired-uncache dir)))) - + ;; dired mode key bindings and initialization (defvar dired-mode-map nil "Local keymap for dired-mode buffers.") @@ -1188,7 +1188,7 @@ :help "Copy current file or all marked files")) (setq dired-mode-map map))) - + ;; Dired mode is suitable only for specially formatted data. (put 'dired-mode 'mode-class 'special) @@ -1282,7 +1282,7 @@ (set (make-local-variable 'font-lock-defaults) '(dired-font-lock-keywords t)) (dired-sort-other dired-actual-switches t) (run-hooks 'dired-mode-hook)) - + ;; Idiosyncratic dired commands that don't deal with marks. (defun dired-summary () @@ -1402,7 +1402,7 @@ (interactive) (let ((file (file-name-sans-versions (dired-get-filename) t))) (display-buffer (find-file-noselect file)))) - + ;;; Functions for extracting and manipulating file names in dired buffers. (defun dired-get-filename (&optional localp no-error-if-not-filep) @@ -1492,7 +1492,7 @@ ;;; (or no-error ;;; (error "%s: not in directory tree growing at %s" file dir)) file)) - + ;;; Functions for finding the file name in a dired buffer line. (defvar dired-move-to-filename-regexp @@ -1502,7 +1502,7 @@ ;; weiand: changed: month ends potentially with . or , or ., ;;old (month (concat l l "+ *")) (month (concat l l "+[.]?,? *")) - ;; Recognize any non-ASCII character. + ;; Recognize any non-ASCII character. ;; The purpose is to match a Kanji character. (k "[^\0-\177]") ;; (k "[^\x00-\x7f\x80-\xff]") @@ -1515,7 +1515,7 @@ (western (concat "\\(" month s dd "\\|" dd s month "\\)" ;; weiand: changed: year potentially unaligned ;;old s "\\(" HH:MM "\\|" s yyyy "\\|" yyyy s "\\)")) - s "\\(" HH:MM + s "\\(" HH:MM "\\|" yyyy s s "?" "\\|" s "?" yyyy "\\)")) @@ -1612,7 +1612,7 @@ nil (point)))) - + ;; Keeping Dired buffers in sync with the filesystem and with each other (defun dired-buffers-for-dir (dir &optional file) @@ -1677,7 +1677,7 @@ (substring pattern matched-in-pattern)) "\\'"))) - + (defun dired-advertise () ;;"Advertise in variable `dired-buffers' that we dired `default-directory'." @@ -1696,7 +1696,7 @@ ;; 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 ;;; utility functions @@ -1898,7 +1898,7 @@ ;; You may redefine this function as you wish, e.g. like in dired-x.el. (end-of-line) (if dired-trivial-filenames (dired-goto-next-nontrivial-file))) - + ;; These are hooks which make tree dired work. ;; They are in this file because other parts of dired need to call them. ;; But they don't call the rest of tree dired unless there are subdirs loaded. @@ -1935,7 +1935,7 @@ (if (or (null (cdr dired-subdir-alist)) (not (dired-next-subdir 1 t t))) (point-max) (point)))) - + ;; Deleting files (defcustom dired-recursive-deletes nil ; Default only delete empty directories. @@ -1951,7 +1951,7 @@ (const :tag "Ask for each top directory only" top)) :group 'dired) -;; Match anything but `.' and `..'. +;; Match anything but `.' and `..'. (defvar dired-re-no-dot "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*") ;; Delete file, possibly delete a directory and all its files. @@ -2064,7 +2064,7 @@ (save-excursion (and (cdr dired-subdir-alist) (dired-goto-subdir fn) (dired-kill-subdir)))) - + ;; Confirmation (defun dired-marker-regexp () @@ -2184,7 +2184,7 @@ j (1+ j) files (cdr files))) rows)) - + ;; Commands to mark or flag file(s) at or near current line. (defun dired-repeat-over-lines (arg function) @@ -2325,7 +2325,7 @@ (list ?\040 dired-marker-char) (list dired-marker-char ?\040)))) (forward-line 1))))) - + ;;; Commands to mark or flag files based on their characteristics or names. (defvar dired-regexp-history nil @@ -2444,7 +2444,7 @@ "auto save file"))) (defvar dired-garbage-files-regexp - "\\.log$\\|\\.toc$\\|\\.dvi$\\|\\.bak$\\|\\.orig$\\|\\.rej$" + "\\.log$\\|\\.toc$\\|\\.dvi$\\|\\.bak$\\|\\.orig$\\|\\.rej$" "*Regular expression to match \"garbage\" files for `dired-flag-garbage-files'.") (defun dired-flag-garbage-files () @@ -2504,7 +2504,7 @@ (defun dired-unmark-all-files (mark &optional arg) "Remove a specific mark (or any mark) from every file. -After this command, type the mark character to remove, +After this command, type the mark character to remove, or type RET to remove all marks. With prefix arg, query for each marked file. Type \\[help-command] at that time for help." @@ -2529,7 +2529,7 @@ (message (if (= count 1) "1 mark removed" "%d marks removed") count)))) - + ;; Logging failures operating on files, and showing the results. (defvar dired-log-buffer "*Dired log*") @@ -2579,7 +2579,7 @@ ;; Log a summary describing a bunch of errors. (dired-log (concat "\n" string)) (dired-log t)) - + ;;; Sorting ;; Most ls can only sort by name or by date (with -t), nothing else. @@ -2629,15 +2629,15 @@ (if (string-match " " dired-actual-switches) ;; New toggle scheme: add/remove a trailing " -t" (if (string-match " -t\\'" dired-actual-switches) - (replace-regexp-in-string " -t\\'" "" dired-actual-switches) + (dired-replace-in-string " -t\\'" "" dired-actual-switches) (concat dired-actual-switches " -t")) ;; old toggle scheme: look for some 't' switch and add/remove it (concat "-l" - (replace-regexp-in-string (concat "[-lt" - dired-ls-sorting-switches "]") - "" - dired-actual-switches) + (dired-replace-in-string (concat "[-lt" + dired-ls-sorting-switches "]") + "" + dired-actual-switches) (if (string-match (concat "[t" dired-ls-sorting-switches "]") dired-actual-switches) "" @@ -2645,6 +2645,18 @@ (dired-sort-set-modeline) (revert-buffer)) +;; Some user code loads dired especially for this. +(defun dired-replace-in-string (regexp newtext string) + ;; Replace REGEXP with NEWTEXT everywhere in STRING and return result. + ;; NEWTEXT is taken literally---no \\DIGIT escapes will be recognized. + (let ((result "") (start 0) mb me) + (while (string-match regexp string start) + (setq mb (match-beginning 0) + me (match-end 0) + result (concat result (substring string start mb) newtext) + start me)) + (concat result (substring string start)))) + (defun dired-sort-other (switches &optional no-revert) ;; Specify new ls SWITCHES for current dired buffer. Values matching ;; `dired-sort-by-date-regexp' or `dired-sort-by-name-regexp' set the @@ -2689,7 +2701,7 @@ ;; No pre-R subdir alist, so revert to main directory ;; 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. @@ -2902,9 +2914,9 @@ (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." +true then the type of the file linked to by FILE is printed instead." t) - + (if (eq system-type 'vax-vms) (load "dired-vms"))