mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-14 16:50:58 +00:00
Implement a new function `directory-name-p'
* doc/lispref/files.texi (Relative File Names): Mention `directory-name-p'. * etc/NEWS: Mention directory-name-p. (directory-name-p): New function. (directory-files-recursively): Use it.
This commit is contained in:
parent
3e8e971356
commit
987d2f9421
@ -1,3 +1,7 @@
|
|||||||
|
2014-12-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||||
|
|
||||||
|
* files.texi (Relative File Names): Mention `directory-name-p'.
|
||||||
|
|
||||||
2014-12-13 Eli Zaretskii <eliz@gnu.org>
|
2014-12-13 Eli Zaretskii <eliz@gnu.org>
|
||||||
|
|
||||||
* text.texi (Comparing Text): Prevent a text string from being
|
* text.texi (Comparing Text): Prevent a text string from being
|
||||||
|
@ -2020,6 +2020,11 @@ form.
|
|||||||
@end example
|
@end example
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
|
@defun directory-name-p filename
|
||||||
|
This function returns non-@code{nil} if @var{filename} ends with a
|
||||||
|
forward slash (@samp{/}) character.
|
||||||
|
@end defun
|
||||||
|
|
||||||
@node Directory Names
|
@node Directory Names
|
||||||
@subsection Directory Names
|
@subsection Directory Names
|
||||||
@cindex directory name
|
@cindex directory name
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2014-12-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||||
|
|
||||||
|
* NEWS: Mention directory-name-p.
|
||||||
|
|
||||||
2014-12-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
2014-12-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||||
|
|
||||||
* NEWS: Mention directory-files-recursively.
|
* NEWS: Mention directory-files-recursively.
|
||||||
|
5
etc/NEWS
5
etc/NEWS
@ -140,6 +140,11 @@ library function `ftw'.
|
|||||||
** A new function `directory-files-recursively' returns all matching
|
** A new function `directory-files-recursively' returns all matching
|
||||||
files (recursively) under a directory.
|
files (recursively) under a directory.
|
||||||
|
|
||||||
|
** The new `directory-name-p' can be used to check whether a file
|
||||||
|
name (as returned from, for instance, `file-name-all-completions' is
|
||||||
|
a directory file name. It returns non-nil if the last character in
|
||||||
|
the name is a forward slash.
|
||||||
|
|
||||||
|
|
||||||
* Editing Changes in Emacs 25.1
|
* Editing Changes in Emacs 25.1
|
||||||
|
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
* files.el (directory-files-recursively): Really check whether
|
* files.el (directory-files-recursively): Really check whether
|
||||||
files are symlinks.
|
files are symlinks.
|
||||||
|
(directory-name-p): New function.
|
||||||
|
(directory-files-recursively): Use it.
|
||||||
|
|
||||||
2014-12-13 Artur Malabarba <bruce.connor.am@gmail.com>
|
2014-12-13 Artur Malabarba <bruce.connor.am@gmail.com>
|
||||||
|
|
||||||
|
@ -761,6 +761,11 @@ prevented. Directory entries are sorted with string-lessp."
|
|||||||
(file-name-nondirectory dir)
|
(file-name-nondirectory dir)
|
||||||
args))))
|
args))))
|
||||||
|
|
||||||
|
(defsubst directory-name-p (name)
|
||||||
|
"Return non-nil if NAME ends with a slash character."
|
||||||
|
(and (> (length name) 0)
|
||||||
|
(char-equal (aref name (1- (length name))) ?/)))
|
||||||
|
|
||||||
(defun directory-files-recursively (dir match &optional include-directories)
|
(defun directory-files-recursively (dir match &optional include-directories)
|
||||||
"Return all files under DIR that have file names matching MATCH (a regexp).
|
"Return all files under DIR that have file names matching MATCH (a regexp).
|
||||||
This function works recursively. Files are returned in \"depth first\"
|
This function works recursively. Files are returned in \"depth first\"
|
||||||
@ -771,7 +776,7 @@ If INCLUDE-DIRECTORIES, also include directories that have matching names."
|
|||||||
(dolist (file (sort (file-name-all-completions "" dir)
|
(dolist (file (sort (file-name-all-completions "" dir)
|
||||||
'string<))
|
'string<))
|
||||||
(unless (member file '("./" "../"))
|
(unless (member file '("./" "../"))
|
||||||
(if (= (aref file (1- (length file))) ?/)
|
(if (directory-name-p file)
|
||||||
(let* ((leaf (substring file 0 (1- (length file))))
|
(let* ((leaf (substring file 0 (1- (length file))))
|
||||||
(path (expand-file-name leaf dir)))
|
(path (expand-file-name leaf dir)))
|
||||||
;; Don't follow symlinks to other directories.
|
;; Don't follow symlinks to other directories.
|
||||||
|
Loading…
Reference in New Issue
Block a user