[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/compat 4710da5fa7 28/84: Add file-parent-directory from
From: |
ELPA Syncer |
Subject: |
[elpa] externals/compat 4710da5fa7 28/84: Add file-parent-directory from Emacs 29 |
Date: |
Tue, 3 Jan 2023 08:57:33 -0500 (EST) |
branch: externals/compat
commit 4710da5fa7cca4d8df3da40093cc57bd1a78ee03
Author: Philip Kaludercic <philipk@posteo.net>
Commit: Philip Kaludercic <philipk@posteo.net>
Add file-parent-directory from Emacs 29
---
compat-29.el | 20 ++++++++++++++++++++
compat-tests.el | 9 +++++++++
compat.texi | 12 ++++++++++++
3 files changed, 41 insertions(+)
diff --git a/compat-29.el b/compat-29.el
index 8af82913ce..9538e99c72 100644
--- a/compat-29.el
+++ b/compat-29.el
@@ -361,5 +361,25 @@ be marked unmodified, effectively ignoring those changes."
(equal ,hash (buffer-hash)))
(restore-buffer-modified-p nil))))))))
+;;;; Defined in files.el
+
+(compat-defun file-parent-directory (filename)
+ "Return the directory name of the parent directory of FILENAME.
+If FILENAME is at the root of the filesystem, return nil.
+If FILENAME is relative, it is interpreted to be relative
+to `default-directory', and the result will also be relative."
+ (let* ((expanded-filename (expand-file-name filename))
+ (parent (file-name-directory (directory-file-name
expanded-filename))))
+ (cond
+ ;; filename is at top-level, therefore no parent
+ ((or (null parent)
+ (file-equal-p parent expanded-filename))
+ nil)
+ ;; filename is relative, return relative parent
+ ((not (file-name-absolute-p filename))
+ (file-relative-name parent))
+ (t
+ parent))))
+
(provide 'compat-29)
;;; compat-29.el ends here
diff --git a/compat-tests.el b/compat-tests.el
index 567be85797..e88092312d 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -2016,6 +2016,15 @@ being compared against."
(ought t "~root/")
(ought t "~root/file"))
+(compat-deftests file-parent-directory ;assuming unix
+ (ought nil "/")
+ (ought "/" "/dir")
+ (ought "./" "dir")
+ (ought "file/to/" "file/to/dir")
+ (ought "file/to/" "file/to/dir/")
+ (ought "/file/to/" "/file/to/dir")
+ (ought "/file/to/" "/file/to/dir/"))
+
(compat-deftests string-equal-ignore-case
(ought t "" "")
(ought t "a" "a")
diff --git a/compat.texi b/compat.texi
index e35065883c..35a78ca7b5 100644
--- a/compat.texi
+++ b/compat.texi
@@ -2498,6 +2498,18 @@ etc. -- will not be noticed, and the buffer will still
be marked
unmodified, effectively ignoring those changes.
@end defmac
+@c copied from lispref/files.texi
+@defun file-parent-directory filename
+This function returns the directory name of the parent directory of
+@var{filename}. If @var{filename} is at the root directory of the
+filesystem, it returns @code{nil}. A relative @var{filename} is
+assumed to be relative to @code{default-directory}, and the return
+value will also be relative in that case. If the return value is
+non-@code{nil}, it ends in a slash.
+
+@xref{Directory Names,,,elisp}.
+@end defun
+
@subsection Prefixed Definitions
- [elpa] externals/compat a4036f9b1b 01/84: Prepare Emacs 29.1 compatibility, (continued)
- [elpa] externals/compat a4036f9b1b 01/84: Prepare Emacs 29.1 compatibility, ELPA Syncer, 2023/01/03
- [elpa] externals/compat f21b114ec7 02/84: Add string-limit, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 9083cfc4f6 05/84: Add get-display-property, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 87da1d984d 11/84: Begin documenting Emacs 29 support, ELPA Syncer, 2023/01/03
- [elpa] externals/compat c81333a6b0 30/84: Merge branch 'master' into emacs-29.1, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 2ee63f46b2 07/84: Make compat-font-lock dependency on compat-macs explicit, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 22b2634ada 06/84: Compile compat-macs before anything else, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 2e206a8304 21/84: Add prefixed plist-get from Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat e13ca90cd7 12/84: Rewrite legacy compat-test definitions, ELPA Syncer, 2023/01/03
- [elpa] externals/compat e370f9b7e7 25/84: Add match-buffers from Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 4710da5fa7 28/84: Add file-parent-directory from Emacs 29,
ELPA Syncer <=
- [elpa] externals/compat bb86f3aa3b 37/84: Simplify compat--generate-testable, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 282f2dc6a7 41/84: Call install-fn in compat--generate-testable, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 3f3f2e44d5 43/84: Split compat-insert-into-buffer into multiple tests, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 933d6fdf80 24/84: Add buffer-match-p from Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 8d17ffdd88 29/84: Add file-has-changed-p from Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 252d33e897 31/84: Fix incompatible function calls in compat-29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 9e0eb5b72f 33/84: Add compat-declare-version to compat-29.el, ELPA Syncer, 2023/01/03
- [elpa] externals/compat fdae099b00 34/84: Move if-let and related function from subr-x to subr, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 6ac6ed2a99 36/84: Use make-symbol instead of gensym in function-alias-p tests, ELPA Syncer, 2023/01/03
- [elpa] externals/compat ef5246cf55 38/84: Fix issues related to 'expect' tests, ELPA Syncer, 2023/01/03