emacs-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]