diff --git a/lisp/files.el b/lisp/files.el index 62e1702fdf..eed818e2fa 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -4889,6 +4889,15 @@ extension, the value is \"\"." (if period ""))))) +(defun file-name-set-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." + (let* ((patt "[ .]+") + (filename (string-trim-right filename patt)) + (extension (string-trim-left extension patt))) + (concat (file-name-sans-extension filename) "." extension))) + (defun file-name-base (&optional filename) "Return the base name of the FILENAME: no directory, no extension." (declare (advertised-calling-convention (filename) "27.1"))