Mercurial > emacs
changeset 40187:85c9805cd237
(file-name-sans-extension, file-name-extension): Don't
count the leading dots in file names as signaling an extension.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Mon, 22 Oct 2001 16:11:12 +0000 |
parents | e6f3d0e02726 |
children | cd1cd95ca64e |
files | lisp/files.el |
diffstat | 1 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/files.el Mon Oct 22 14:53:30 2001 +0000 +++ b/lisp/files.el Mon Oct 22 16:11:12 2001 +0000 @@ -2238,11 +2238,13 @@ (defun file-name-sans-extension (filename) "Return FILENAME sans final \"extension\". -The extension, in a file name, is the part that follows the last `.'." +The extension, in a file name, is the part that follows the last `.', +except that a leading `.', if any, doesn't count." (save-match-data (let ((file (file-name-sans-versions (file-name-nondirectory filename))) directory) - (if (string-match "\\.[^.]*\\'" file) + (if (and (string-match "\\.[^.]*\\'" file) + (not (eq 0 (match-beginning 0)))) (if (setq directory (file-name-directory filename)) (expand-file-name (substring file 0 (match-beginning 0)) directory) @@ -2251,7 +2253,8 @@ (defun file-name-extension (filename &optional period) "Return FILENAME's final \"extension\". -The extension, in a file name, is the part that follows the last `.'. +The extension, in a file name, is the part that follows the last `.', +except that a leading `.', if any, doesn't count. Return nil for extensionless file names such as `foo'. Return the empty string for file names such as `foo.'. @@ -2260,7 +2263,8 @@ the value is \"\"." (save-match-data (let ((file (file-name-sans-versions (file-name-nondirectory filename)))) - (if (string-match "\\.[^.]*\\'" file) + (if (and (string-match "\\.[^.]*\\'" file) + (not (eq 0 (match-beginning 0)))) (substring file (+ (match-beginning 0) (if period 0 1))) (if period "")))))