[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: master 4f1a5e4: Add `file-name-set-extension'
From: |
Lars Ingebrigtsen |
Subject: |
Re: master 4f1a5e4: Add `file-name-set-extension' |
Date: |
Sat, 19 Jun 2021 13:40:32 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Michael.Albinus@gmx.de (Michael Albinus) writes:
> Add `file-name-set-extension'
>
> * lisp/files.el (file-name-with-extension): New defun.
[...]
> +(defun file-name-with-extension (filename extension)
> + "Set the EXTENSION of a FILENAME.
> +Consolidates leading/trailing dots so that either `foo' or `.foo'
> +can be passed as an EXTENSION.
> +
> +See also `file-name-sans-extension'."
> + (let* ((patt "[ .]+")
> + (file (string-trim-right filename patt))
> + (extn (string-trim-left extension patt)))
> + (cond ((string-empty-p file) (error "Malformed filename: %s" filename))
> + ((string-empty-p extn) (error "Malformed extension: %s" extension))
> + ((directory-name-p file) (error "Filename is a directory: %s"
> filename))
> + (t (concat (file-name-sans-extension file) "." extn)))))
Is this really a well-defined function? It strips spaces from the
start of the extension?
(file-name-with-extension "foo.bar" " zot ")
=> "foo.zot "
That seems pretty peculiar and is not documented. And also:
(file-name-with-extension "foo.bar.." " zot ")
=> "foo.zot "
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
- Re: master 4f1a5e4: Add `file-name-set-extension',
Lars Ingebrigtsen <=