mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-27 07:37:33 +00:00
Merge dired-x's dired-add-entry modifications into the main definition.
* lisp/dired-aux.el (dired-add-entry): Give it a doc-string. Merge dired-x's dired-omit handling here. (dired-omit-mode, dired-omit-regexp, dired-omit-localp): Declare. * lisp/dired-x.el (dired-omit-new-add-entry): Merge into dired-add-entry. * doc/misc/dired-x.texi (Technical Details): No longer redefines dired-add-entry.
This commit is contained in:
parent
4d737eb2db
commit
30abce25f2
@ -1,3 +1,7 @@
|
||||
2011-02-19 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* dired-x.texi (Technical Details): No longer redefines dired-add-entry.
|
||||
|
||||
2011-02-18 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* dired-x.texi (Optional Installation File At Point): Simplify.
|
||||
|
@ -190,14 +190,9 @@ from @file{dired.el}
|
||||
@end itemize
|
||||
|
||||
@noindent
|
||||
and the following functions from @file{dired-aux.el}
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
@code{dired-add-entry}
|
||||
@item
|
||||
@code{dired-read-shell-command}
|
||||
@end itemize
|
||||
and from @file{dired-aux.el} the function @code{dired-read-shell-command}.
|
||||
In addition, once @file{dired.el} is loaded, @code{dired-add-entry}
|
||||
obeys Dired Omit mode (@pxref{Omitting Files in Dired}), if it is active.
|
||||
|
||||
@node Installation, Omitting Files in Dired, Introduction, Top
|
||||
@chapter Installation
|
||||
|
@ -1,5 +1,10 @@
|
||||
2011-02-19 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* dired-x.el (dired-omit-new-add-entry): Merge into dired-add-entry.
|
||||
* dired-aux.el (dired-add-entry): Give it a doc-string.
|
||||
Merge dired-x's dired-omit handling here.
|
||||
(dired-omit-mode, dired-omit-regexp, dired-omit-localp): Declare.
|
||||
|
||||
* international/mule-diag.el (list-input-methods-1):
|
||||
Indent all lines of multi-line doc-strings. (Bug#8066)
|
||||
|
||||
|
@ -1039,14 +1039,37 @@ See Info node `(emacs)Subdir switches' for more details."
|
||||
(file-name-directory filename) (file-name-nondirectory filename)
|
||||
(function dired-add-entry) filename marker-char))
|
||||
|
||||
(defvar dired-omit-mode)
|
||||
(declare-function dired-omit-regexp "dired-x" ())
|
||||
(defvar dired-omit-localp)
|
||||
|
||||
(defun dired-add-entry (filename &optional marker-char relative)
|
||||
;; Add a new entry for FILENAME, optionally marking it
|
||||
;; with MARKER-CHAR (a character, else dired-marker-char is used).
|
||||
;; Note that this adds the entry `out of order' if files sorted by
|
||||
;; time, etc.
|
||||
;; At least this version inserts in the right subdirectory (if present).
|
||||
;; And it skips "." or ".." (see `dired-trivial-filenames').
|
||||
;; Hidden subdirs are exposed if a file is added there.
|
||||
"Add a new dired entry for FILENAME.
|
||||
Optionally mark it with MARKER-CHAR (a character, else uses
|
||||
`dired-marker-char'). Note that this adds the entry `out of order'
|
||||
if files are sorted by time, etc.
|
||||
Skips files that match `dired-trivial-filenames'.
|
||||
Exposes hidden subdirectories if a file is added there.
|
||||
|
||||
If `dired-x' is loaded and `dired-omit-mode' is enabled, skips
|
||||
files matching `dired-omit-regexp'."
|
||||
(if (or (not (featurep 'dired-x))
|
||||
(not dired-omit-mode)
|
||||
;; Avoid calling ls for files that are going to be omitted anyway.
|
||||
(let ((omit-re (dired-omit-regexp)))
|
||||
(or (string= omit-re "")
|
||||
(not (string-match omit-re
|
||||
(cond
|
||||
((eq 'no-dir dired-omit-localp)
|
||||
filename)
|
||||
((eq t dired-omit-localp)
|
||||
(dired-make-relative filename))
|
||||
(t
|
||||
(dired-make-absolute
|
||||
filename
|
||||
(file-name-directory filename)))))))))
|
||||
;; Do it!
|
||||
(progn
|
||||
(setq filename (directory-file-name filename))
|
||||
;; Entry is always for files, even if they happen to also be directories
|
||||
(let* ((opoint (point))
|
||||
@ -1073,27 +1096,31 @@ See Info node `(emacs)Subdir switches' for more details."
|
||||
;; else try to find correct place to insert
|
||||
(if (dired-goto-subdir directory)
|
||||
(progn ;; unhide if necessary
|
||||
(if (looking-at "\r") ;; point is at end of subdir line
|
||||
(if (looking-at "\r")
|
||||
;; Point is at end of subdir line.
|
||||
(dired-unhide-subdir))
|
||||
;; found - skip subdir and `total' line
|
||||
;; and uninteresting files like . and ..
|
||||
;; This better not moves into the next subdir!
|
||||
;; This better not move into the next subdir!
|
||||
(dired-goto-next-nontrivial-file))
|
||||
;; not found
|
||||
(throw 'not-found "Subdir not found")))
|
||||
(let (buffer-read-only opoint)
|
||||
(beginning-of-line)
|
||||
(setq opoint (point))
|
||||
;; Don't expand `.'. Show just the file name within directory.
|
||||
;; Don't expand `.'.
|
||||
;; Show just the file name within directory.
|
||||
(let ((default-directory directory))
|
||||
(dired-insert-directory directory
|
||||
(dired-insert-directory
|
||||
directory
|
||||
(concat dired-actual-switches " -d")
|
||||
(list filename)))
|
||||
(goto-char opoint)
|
||||
;; Put in desired marker char.
|
||||
(when marker-char
|
||||
(let ((dired-marker-char
|
||||
(if (integerp marker-char) marker-char dired-marker-char)))
|
||||
(if (integerp marker-char) marker-char
|
||||
dired-marker-char)))
|
||||
(dired-mark nil)))
|
||||
;; Compensate for a bug in ange-ftp.
|
||||
;; It inserts the file's absolute name, rather than
|
||||
@ -1113,11 +1140,13 @@ See Info node `(emacs)Subdir switches' for more details."
|
||||
(forward-char 1))
|
||||
(forward-line 1)))
|
||||
(forward-line -1)
|
||||
(if dired-after-readin-hook ;; the subdir-alist is not affected...
|
||||
(save-excursion ;; ...so we can run it right now:
|
||||
(if dired-after-readin-hook
|
||||
;; The subdir-alist is not affected...
|
||||
(save-excursion ; ...so we can run it right now:
|
||||
(save-restriction
|
||||
(beginning-of-line)
|
||||
(narrow-to-region (point) (line-beginning-position 2))
|
||||
(narrow-to-region (point)
|
||||
(line-beginning-position 2))
|
||||
(run-hooks 'dired-after-readin-hook))))
|
||||
(dired-move-to-filename))
|
||||
;; return nil if all went well
|
||||
@ -1125,6 +1154,9 @@ See Info node `(emacs)Subdir switches' for more details."
|
||||
(if reason ; don't move away on failure
|
||||
(goto-char opoint))
|
||||
(not reason))) ; return t on success, nil else
|
||||
;; Don't do it (dired-omit-mode).
|
||||
;; Return t for success (perhaps we should return file-exists-p).
|
||||
t))
|
||||
|
||||
(defun dired-after-subdir-garbage (dir)
|
||||
;; Return pos of first file line of DIR, skipping header and total
|
||||
|
@ -50,7 +50,7 @@
|
||||
;; When loaded this code redefines the following functions of GNU Emacs:
|
||||
;; From dired.el: dired-clean-up-after-deletion, dired-find-buffer-nocreate,
|
||||
;; and dired-initial-position.
|
||||
;; From dired-aux.el: dired-add-entry and dired-read-shell-command.
|
||||
;; From dired-aux.el: dired-read-shell-command.
|
||||
|
||||
;; *Please* see the `dired-x' info pages for more details.
|
||||
|
||||
@ -589,45 +589,6 @@ Optional fourth argument LOCALP is as in `dired-get-filename'."
|
||||
(and fn (string-match regexp fn))))
|
||||
msg)))
|
||||
|
||||
;; Compiler does not get fset.
|
||||
(declare-function dired-omit-old-add-entry "dired-x")
|
||||
|
||||
;; REDEFINE.
|
||||
;; Redefine dired-aux.el's version of `dired-add-entry'
|
||||
;; Save old defun if not already done:
|
||||
(or (fboundp 'dired-omit-old-add-entry)
|
||||
(fset 'dired-omit-old-add-entry (symbol-function 'dired-add-entry)))
|
||||
|
||||
;; REDEFINE.
|
||||
(defun dired-omit-new-add-entry (filename &optional marker-char relative)
|
||||
;; This redefines dired-aux.el's dired-add-entry to avoid calling ls for
|
||||
;; files that are going to be omitted anyway.
|
||||
(if dired-omit-mode
|
||||
;; perhaps return t without calling ls
|
||||
(let ((omit-re (dired-omit-regexp)))
|
||||
(if (or (string= omit-re "")
|
||||
(not
|
||||
(string-match omit-re
|
||||
(cond
|
||||
((eq 'no-dir dired-omit-localp)
|
||||
filename)
|
||||
((eq t dired-omit-localp)
|
||||
(dired-make-relative filename))
|
||||
(t
|
||||
(dired-make-absolute
|
||||
filename
|
||||
(file-name-directory filename)))))))
|
||||
;; if it didn't match, go ahead and add the entry
|
||||
(dired-omit-old-add-entry filename marker-char relative)
|
||||
;; dired-add-entry returns t for success, perhaps we should
|
||||
;; return file-exists-p
|
||||
t))
|
||||
;; omitting is not turned on at all
|
||||
(dired-omit-old-add-entry filename marker-char relative)))
|
||||
|
||||
;; Redefine it.
|
||||
(fset 'dired-add-entry 'dired-omit-new-add-entry)
|
||||
|
||||
|
||||
;;; VIRTUAL DIRED MODE.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user