[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: user-directory: New library to find user {conf, data, state, ...} fi
From: |
Stefan Kangas |
Subject: |
Re: user-directory: New library to find user {conf, data, state, ...} files |
Date: |
Mon, 8 Nov 2021 23:05:57 -0800 |
Eli Zaretskii <eliz@gnu.org> writes:
>> The new name will be preferred only when there is no old file. If it
>> exists, the old name will be used. (This is based on how
>> 'locate-user-emacs-file' works.) See below.
>
> "Old file" or "old directory"? That's an important difference, IMO.
The above applies to looking for the file name with `user-file'.
When looking for the directory, the new one will always be preferred.
The old name in all cases is just `user-emacs-directory', so it doesn't
make sense to look for it.
I expect that most application code will use `user-file' rather than
`user-directory'.
> Which of the existing files we have in Emacs will be in one of the 3
> latter directories? Please search the tree for uses of
> user-emacs-directory and tell me whether any of those will/should be
> in one of those 3. If none of them should be there, then perhaps my
> problem is smaller than I feared, but I'd still want to talk about the
> files which will be in those 3. And also perhaps we should see if
> some popular 3rd party packages place files under
> user-emacs-directory, and consider those as well.
I have looked over all of `user-emacs-directory' in our tree. I found
some cases where 'locate-user-emacs-file' was not used, so I fixed them.
Now, if we filter out some irrelevant ones, I see this:
cache
./startup.el547: (push (expand-file-name "eln-cache/"
user-emacs-directory)
data
./net/eww.el101:(defcustom eww-bookmarks-directory user-emacs-directory
./startup.el401: (concat user-emacs-directory "auto-save.list/_s"))
./startup.el403: (concat user-emacs-directory
"auto-save-list/.saves-")))
state
./desktop.el259:(defcustom desktop-path (list user-emacs-directory "~")
./desktop.el1062: user-emacs-directory)))
./desktop.el1255: user-emacs-directory))))
./progmodes/gdb-mi.el654:(defcustom
gdb-window-configuration-directory user-emacs-directory
(The "desktop directory" should probably just be a "desktop file".
Similarly for the eww bookmarks and the gdb variable window
configuration. But that's a separate issue.)
>> 1. If "~/.emacs.d/old" exists, then we get:
>>
>> (user-file 'config "new" "old")
>> => "~/.emacs.d/old"
>>
>> (user-file 'cache "new" "old")
>> => "~/.emacs.d/old"
>
> Not sure I understand why "new" and "old" are different strings.
> Presumably, code which uses user-file will look for a particular
> basename, so why do we need 2 separate arguments?
The handling of them is currently different: "new" (NAME) is only
considered in the new directory, while "old" (OLD-NAME) is considered in
the new directory and in `user-emacs-directory'.
If we don't need to make that distinction, this can indeed be simplified
to just one argument. I'm starting to lean towards the conclusion that
it is indeed okay to simplify this.
>> 3. Finally, let's consider the bookmark case, where a user might be
>> using the very old name "~/.emacs.bmk":
>>
>> (user-file 'data "bookmarks" (locate-user-emacs-file "bookmarks"
>> ".emacs.bmk"))
>> => "~/.emacs.bmk"
>
> And here I don't understand why the caller need to call
> locate-user-emacs-file explicitly? why couldn't user-file call it
> internally?
I have made a simplification on the branch, so the above is now:
(user-file 'data "bookmarks" "bookmarks" "~/.emacs.bmk")
With the further simplification of NAME and OLD-NAME discussed above,
this would be just:
(user-file 'data "bookmarks" "~/.emacs.bmk")
> Hmm... actually, does the above mean that locate-user-emacs-file will
> forever use the old semantics? Perhaps it should call user-file
> instead?
Sure, that is definitely something we could consider. The main idea
here is that application code should use `user-file' directly though, to
be more explicit about what kind of file it is that they want to store.
- Re: user-directory: New library to find user {conf,data,state,...} files, (continued)
- Re: user-directory: New library to find user {conf,data,state,...} files, Lars Ingebrigtsen, 2021/11/05
- Re: user-directory: New library to find user {conf, data, state, ...} files, Stefan Kangas, 2021/11/05
- Re: user-directory: New library to find user {conf, data, state, ...} files, Stefan Kangas, 2021/11/07
- Re: user-directory: New library to find user {conf, data, state, ...} files, Eli Zaretskii, 2021/11/07
- Re: user-directory: New library to find user {conf, data, state, ...} files, Stefan Kangas, 2021/11/07
- Re: user-directory: New library to find user {conf, data, state, ...} files, Eric S Fraga, 2021/11/08
- Re: user-directory: New library to find user {conf, data, state, ...} files, Eli Zaretskii, 2021/11/08
- Re: user-directory: New library to find user {conf, data, state, ...} files, Stefan Kangas, 2021/11/08
- Re: user-directory: New library to find user {conf, data, state, ...} files, Eli Zaretskii, 2021/11/08
- Re: user-directory: New library to find user {conf, data, state, ...} files,
Stefan Kangas <=
- Re: user-directory: New library to find user {conf, data, state, ...} files, Eli Zaretskii, 2021/11/09
- Re: user-directory: New library to find user {conf, data, state, ...} files, Stefan Kangas, 2021/11/09
- Re: user-directory: New library to find user {conf, data, state, ...} files, Eli Zaretskii, 2021/11/11
Re: user-directory: New library to find user {conf, data, state, ...} files, Stefan Kangas, 2021/11/07