>> (expand-file-name (file-name-nondirectory fname) dir) >> >> >> should return fname back. It is like an identity, right? If not, >> what is the way to *always* correctly do an expand-file-name ? > > This works for me: > (concat (file-name-as-directory "~/tmp") > (file-name-nondirectory "~/tmp/~"))
I am afraid that the former version is _so_ ingrained into Elisp code that we should add advice into DOC strings and Elisp manual. It is not just frequent, it is what we have always called "the right way". Using concat has been slightly deprecated, partly because it won't work in the case where the directory name fails to end in a slash. Many places in the code were written to use expand-file-name because it was the preferred method. I think that using concat will always work right when the directory name is properly formatted. However, rather than recommend use of concat, I would rather define a new function specifically for this purpose. It could be called `merge-file-name'. _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel