unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Don't concat directories to file names
@ 2007-06-13 16:22 Richard Stallman
  2007-06-14 15:16 ` Juanma Barranquero
  2007-06-14 19:40 ` Tom Tromey
  0 siblings, 2 replies; 71+ messages in thread
From: Richard Stallman @ 2007-06-13 16:22 UTC (permalink / raw)
  To: emacs-devel

    -(defcustom image-dired-dir "~/.emacs.d/image-dired/"
    +(defcustom image-dired-dir (concat user-emacs-directory "image-dired/")

This has the right result, but for clarity such code really ought to
use expand-file-name.

    +@defvar user-emacs-directory
    +This variable holds the name of the @file{.emacs.d} directory.  It is
    +ordinarily @file{~/.emacs.d}, but differs on some platforms.

The text should make it explicit that this is a directory name,
not a file name.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-13 16:22 Don't concat directories to file names Richard Stallman
@ 2007-06-14 15:16 ` Juanma Barranquero
  2007-06-14 17:10   ` Stephen J. Turnbull
  2007-06-14 19:51   ` Tom Tromey
  2007-06-14 19:40 ` Tom Tromey
  1 sibling, 2 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-14 15:16 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1934 bytes --]

On 6/13/07, Richard Stallman <rms@gnu.org> wrote:

>     -(defcustom image-dired-dir "~/.emacs.d/image-dired/"
>     +(defcustom image-dired-dir (concat user-emacs-directory "image-dired/")
>
> This has the right result, but for clarity such code really ought to
> use expand-file-name.

I think we should add a function like the one below (with a better
name and docstring, of course), so we can "move" all these
configuration files and directories which are not yet in ~/.emacs.d/,
for example .calc.el, .abbrev_defs, .bdf-cache.el, .emacs-places,
.strokes, .type-break, .timelog, .vip, .viper, .eshell, .quickurls,
.emacs_case_exceptions, .idlwave, .ido-last, .recentf, .emacs_args,
.shadows, .wmncach.el, diary, .eshell/, etc. etc.

The NEW-NAME arg in the function is to allow things like .emacs vs.
init.el, or .completions vs. completions.

WDPT?

             Juanma


Index: lisp/subr.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/subr.el,v
retrieving revision 1.555
diff -u -2 -r1.555 subr.el
--- lisp/subr.el	13 Jun 2007 00:03:28 -0000	1.555
+++ lisp/subr.el	14 Jun 2007 14:13:59 -0000
@@ -2051,4 +2051,19 @@
 Note that this should end with a directory separator.")

+(defun user-emacs-file (name &optional new-name)
+  "Convert NAME to an absolute per-user Emacs-specific path.
+If \"~/NAME\" exists, or `user-emacs-directory' does not, return \"~/NAME\".
+Else, return \"`user-emacs-directory'/NEW-NAME\", or /NAME if NEW-NAME is nil."
+  (convert-standard-filename
+   (let ((at-home (expand-file-name name "~")))
+     (cond
+       ;; Backwards compatibility
+       ((file-readable-p at-home) at-home)
+       ;; Preferred for new installations
+       ((file-directory-p user-emacs-directory)
+	(expand-file-name (or new-name name) user-emacs-directory))
+       ;; If ~/.emacs.d/ does not exist
+       (t at-home)))))
+
 \f
 ;;;; Misc. useful functions.

[-- Attachment #2: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 15:16 ` Juanma Barranquero
@ 2007-06-14 17:10   ` Stephen J. Turnbull
  2007-06-14 21:12     ` Juanma Barranquero
  2007-06-15  9:15     ` Juanma Barranquero
  2007-06-14 19:51   ` Tom Tromey
  1 sibling, 2 replies; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-14 17:10 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: rms, emacs-devel

Juanma Barranquero writes:

 > I think we should add a function like the one below (with a better
 > name and docstring, of course)

XEmacs has a whole API for finding user data.  The main function is

----------------
`find-user-init-file' is a compiled Lisp function
  -- loaded from "/playpen/src/XEmacs/git-staging/lisp/startup.elc"
(find-user-init-file &optional INIT-DIRECTORY HOME-DIRECTORY)

Documentation:
Determine the user's init file.
----------------

The author is probably Michael Sperber <mike@xemacs.org>.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-13 16:22 Don't concat directories to file names Richard Stallman
  2007-06-14 15:16 ` Juanma Barranquero
@ 2007-06-14 19:40 ` Tom Tromey
  1 sibling, 0 replies; 71+ messages in thread
From: Tom Tromey @ 2007-06-14 19:40 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

>>>>> "rms" == Richard Stallman <rms@gnu.org> writes:

>     -(defcustom image-dired-dir "~/.emacs.d/image-dired/"
>     +(defcustom image-dired-dir (concat user-emacs-directory "image-dired/")

rms> This has the right result, but for clarity such code really ought to
rms> use expand-file-name.

Sorry about this.  I will try to fix it up sometime soon.
I believe the reason I chose to use concat rather than
expand-file-name was to be conservative, on the off chance that some
code cared about the precise text in use.

Tom

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 15:16 ` Juanma Barranquero
  2007-06-14 17:10   ` Stephen J. Turnbull
@ 2007-06-14 19:51   ` Tom Tromey
  2007-06-14 21:17     ` Juanma Barranquero
  1 sibling, 1 reply; 71+ messages in thread
From: Tom Tromey @ 2007-06-14 19:51 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: rms, emacs-devel

>>>>> "Juanma" == Juanma Barranquero <lekktu@gmail.com> writes:

Juanma> I think we should add a function like the one below (with a better
Juanma> name and docstring, of course), so we can "move" all these
Juanma> configuration files and directories which are not yet in ~/.emacs.d/

Sounds good to me.

Juanma> +       ;; Preferred for new installations
Juanma> +       ((file-directory-p user-emacs-directory)
Juanma> +	(expand-file-name (or new-name name) user-emacs-directory))
Juanma> +       ;; If ~/.emacs.d/ does not exist
Juanma> +       (t at-home)))))

IMO, if ~/.emacs.d does not exist, and it is what we prefer for the
future, we should create it here.

Tom

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 17:10   ` Stephen J. Turnbull
@ 2007-06-14 21:12     ` Juanma Barranquero
  2007-06-15  1:50       ` Stephen J. Turnbull
  2007-06-15  9:15     ` Juanma Barranquero
  1 sibling, 1 reply; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-14 21:12 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: rms, emacs-devel

On 6/14/07, Stephen J. Turnbull <stephen@xemacs.org> wrote:

> XEmacs has a whole API for finding user data.  The main function is
>
> (find-user-init-file &optional INIT-DIRECTORY HOME-DIRECTORY)
>
> Documentation:
> Determine the user's init file.

Could you please elaborate? (Or there is any way to find that
feature's docs, other than installing XEmacs?)

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 19:51   ` Tom Tromey
@ 2007-06-14 21:17     ` Juanma Barranquero
  2007-06-14 21:32       ` Stefan Monnier
  2007-06-15  7:29       ` Eli Zaretskii
  0 siblings, 2 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-14 21:17 UTC (permalink / raw)
  To: tromey; +Cc: rms, emacs-devel

On 6/14/07, Tom Tromey <tromey@redhat.com> wrote:

> Sounds good to me.

> IMO, if ~/.emacs.d does not exist, and it is what we prefer for the
> future, we should create it here.

I'm not sure. I think the user should be responsible of creating
~/.emacs.d/ if he wants it. Otherwise, if he doesn't want it, the only
way to have the config files in ~/ would be to customize every *-file
or *-directory option...

The setup I propose has the advantage that old setup files are
respected, but if you create ~/.emacs.d/ any new setup file will
automatically go there.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 21:17     ` Juanma Barranquero
@ 2007-06-14 21:32       ` Stefan Monnier
  2007-06-14 21:39         ` Juanma Barranquero
  2007-06-15  7:29       ` Eli Zaretskii
  1 sibling, 1 reply; 71+ messages in thread
From: Stefan Monnier @ 2007-06-14 21:32 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: tromey, rms, emacs-devel

> I'm not sure.  I think the user should be responsible of creating
> ~/.emacs.d/ if he wants it.

I'm pretty sure I didn't create my ~/.emacs.d.  So the above doesn't seem to
be what Emacs currently aims for.  It looks like this directory is created
usually by the code which creates the ~/.emacs.d/auto-save-list directory.


        Stefan

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 21:32       ` Stefan Monnier
@ 2007-06-14 21:39         ` Juanma Barranquero
  0 siblings, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-14 21:39 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: tromey, rms, emacs-devel

On 6/14/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> I'm pretty sure I didn't create my ~/.emacs.d.  So the above doesn't seem to
> be what Emacs currently aims for.

I think that currently Emacs doesn't aim for anything specific. Parts
do not use ~/.emacs.d/, others use it unconditionally, others
conditionally (like the ~/.emacs vs. ~/.emacs.d/init.el resolution).

What I'm proposing would be automatic if the fragments of code that
currently hardcode ~/.emacs.d/ (or, now, user-emacs-directory) were
changed to use user-emacs-file (or whatever the name).

It is not an important issue anyway; I'd prefer to defer to the user,
but both answers are OK.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 21:12     ` Juanma Barranquero
@ 2007-06-15  1:50       ` Stephen J. Turnbull
  2007-06-15  7:55         ` Juanma Barranquero
  0 siblings, 1 reply; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-15  1:50 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Mike Sperber, rms, emacs-devel

Juanma Barranquero writes:

 > On 6/14/07, Stephen J. Turnbull <stephen@xemacs.org> wrote:
 > 
 > > XEmacs has a whole API for finding user data.  The main function is
 > >
 > > (find-user-init-file &optional INIT-DIRECTORY HOME-DIRECTORY)
 > >
 > > Documentation:
 > > Determine the user's init file.
 > 
 > Could you please elaborate? (Or there is any way to find that
 > feature's docs, other than installing XEmacs?)

Not my place to elaborate; Mike designed it AFAIK.  For example, I
think your design which has the user name as an argument makes sense;
why Mike did *not* do it that way I don't know.  Please ask him.

If you want to look at docs, you'll probably want to install XEmacs.
It's consider internal to startup.el, and not documented in the Lisp
Reference according C-h C-f.  C-h a user.*file RET will give a list of
related functions; in XEmacs the preferred style is to provide
docstrings even for internal functions, so that's probably the best
we've got.

The Lisp Reference for XEmacs is available online at
http://www.xemacs.org/Documentation/.  Source for these APIs will be in

http://cvs.xemacs.org/viewcvs.cgi/XEmacs/xemacs/lisp/startup.el?rev=1.58&content-type=text/vnd.viewcvs-markup

but internal evidence suggests that copyrights are not up-to-date and
I don't know Mike's code's assignment status, so you may wish to take
care when looking at that.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 21:17     ` Juanma Barranquero
  2007-06-14 21:32       ` Stefan Monnier
@ 2007-06-15  7:29       ` Eli Zaretskii
  2007-06-15  7:56         ` Juanma Barranquero
  1 sibling, 1 reply; 71+ messages in thread
From: Eli Zaretskii @ 2007-06-15  7:29 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: tromey, rms, emacs-devel

> Date: Thu, 14 Jun 2007 23:17:07 +0200
> From: "Juanma Barranquero" <lekktu@gmail.com>
> Cc: rms@gnu.org, emacs-devel@gnu.org
> 
> > IMO, if ~/.emacs.d does not exist, and it is what we prefer for the
> > future, we should create it here.
> 
> I'm not sure. I think the user should be responsible of creating
> ~/.emacs.d/ if he wants it.

We already create that directory in recover-session, so Tom's
suggestion makes a lot of sense to me.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15  1:50       ` Stephen J. Turnbull
@ 2007-06-15  7:55         ` Juanma Barranquero
  0 siblings, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-15  7:55 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: Mike Sperber, rms, emacs-devel

On 6/15/07, Stephen J. Turnbull <stephen@xemacs.org> wrote:

> think your design which has the user name as an argument makes sense;

Well, the NAME in my function was not the user name, but the file
name; but the next stage on my plan was using the user name; that's
why I've been asking about ~USER/.emacs.d/ :)

> If you want to look at docs, you'll probably want to install XEmacs.
> It's consider internal to startup.el, and not documented in the Lisp
> Reference according C-h C-f.  C-h a user.*file RET will give a list of
> related functions; in XEmacs the preferred style is to provide
> docstrings even for internal functions, so that's probably the best
> we've got.

OK, I'll take a look.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15  7:29       ` Eli Zaretskii
@ 2007-06-15  7:56         ` Juanma Barranquero
  0 siblings, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-15  7:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: tromey, rms, emacs-devel

On 6/15/07, Eli Zaretskii <eliz@gnu.org> wrote:

> We already create that directory in recover-session, so Tom's
> suggestion makes a lot of sense to me.

Fine, then.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-14 17:10   ` Stephen J. Turnbull
  2007-06-14 21:12     ` Juanma Barranquero
@ 2007-06-15  9:15     ` Juanma Barranquero
  2007-06-15 10:20       ` Stephen J. Turnbull
  1 sibling, 1 reply; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-15  9:15 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: rms, emacs-devel

On 6/14/07, Stephen J. Turnbull <stephen@xemacs.org> wrote:

> XEmacs has a whole API for finding user data.

If I'm undestanding it correctly, the API is for finding the user init
file (.emacs or _emacs or .emacs.el or whatever); I don't see a way to
determine where *other* configuration files should go. For example,
bookmark.el and saveplace.el both save their files to $HOME
(~/.emacs.bmk and ~/.emacs-places respectively).

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15  9:15     ` Juanma Barranquero
@ 2007-06-15 10:20       ` Stephen J. Turnbull
  2007-06-15 11:21         ` Juanma Barranquero
  0 siblings, 1 reply; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-15 10:20 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: rms, emacs-devel

Juanma Barranquero writes:

 > If I'm undestanding it correctly, the API is for finding the user
 > init file (.emacs or _emacs or .emacs.el or whatever); I don't see
 > a way to determine where *other* configuration files should go.

XEmacs doesn't enforce it (we can't without imposing a gratuitous
incompatibility, since until now Emacs hasn't really had the concept),
but the variable `user-init-directory' is available to any library
that wants an Emacs-specific place to put things.  This is normally
initialized to "~/.xemacs" by startup.el.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 10:20       ` Stephen J. Turnbull
@ 2007-06-15 11:21         ` Juanma Barranquero
  2007-06-15 14:19           ` Stephen J. Turnbull
  2007-06-15 14:33           ` Stefan Monnier
  0 siblings, 2 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-15 11:21 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: rms, emacs-devel

On 6/15/07, Stephen J. Turnbull <stephen@xemacs.org> wrote:

> XEmacs doesn't enforce it (we can't without imposing a gratuitous
> incompatibility, since until now Emacs hasn't really had the concept),

Aha.

> but the variable `user-init-directory' is available to any library
> that wants an Emacs-specific place to put things.  This is normally
> initialized to "~/.xemacs" by startup.el.

Then the recently introduced `user-emacs-directory' should be renamed
to `user-init-directory', or aliased, I think (but it doesn't make
much sense to alias a just created var). The variable currently must
end with a directory separator, but that could be fixed.

But all in all, what I'm interested is having a public function so
modules that currently do

  (defvar my-module-setup-file "~/.my-module-data")

or

  (defvar my-module-setup-file
   (cond ((file-exists-p "~/.my-module-data") "~/.my-module-data")
         ((file-directory-p "~/.emacs.d/" "~/.emacs.d/my-module-setup"))
         (t ...)))

can be easily transformed to

  (defvar my-module-setup-file
   (user-emacs-file "my-module-data"  ; back-compatible
                    "my-module-setup" ; optional, default to above
                    ))

i.e. (it's a reworked version):

(defun user-emacs-file (name &optional new-name)
  "Convert NAME to an absolute per-user Emacs-specific path.
If \"~/NAME\" exists, or `user-emacs-directory' is nil, return \"~/NAME\".
Else, return \"`user-emacs-directory'/NEW-NAME\", or /NAME if NEW-NAME is nil."
  (convert-standard-filename
   (let ((at-home (expand-file-name name (concat "~" init-file-user))))
     (if (or (file-readable-p at-home)
             (null user-emacs-directory))
         at-home
       (or (file-accessible-directory-p (directory-file-name
user-emacs-directory))
           (progn (make-directory user-emacs-directory) t)  ;; don't
catch errors
           (expand-file-name (or new-name name) user-emacs-directory))))))

That function makes use of `user-emacs-directory' (that'd be
`user-init-directory', in XEmacs); uses `convert-standard-filename'
and, as requested, creates the ~/.emacs.d (~/.xemacs) directory on the
fly.

People wanting to use the same setup files in X?Emacs will have to
make user-(emacs|init)-directory point to the right place, or perhaps
set it to nil (and then `user-emacs-file' defers to ~/ and does not
try to create any dir).

WDYT?

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 11:21         ` Juanma Barranquero
@ 2007-06-15 14:19           ` Stephen J. Turnbull
  2007-06-15 16:27             ` Juanma Barranquero
  2007-06-15 14:33           ` Stefan Monnier
  1 sibling, 1 reply; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-15 14:19 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: rms, emacs-devel

Juanma Barranquero writes:

 > Then the recently introduced `user-emacs-directory' should be renamed
 > to `user-init-directory', or aliased, I think (but it doesn't make
 > much sense to alias a just created var). The variable currently must
 > end with a directory separator, but that could be fixed.

I think requiring the directory separator on the variable is
reasonable; after all, in most cases it will be determined implicitly
at startup or by a function call.  The trick of doing

(defun user-init-directory ()
  "Return the per-user directory holding Emacs configuration files."
  (if (and (boundp 'user-init-directory) 
           (file-directory-p user-init-directory))
      user-init-directory
    (find-user-init-directory)))  ; this may be oversimplified

is always available, too.

 > (defun user-emacs-file (name &optional new-name)
 >   "Convert NAME to an absolute per-user Emacs-specific path.
 > If \"~/NAME\" exists, or `user-emacs-directory' is nil, return \"~/NAME\".
 > Else, return \"`user-emacs-directory'/NEW-NAME\", or /NAME if NEW-NAME is nil."

Looks reasonable to me.  FWIW, existing XEmacs practice is to
encourage use of `user-init-directory' by looking there first (for our
startup files; we don't have the API you are proposing yet, so other
libraries have to code by hand).  Also, if ~/.emacs is found,
~/.xemacs/ doesn't exist, and migration is not inhibited, XEmacs
offers to migrate its files (.emacs and optionally custom.el) from
$HOME to `user-init-directory'.  If you say no, you get the option of
trying again later, or telling XEmacs not to bug you any more.

 > People wanting to use the same setup files in X?Emacs will have to
 > make user-(emacs|init)-directory point to the right place, or perhaps
 > set it to nil (and then `user-emacs-file' defers to ~/ and does not
 > try to create any dir).

XEmacs has -user-init-file and -user-init-directory options to handle
this (as well as the -u option).

I'm at my limit here: I can imagine use cases for all this
flexibility, but I've never encountered them in the wild.  I think
that `user-emacs-directory' and `user-init-directory' have similar
enough semantics that it would be nice if the variable name could be
the same.  I'd like to claim priority for `user-init-directory': it's
over ten years old in XEmacs.

Other than that, it's not at all obvious to me that any of XEmacs's
APIs or UIs in this area are used often enough to worry about
incompatibility.  I'm not a big fan of the name "user-emacs-file" for
the function you've defined; for me, even after all this time using
the ~/.xemacs/init.el style, I think it should point to ".emacs".  How
does "user-configuration-file" or "find-user-configuration-file"
sound?  (Of course "configuration" could be shortened to "config".)

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 11:21         ` Juanma Barranquero
  2007-06-15 14:19           ` Stephen J. Turnbull
@ 2007-06-15 14:33           ` Stefan Monnier
  2007-06-15 16:39             ` Miles Bader
  2007-06-15 16:40             ` Juanma Barranquero
  1 sibling, 2 replies; 71+ messages in thread
From: Stefan Monnier @ 2007-06-15 14:33 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Stephen J. Turnbull, rms, emacs-devel

> Then the recently introduced `user-emacs-directory' should be renamed
> to `user-init-directory',

Indeed.  Please: could someone do that?

> The variable currently must end with a directory separator, but that could
> be fixed.

It should be fixed.  We should be careful to make it work with or without
a terminating / since it can be set by the user.  If we systematically use
it with expand-file-name, this will work automatically.

> (defun user-emacs-file (name &optional new-name)

If we rename the variable to user-init-directory, then the function should
probably be called user-init-file.

>  "Convert NAME to an absolute per-user Emacs-specific path.
> If \"~/NAME\" exists, or `user-emacs-directory' is nil, return \"~/NAME\".
> Else, return \"`user-emacs-directory'/NEW-NAME\", or /NAME if NEW-NAME is nil."
>  (convert-standard-filename
>   (let ((at-home (expand-file-name name (concat "~" init-file-user))))
>     (if (or (file-readable-p at-home)
>             (null user-emacs-directory))
>         at-home
>       (or (file-accessible-directory-p (directory-file-name
> user-emacs-directory))
>           (progn (make-directory user-emacs-directory) t)  ;; don't
> catch errors
>           (expand-file-name (or new-name name) user-emacs-directory))))))

In most places that introduced the ~/.emacs.d thingy, they typically first
check ~/.emacs.d/TOTO then ~/.TOTO and if neither is present return
~/.emacs.d/TOTO.


        Stefan

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 14:19           ` Stephen J. Turnbull
@ 2007-06-15 16:27             ` Juanma Barranquero
  2007-06-15 18:09               ` Stephen J. Turnbull
  0 siblings, 1 reply; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-15 16:27 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: rms, emacs-devel

On 6/15/07, Stephen J. Turnbull <stephen@xemacs.org> wrote:

> The trick of doing
>
> (defun user-init-directory ()
>   "Return the per-user directory holding Emacs configuration files."
>   (if (and (boundp 'user-init-directory)
>            (file-directory-p user-init-directory))
>       user-init-directory
>     (find-user-init-directory)))  ; this may be oversimplified

Yes, but that adds API complexity.

> Looks reasonable to me.  FWIW, existing XEmacs practice is to
> encourage use of `user-init-directory' by looking there first (for our
> startup files; we don't have the API you are proposing yet, so other
> libraries have to code by hand).

Yes, I looked at XEmacs' startup.el. But locating the startup files is
another issue; I'm interested in helping the libraries, not X?Emacs.

> I'm at my limit here: I can imagine use cases for all this
> flexibility, but I've never encountered them in the wild.

Agreed. Most of the API complexity of XEmacs (in this regard, I mean)
is for internal use, I think, so as you say below, compatibility is
not an issue IMO.

> I'd like to claim priority for `user-init-directory': it's
> over ten years old in XEmacs.

Of course!

> I'm not a big fan of the name "user-emacs-file" for
> the function you've defined

Neither do I; it was just to get going.

> How
> does "user-configuration-file" or "find-user-configuration-file"
> sound?  (Of course "configuration" could be shortened to "config".)

Good, I like `user-config-file' or `find-user-config-file'. Stefan has
proposed `user-init-file', but I don't like it because it seems
related to .emacs/init.el (as the variable of the same name is).

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 14:33           ` Stefan Monnier
@ 2007-06-15 16:39             ` Miles Bader
  2007-06-15 16:41               ` Juanma Barranquero
  2007-06-15 22:45               ` Richard Stallman
  2007-06-15 16:40             ` Juanma Barranquero
  1 sibling, 2 replies; 71+ messages in thread
From: Miles Bader @ 2007-06-15 16:39 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Juanma Barranquero, Stephen J. Turnbull, rms, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Then the recently introduced `user-emacs-directory' should be renamed
>> to `user-init-directory',
>
> Indeed.  Please: could someone do that?

Er, well, "init" seems ... wrong.  It's used for more than "init files".

-miles

-- 
`Suppose Korea goes to the World Cup final against Japan and wins,' Moon said.
`All the past could be forgiven.'   [NYT]

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 14:33           ` Stefan Monnier
  2007-06-15 16:39             ` Miles Bader
@ 2007-06-15 16:40             ` Juanma Barranquero
  1 sibling, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-15 16:40 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Stephen J. Turnbull, rms, emacs-devel

On 6/15/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> Indeed.  Please: could someone do that?

I'll do, but lest first decide whether to add the new function,
because then many uses of `user-(init|emacs)-directory' will
disappear.

> It should be fixed.  We should be careful to make it work with or without
> a terminating / since it can be set by the user.  If we systematically use
> it with expand-file-name, this will work automatically.

Yes, that's what the-function-with-no-name-yet does.

> If we rename the variable to user-init-directory, then the function should
> probably be called user-init-file.

Too confusing, I think:

  user-init-file is a variable defined in `C source code'.
  Its value is
  "c:/usr/home/.emacs.d/init.el"

  Documentation:
  File name, including directory, of user's initialization file. [...]

> In most places that introduced the ~/.emacs.d thingy, they typically first
> check ~/.emacs.d/TOTO then ~/.TOTO and if neither is present return
> ~/.emacs.d/TOTO.

That's what the proposed function does, with the following differences:

 - It checks for ~/.TOTO before trying ~/.emacs.d/TOTO
 - It skips ~/.emacs.d/ altogether if the user explicitly sets
`user-emacs-directory' to nil.
 - It allows using TATA instead of TOTO in ~/.emacs.d/. The reason is
that things like .emacs-places seem ridiculous under ~/.emacs.d/; it's
better ~/.emacs.d/places than ~/.emacs.d/emacs-places.
 - It creates ~/.emacs.d/ when necessary (if ~/.TOTO does not exist, of course).

Is there something you feel should be different?

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 16:39             ` Miles Bader
@ 2007-06-15 16:41               ` Juanma Barranquero
  2007-06-16  0:38                 ` Miles Bader
  2007-06-15 22:45               ` Richard Stallman
  1 sibling, 1 reply; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-15 16:41 UTC (permalink / raw)
  To: Miles Bader; +Cc: Stephen J. Turnbull, emacs-devel, Stefan Monnier, rms

On 6/15/07, Miles Bader <miles@gnu.org> wrote:

> Er, well, "init" seems ... wrong.  It's used for more than "init files".

I agree, but it is a minor point and the name has prior art...

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 16:27             ` Juanma Barranquero
@ 2007-06-15 18:09               ` Stephen J. Turnbull
  0 siblings, 0 replies; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-15 18:09 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: rms, emacs-devel

Juanma Barranquero writes:

 > > The trick of doing
 > >
 > > (defun user-init-directory ()

 > Yes, but that adds API complexity.

Sure.  Since as Stefan points out it should be used in the context of
expand-file-name anyway, this can't really help, so I withdraw the
suggestion.

 > > How does "user-configuration-file" or
 > > "find-user-configuration-file" sound?  (Of course "configuration"
 > > could be shortened to "config".)
 > 
 > Good, I like `user-config-file' or `find-user-config-file'. Stefan has
 > proposed `user-init-file', but I don't like it because it seems
 > related to .emacs/init.el (as the variable of the same name is).

I agree.  I think the fact that there is a variable of that name with
a quite distinct meaning would be too confusing.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 16:39             ` Miles Bader
  2007-06-15 16:41               ` Juanma Barranquero
@ 2007-06-15 22:45               ` Richard Stallman
  2007-06-15 23:25                 ` Juanma Barranquero
  2007-06-16  5:16                 ` Stephen J. Turnbull
  1 sibling, 2 replies; 71+ messages in thread
From: Richard Stallman @ 2007-06-15 22:45 UTC (permalink / raw)
  To: Miles Bader; +Cc: lekktu, stephen, monnier, emacs-devel

    >> Then the recently introduced `user-emacs-directory' should be renamed
    >> to `user-init-directory',
    >
    > Indeed.  Please: could someone do that?

    Er, well, "init" seems ... wrong.  It's used for more than "init files".

I agree.  "config" is also wrong; this is not just used for
configurations.  In fact, the current name `user-emacs-directory'
seems the best of those three.

    I agree, but it is a minor point and the name has prior art...

How so?

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 22:45               ` Richard Stallman
@ 2007-06-15 23:25                 ` Juanma Barranquero
  2007-06-16 18:50                   ` Richard Stallman
  2007-06-16  5:16                 ` Stephen J. Turnbull
  1 sibling, 1 reply; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-15 23:25 UTC (permalink / raw)
  To: rms; +Cc: stephen, emacs-devel, monnier, Miles Bader

On 6/16/07, Richard Stallman <rms@gnu.org> wrote:

> I agree.  "config" is also wrong; this is not just used for
> configurations.  In fact, the current name `user-emacs-directory'
> seems the best of those three.

I'm not sure what to expect from a "user Emacs directory" either...
Perhaps `user-data-directory' would be vague enough.

>     I agree, but it is a minor point and the name has prior art...

Because, as Stephen has said, a variable with the same purpose and the
name `user-init-directory' has existed in XEmacs for ten years. Adding
the same variable with a different name is incompatibility for
incompatibility's sake; and more so because most uses of it will be
hidden after the proposed `find-user-config-file' function (with
whatever name).

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 16:41               ` Juanma Barranquero
@ 2007-06-16  0:38                 ` Miles Bader
  2007-06-16  0:50                   ` Juanma Barranquero
                                     ` (2 more replies)
  0 siblings, 3 replies; 71+ messages in thread
From: Miles Bader @ 2007-06-16  0:38 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Stephen J. Turnbull, Stefan Monnier, rms, emacs-devel

"Juanma Barranquero" <lekktu@gmail.com> writes:
>> Er, well, "init" seems ... wrong.  It's used for more than "init files".
>
> I agree, but it is a minor point and the name has prior art...

So let's use the better name and add a variable-alias for xemacs
compability.

If the xemacs people also use the directory for more than init files,
they could even make the same change to their system
... variable-aliases are quite nice for backward compability!

-miles

-- 
.Numeric stability is probably not all that important when you're guessing.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-16  0:38                 ` Miles Bader
@ 2007-06-16  0:50                   ` Juanma Barranquero
  2007-06-16  3:28                   ` Stefan Monnier
  2007-06-16  4:53                   ` Stephen J. Turnbull
  2 siblings, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-16  0:50 UTC (permalink / raw)
  To: Miles Bader; +Cc: Stephen J. Turnbull, Stefan Monnier, rms, emacs-devel

On 6/16/07, Miles Bader <miles@gnu.org> wrote:

> If the xemacs people also use the directory for more than init files,
> they could even make the same change to their system
> ... variable-aliases are quite nice for backward compability!

I won't argue the point, but it seems to me a bit silly having to add
a new variable alias (and forcing the XEmacs people to add another)
just for that; more so when the variable didn't exist less than a week
ago (in Emacs).

And, all in all, `user-emacs-directory' is a bad name IMO.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-16  0:38                 ` Miles Bader
  2007-06-16  0:50                   ` Juanma Barranquero
@ 2007-06-16  3:28                   ` Stefan Monnier
  2007-06-16  3:30                     ` Juanma Barranquero
  2007-06-16  4:53                   ` Stephen J. Turnbull
  2 siblings, 1 reply; 71+ messages in thread
From: Stefan Monnier @ 2007-06-16  3:28 UTC (permalink / raw)
  To: Miles Bader; +Cc: Juanma Barranquero, Stephen J. Turnbull, rms, emacs-devel

>>> Er, well, "init" seems ... wrong.  It's used for more than "init files".
>> I agree, but it is a minor point and the name has prior art...
> So let's use the better name and add a variable-alias for XEmacs
> compability.

I find it kind of silly, since user-emacs-directory is not
significantly better than user-init-directory.  The difference is rather
minor, so it seems pointless to waste all this time arguing and then adding
aliases for one name because the other is just a tad more unhelpful.


        Stefan

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-16  3:28                   ` Stefan Monnier
@ 2007-06-16  3:30                     ` Juanma Barranquero
  0 siblings, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-16  3:30 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Stephen J. Turnbull, emacs-devel, rms, Miles Bader

On 6/16/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> The difference is rather
> minor, so it seems pointless to waste all this time arguing and then adding
> aliases for one name because the other is just a tad more unhelpful.

Agreed.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-16  0:38                 ` Miles Bader
  2007-06-16  0:50                   ` Juanma Barranquero
  2007-06-16  3:28                   ` Stefan Monnier
@ 2007-06-16  4:53                   ` Stephen J. Turnbull
  2 siblings, 0 replies; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-16  4:53 UTC (permalink / raw)
  To: Miles Bader; +Cc: Juanma Barranquero, emacs-devel, Stefan Monnier, rms

Miles Bader writes:

 > If the xemacs people also use the directory for more than init files,
 > they could even make the same change to their system
 > ... variable-aliases are quite nice for backward compability!

Please don't.  For XEmacs, this variable is well-enough named that
there have been no questions and no complaints for about ten years.  I
see no reason why it will not serve Emacs equally well for the next
ten, even though it is perhaps suboptimal if there were no history.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 22:45               ` Richard Stallman
  2007-06-15 23:25                 ` Juanma Barranquero
@ 2007-06-16  5:16                 ` Stephen J. Turnbull
  2007-06-16 18:50                   ` Richard Stallman
  1 sibling, 1 reply; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-16  5:16 UTC (permalink / raw)
  To: rms; +Cc: lekktu, emacs-devel, monnier, Miles Bader

Richard Stallman writes:

 >     >> Then the recently introduced `user-emacs-directory' should be renamed
 >     >> to `user-init-directory',
 >     >
 >     > Indeed.  Please: could someone do that?
 > 
 >     Er, well, "init" seems ... wrong.  It's used for more than "init files".
 > 
 > I agree.  "config" is also wrong; this is not just used for
 > configurations.

The question is not how the directory is used; it is how the variable
is used.  To XEmacs-the-program, and its subsystems, the operational
meaning is "when you [re]*init*[ialize] the environment, the *user*'s
configuration files may be found in this *directory*."  This includes
the auto-autoloads for packages when the user cannot or prefers to not
install in the system load-path, for whatever reason.

True, if the auto-autoloads are there, then the rest of the package
(and infrastructure) are there too.  Many XEmacs users do things like
keep sources to private libraries and personal data files there, of
course.  But XEmacs and its subsystems know nothing about that!  They
find packaged code through `load-path', not `user-init-directory', and
they find data through `data-directory-list'.  So it seems
*preferable* that the variable name not indicate such usage.  Rather,
subsystems should use it to initialize standard paths so that `load'
and `locate-data-file' Just Work, rather than have subsystems
explicitly referencing `user-emacs-directory'.

If Emacs's use is going to be substantially different, please pick an
appropriate name for that.  But as I understand it, the primary usage
of this *variable* is going to be finding user configuration when
initializing Emacs and its subsystems, as it described above for XEmacs.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-15 23:25                 ` Juanma Barranquero
@ 2007-06-16 18:50                   ` Richard Stallman
  2007-06-16 19:20                     ` Juanma Barranquero
  2007-06-17 12:36                     ` Stefan Monnier
  0 siblings, 2 replies; 71+ messages in thread
From: Richard Stallman @ 2007-06-16 18:50 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: stephen, emacs-devel, monnier, miles

    I'm not sure what to expect from a "user Emacs directory" either...

The user's directory for Emacs-specific purposes.

    Perhaps `user-data-directory' would be vague enough.

That fails to make the point, so it is not as good.

    Because, as Stephen has said, a variable with the same purpose and the
    name `user-init-directory' has existed in XEmacs for ten years.

I don't think anyone will care if they are different, but if so,
someone can make an alias.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-16  5:16                 ` Stephen J. Turnbull
@ 2007-06-16 18:50                   ` Richard Stallman
  0 siblings, 0 replies; 71+ messages in thread
From: Richard Stallman @ 2007-06-16 18:50 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: lekktu, emacs-devel, monnier, miles

    The question is not how the directory is used; it is how the variable
    is used.  To XEmacs-the-program, and its subsystems, the operational
    meaning is "when you [re]*init*[ialize] the environment, the *user*'s
    configuration files may be found in this *directory*."

The names `emacs-config-directory' or `emacs-init-directory' seem to
fit what XEmacs does.  In Emacs, the directory is used for many other
things, including auto-saving.  So that name is not appropriate in
Emacs.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-16 18:50                   ` Richard Stallman
@ 2007-06-16 19:20                     ` Juanma Barranquero
  2007-06-16 20:19                       ` Stephen J. Turnbull
  2007-06-17 12:36                     ` Stefan Monnier
  1 sibling, 1 reply; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-16 19:20 UTC (permalink / raw)
  To: rms; +Cc: stephen, emacs-devel, monnier, miles

On 6/16/07, Richard Stallman <rms@gnu.org> wrote:

> I don't think anyone will care if they are different, but if so,
> someone can make an alias.

Obviously Stephen cares, or he would not have asked us to respect
their prior name. FWIW, I agree with it.

But the naming of the variable is not what concerns me more; what I
want to know is whether it is OK to install the function I proposed,
and with what name.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-16 19:20                     ` Juanma Barranquero
@ 2007-06-16 20:19                       ` Stephen J. Turnbull
  0 siblings, 0 replies; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-16 20:19 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: miles, rms, monnier, emacs-devel

Juanma Barranquero writes:
 > On 6/16/07, Richard Stallman <rms@gnu.org> wrote:
 > 
 > > I don't think anyone will care if they are different, but if so,
 > > someone can make an alias.
 > 
 > Obviously Stephen cares,

Not any more.  Just get the function in, please.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-16 18:50                   ` Richard Stallman
  2007-06-16 19:20                     ` Juanma Barranquero
@ 2007-06-17 12:36                     ` Stefan Monnier
  2007-06-18  7:25                       ` Richard Stallman
  1 sibling, 1 reply; 71+ messages in thread
From: Stefan Monnier @ 2007-06-17 12:36 UTC (permalink / raw)
  To: rms; +Cc: Juanma Barranquero, stephen, emacs-devel, miles

>     Because, as Stephen has said, a variable with the same purpose and the
>     name `user-init-directory' has existed in XEmacs for ten years.

> I don't think anyone will care if they are different, but if so,
> someone can make an alias.

I do care.  So do a few others on this list.  Brashly ignoring XEmacs prior
use is unlikely to help us reduce the unnecessary and destructive tension
between the two communities.


        Stefan

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-17 12:36                     ` Stefan Monnier
@ 2007-06-18  7:25                       ` Richard Stallman
  2007-06-18  7:38                         ` David Kastrup
  0 siblings, 1 reply; 71+ messages in thread
From: Richard Stallman @ 2007-06-18  7:25 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: lekktu, stephen, miles, emacs-devel

    > I don't think anyone will care if they are different, but if so,
    > someone can make an alias.

    I do care.  So do a few others on this list.

Can you present a reason why it matters whether this variable has the
same name in Emacs and XEmacs?  Which programs would need such
compatibility?

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-18  7:25                       ` Richard Stallman
@ 2007-06-18  7:38                         ` David Kastrup
  2007-06-20 13:29                           ` Richard Stallman
  0 siblings, 1 reply; 71+ messages in thread
From: David Kastrup @ 2007-06-18  7:38 UTC (permalink / raw)
  To: rms; +Cc: lekktu, stephen, emacs-devel, Stefan Monnier, miles

Richard Stallman <rms@gnu.org> writes:

>     > I don't think anyone will care if they are different, but if so,
>     > someone can make an alias.
>
>     I do care.  So do a few others on this list.
>
> Can you present a reason why it matters whether this variable has the
> same name in Emacs and XEmacs?  Which programs would need such
> compatibility?

All packages needing a place for package-specific
initialization/configuration/data files?

-- 
David Kastrup

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-18  7:38                         ` David Kastrup
@ 2007-06-20 13:29                           ` Richard Stallman
  2007-06-20 13:39                             ` Juanma Barranquero
  0 siblings, 1 reply; 71+ messages in thread
From: Richard Stallman @ 2007-06-20 13:29 UTC (permalink / raw)
  To: David Kastrup; +Cc: lekktu, stephen, emacs-devel, monnier, miles

    All packages needing a place for package-specific
    initialization/configuration/data files?

I thought we were going to create a function for them to use.  That
function doesn't exist in XEmacs.  Let's pick the best name for it.
if XEmacs wants to add that function, it can use the best name too.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-20 13:29                           ` Richard Stallman
@ 2007-06-20 13:39                             ` Juanma Barranquero
  2007-06-20 14:29                               ` Stephen J. Turnbull
  2007-06-21  1:07                               ` Richard Stallman
  0 siblings, 2 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-20 13:39 UTC (permalink / raw)
  To: rms; +Cc: stephen, emacs-devel, monnier, miles

On 6/20/07, Richard Stallman <rms@gnu.org> wrote:

> I thought we were going to create a function for them to use.

Yes. It is waiting for you to OK a name (I hate commiting code and
changing names a few days later).

> Let's pick the best name for it.

Stephen proposed `user-config-file' or `find-user-config-file', and I
like them, but I think you said it is not only for configuration
files. So, some permutation of `user', `local, `data' and `directory'.

What about the variable `user-emacs-directory'? That is surely not the
"best name for it".

Perhaps we could name the variable `user-data-directory' and the
function `find-user-data-file'.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-20 13:39                             ` Juanma Barranquero
@ 2007-06-20 14:29                               ` Stephen J. Turnbull
  2007-06-20 14:59                                 ` Juanma Barranquero
  2007-06-21  1:07                                 ` Richard Stallman
  2007-06-21  1:07                               ` Richard Stallman
  1 sibling, 2 replies; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-20 14:29 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: miles, rms, monnier, emacs-devel

Juanma Barranquero writes:

 > Perhaps we could name the variable `user-data-directory' and the
 > function `find-user-data-file'.

That name for the variable is fine with me.  The user-init-directory
can continue to have the semantics we've used to date, and
user-data-directory will probably default to that in XEmacs.

Regarding `find-user-data-file', XEmacs distinguishes between
"locating" a file (those functions return file names), and "finding" a
file (those functions switch to a buffer visiting the file).  I forget
which your function does....  I don't have a strong feeling about
this, but Emacs makes a similar distinction with "find-library"
vs. "locate-library".  Maybe it's worth being consistent?

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-20 14:29                               ` Stephen J. Turnbull
@ 2007-06-20 14:59                                 ` Juanma Barranquero
  2007-06-21  1:07                                 ` Richard Stallman
  1 sibling, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-20 14:59 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: miles, rms, monnier, emacs-devel

On 6/20/07, Stephen J. Turnbull <stephen@xemacs.org> wrote:

> Regarding `find-user-data-file', XEmacs distinguishes between
> "locating" a file (those functions return file names), and "finding" a
> file (those functions switch to a buffer visiting the file).  I forget
> which your function does....

It's a locate-style function: it returns the path of a
conf/initialization/persitent-data file.

I don't have a strong feeling about
> this, but Emacs makes a similar distinction with "find-library"
> vs. "locate-library".  Maybe it's worth being consistent?

Emacs has `locate-library', `locate-file' and `locate-data-directory'.
Perhaps `locate-user-data' would make sense.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-20 14:29                               ` Stephen J. Turnbull
  2007-06-20 14:59                                 ` Juanma Barranquero
@ 2007-06-21  1:07                                 ` Richard Stallman
  2007-06-21  8:08                                   ` Kai Grossjohann
  1 sibling, 1 reply; 71+ messages in thread
From: Richard Stallman @ 2007-06-21  1:07 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: lekktu, miles, monnier, emacs-devel

    Regarding `find-user-data-file', XEmacs distinguishes between
    "locating" a file (those functions return file names), and "finding" a
    file (those functions switch to a buffer visiting the file).  I forget
    which your function does....  I don't have a strong feeling about
    this, but Emacs makes a similar distinction with "find-library"
    vs. "locate-library".  Maybe it's worth being consistent?

I agree with that point.

But I still don't like `data'.  All the user's directories
hold the user's data, not just this one.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-20 13:39                             ` Juanma Barranquero
  2007-06-20 14:29                               ` Stephen J. Turnbull
@ 2007-06-21  1:07                               ` Richard Stallman
  2007-06-21  2:24                                 ` Stephen J. Turnbull
  2007-06-21  8:11                                 ` Juanma Barranquero
  1 sibling, 2 replies; 71+ messages in thread
From: Richard Stallman @ 2007-06-21  1:07 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: stephen, miles, monnier, emacs-devel

    Stephen proposed `user-config-file' or `find-user-config-file', and I
    like them, but I think you said it is not only for configuration
    files. So, some permutation of `user', `local, `data' and `directory'.

    What about the variable `user-emacs-directory'? That is surely not the
    "best name for it".

It is the best of all the names suggested so far.
What these files all have in common is that they are used
in special ways by Emacs.

The function could be `locate-user-emacs-directory'

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-21  1:07                               ` Richard Stallman
@ 2007-06-21  2:24                                 ` Stephen J. Turnbull
  2007-06-21  8:11                                 ` Juanma Barranquero
  1 sibling, 0 replies; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-21  2:24 UTC (permalink / raw)
  To: rms; +Cc: Juanma Barranquero, miles, monnier, emacs-devel

Richard Stallman writes:

 >     What about the variable `user-emacs-directory'? That is surely not the
 >     "best name for it".
 > 
 > It is the best of all the names suggested so far.

*sigh*  For the record, I disgree strongly.  All of the other names
suggested so far are better.  This one has no intuitive meaning to me,
except "the directory where I keep .emacs".  That already has a
reasonably expressive name with a decade of history in XEmacs:
`user-init-directory'.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-21  1:07                                 ` Richard Stallman
@ 2007-06-21  8:08                                   ` Kai Grossjohann
  2007-06-21  8:23                                     ` Juanma Barranquero
  2007-06-22  1:51                                     ` Richard Stallman
  0 siblings, 2 replies; 71+ messages in thread
From: Kai Grossjohann @ 2007-06-21  8:08 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> But I still don't like `data'.  All the user's directories
> hold the user's data, not just this one.

Compare the variable data-directory.  user-data-directory would be like
data-directory, except for the user.

(I don't think that the name data-directory suggests that all data is in
that directory, only that the Emacs data files are in that directory.
By a similar token, user-init-file doesn't suggest that all the user's
initialization is in that file, only the Emacs initialization.)

Kai

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-21  1:07                               ` Richard Stallman
  2007-06-21  2:24                                 ` Stephen J. Turnbull
@ 2007-06-21  8:11                                 ` Juanma Barranquero
  2007-06-21  8:23                                   ` David Kastrup
  1 sibling, 1 reply; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-21  8:11 UTC (permalink / raw)
  To: rms; +Cc: stephen, miles, monnier, emacs-devel

On 6/21/07, Richard Stallman <rms@gnu.org> wrote:

> What these files all have in common is that they are used
> in special ways by Emacs.

Which is so generic as to not mean anything IMO.

> The function could be `locate-user-emacs-directory'

The function does not locate a directory, but a file. It's intended to
return the path for a filename, i.e., if a module wants to save its
data in ".my-module" and your $HOME is /home/you, and
`user-emacs-directory' is at default value, then

 (function-without-a-name ".my-module")

will return "/home/you/.my-module" if it exists, else
"/home/you/.emacs.d/.my-module" (creating /home/you/.emacs.d/ as
needed).

With the second optional argument NEW-NAME:

 (function-without-a-name ".my-module" "module-data")

in the second case (when ~/.my-module does not exist) it will return
"/home/you/.emacs.d/module-data".

So locate-user-emacs-directory does not describe what the function
does, and locate-user-emacs-file would be confusing: it does not
return the path of the "emacs file" (presumable .emacs).

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-21  8:08                                   ` Kai Grossjohann
@ 2007-06-21  8:23                                     ` Juanma Barranquero
  2007-06-22  1:51                                     ` Richard Stallman
  1 sibling, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-21  8:23 UTC (permalink / raw)
  To: Kai Grossjohann; +Cc: emacs-devel

On 6/21/07, Kai Grossjohann <kai@emptydomain.de> wrote:

> Compare the variable data-directory.  user-data-directory would be like
> data-directory, except for the user.

That was the idea.

> (I don't think that the name data-directory suggests that all data is in
> that directory, only that the Emacs data files are in that directory.

Agreed.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-21  8:11                                 ` Juanma Barranquero
@ 2007-06-21  8:23                                   ` David Kastrup
  2007-06-21  8:46                                     ` Juanma Barranquero
  0 siblings, 1 reply; 71+ messages in thread
From: David Kastrup @ 2007-06-21  8:23 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: stephen, emacs-devel, rms, monnier, miles

"Juanma Barranquero" <lekktu@gmail.com> writes:

> So locate-user-emacs-directory does not describe what the function
> does, and locate-user-emacs-file would be confusing: it does not
> return the path of the "emacs file" (presumable .emacs).

locate-user-file ?  locate-user-emacs-file could have the file name
argument optional, defaulting to .emacs/init.el or something.

-- 
David Kastrup

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-21  8:23                                   ` David Kastrup
@ 2007-06-21  8:46                                     ` Juanma Barranquero
  0 siblings, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-21  8:46 UTC (permalink / raw)
  To: David Kastrup; +Cc: stephen, emacs-devel, rms, monnier, miles

On 6/21/07, David Kastrup <dak@gnu.org> wrote:

> locate-user-file ?

Fine by me. Then we could name the variable `user-files-directory'...
I think we all can agree that directory is going to contain files :)
(but I still like user-data-directory much, much more.)

> locate-user-emacs-file could have the file name
> argument optional, defaulting to .emacs/init.el or something.

I purposely didn't care about .emacs in my function, though you could
get the basic functionality with

  (function-without-a-name ".emacs" "init.el")

because the .emacs case is quite specific. On MS-DOS/Windows, NAME has
four possible values and can be found in at least three places. You
could generalize the function-without-a-name to accept a predicate or
something, but it's not worth the complexity just for this case.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-21  8:08                                   ` Kai Grossjohann
  2007-06-21  8:23                                     ` Juanma Barranquero
@ 2007-06-22  1:51                                     ` Richard Stallman
  2007-06-22  7:55                                       ` Juanma Barranquero
  1 sibling, 1 reply; 71+ messages in thread
From: Richard Stallman @ 2007-06-22  1:51 UTC (permalink / raw)
  To: Kai Grossjohann; +Cc: emacs-devel

    Compare the variable data-directory.  user-data-directory would be like
    data-directory, except for the user.

Ok, I will agree to `user-data-directory'.

    > What these files all have in common is that they are used
    > in special ways by Emacs.

    Which is so generic as to not mean anything IMO.

Exactly -- the only thing they have in common is having a special
relationship to Emacs.

    > The function could be `locate-user-emacs-directory'

    The function does not locate a directory, but a file.

In that case, both `locate-user-XYZ-directory' and `find-user-XYZ-directory'
are bad names for it.

							  It's intended to
    return the path for a filename, i.e., if a module wants to save its
    data in ".my-module" and your $HOME is /home/you, and
    `user-emacs-directory' is at default value, then

     (function-without-a-name ".my-module")

    will return "/home/you/.my-module" if it exists, else
    "/home/you/.emacs.d/.my-module" (creating /home/you/.emacs.d/ as
    needed).

I suggest the name `locale-emacs-data-file'.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-22  1:51                                     ` Richard Stallman
@ 2007-06-22  7:55                                       ` Juanma Barranquero
  2007-06-22 18:51                                         ` Richard Stallman
  2007-06-22 18:51                                         ` Richard Stallman
  0 siblings, 2 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-22  7:55 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

On 6/22/07, Richard Stallman <rms@gnu.org> wrote:

> Ok, I will agree to `user-data-directory'.

Great, thanks.

> Exactly -- the only thing they have in common is having a special
> relationship to Emacs.

My point was that saying that they have a special relationship with
Emacs is equally generic.

> In that case, both `locate-user-XYZ-directory' and `find-user-XYZ-directory'
> are bad names for it.

Yes. I was suggesting something with -file.

> I suggest the name `locale-emacs-data-file'.

Going with the `user-data-directory' theme, I think it's better
`locate-user-data-file'.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-22  7:55                                       ` Juanma Barranquero
@ 2007-06-22 18:51                                         ` Richard Stallman
  2007-06-22 18:51                                         ` Richard Stallman
  1 sibling, 0 replies; 71+ messages in thread
From: Richard Stallman @ 2007-06-22 18:51 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel

    > Exactly -- the only thing they have in common is having a special
    > relationship to Emacs.

    My point was that saying that they have a special relationship with
    Emacs is equally generic.

It is supposed to be generic.  Most of your files don't have any
special relationship with Emacs.  You might edit them with Emacs but
they don't exist for the sake of using Emacs.  These files do exist
for the sake of using Emacs.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-22  7:55                                       ` Juanma Barranquero
  2007-06-22 18:51                                         ` Richard Stallman
@ 2007-06-22 18:51                                         ` Richard Stallman
  2007-06-25  9:59                                           ` Juanma Barranquero
  1 sibling, 1 reply; 71+ messages in thread
From: Richard Stallman @ 2007-06-22 18:51 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel

    Yes. I was suggesting something with -file.

    > I suggest the name `locale-emacs-data-file'.

    Going with the `user-data-directory' theme, I think it's better
    `locate-user-data-file'.

I think `locate-emacs-data-file is better because it expresses the
fact that you're looking for data files that relate specially to
Emacs.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-22 18:51                                         ` Richard Stallman
@ 2007-06-25  9:59                                           ` Juanma Barranquero
  2007-06-25 14:33                                             ` Stefan Monnier
  2007-06-25 15:46                                             ` Richard Stallman
  0 siblings, 2 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-25  9:59 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

On 6/22/07, Richard Stallman <rms@gnu.org> wrote:

> I think `locate-emacs-data-file is better because it expresses the
> fact that you're looking for data files that relate specially to
> Emacs.

Well, in fact I said that the function does not return a directory,
and that's true, it returns a path. However, sometimes that path is a
directory name, as when a module uses it to construct a directory to
put temporary files.

So, following your suggestion it'd be more like
`locate-emacs-data-path'. Which I dislike, because we're insisting on
Emacs (which I think we can assume) and we're neglecting the user.
`locate-user-data-path' seems more to the point.

But at this point, I just want to commit it. Please, choose one.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25  9:59                                           ` Juanma Barranquero
@ 2007-06-25 14:33                                             ` Stefan Monnier
  2007-06-25 14:51                                               ` Juanma Barranquero
  2007-06-25 15:46                                             ` Richard Stallman
  1 sibling, 1 reply; 71+ messages in thread
From: Stefan Monnier @ 2007-06-25 14:33 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: rms, emacs-devel

> Well, in fact I said that the function does not return a directory,
> and that's true, it returns a path.

No: a path is a list of directories (as in the PATH, MANPATH EMACSLOADPATH,
etc...).  What it returns is a file name.  The file referenced may be of
directory kind (or symlink kind, or normal file kind, or even device kind),
but it's still a file name.


        Stefan

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 14:33                                             ` Stefan Monnier
@ 2007-06-25 14:51                                               ` Juanma Barranquero
  2007-06-25 14:54                                                 ` David Kastrup
                                                                   ` (2 more replies)
  0 siblings, 3 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-25 14:51 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: rms, emacs-devel

On 6/25/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> No: a path is a list of directories (as in the PATH, MANPATH EMACSLOADPATH,
> etc...).

You're right.

> What it returns is a file name.  The file referenced may be of
> directory kind (or symlink kind, or normal file kind, or even device kind),
> but it's still a file name.

It's not the first time I mix the terminology (Richard corrected me a
couple times before). I've honestly tried to remember it, but my mind
refuses, perhaps as a rection to the horror of supposing that
everything is a file, which a directory is not (in general, though I
know it *is* in Unix and its derivatives, and many other OSes). I'm
not going to enter an OS flamewar, but in my younger days I hacked
VAX/VMS, where a filename and a directory were clearly distinct :)

I understand (and promptly forget, alas) how "path" is used in Emacs.
But I unconsciously revert to the more widespread use, as documented
in the Wikipedia, among many other places: "A path is the general form
of a file or directory name, giving a file's name and its unique
location in a file system." The use of path brought to life from PATH
and other environment variables is an accident that would've been
averted had the original namer had the forethought of calling it
PATHS, which seems more logical...

At least I didn't find difficult to remember that frames are windows
and windows are panes (and yeah, I know, Emacs Was There First :)

locate-user-emacs-file, then, as ugly as it is.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 14:51                                               ` Juanma Barranquero
@ 2007-06-25 14:54                                                 ` David Kastrup
  2007-06-25 15:00                                                   ` David Kastrup
  2007-06-25 16:27                                                 ` Stefan Monnier
  2007-06-25 16:29                                                 ` Stefan Monnier
  2 siblings, 1 reply; 71+ messages in thread
From: David Kastrup @ 2007-06-25 14:54 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel, Stefan Monnier, rms

"Juanma Barranquero" <lekktu@gmail.com> writes:

> At least I didn't find difficult to remember that frames are windows
> and windows are panes (and yeah, I know, Emacs Was There First :)
>
> locate-user-emacs-file, then, as ugly as it is.

>From functions like file-name-as-directory and directory-file-name one
could possibly derive locate-user-emacs-file-name.  However, I find
that this sounds illogical since the _name_ is not what is _located_.

So locate-*-file seems more appropriate.

-- 
David Kastrup

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 14:54                                                 ` David Kastrup
@ 2007-06-25 15:00                                                   ` David Kastrup
  0 siblings, 0 replies; 71+ messages in thread
From: David Kastrup @ 2007-06-25 15:00 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Stefan Monnier, rms, emacs-devel

David Kastrup <dak@gnu.org> writes:

> "Juanma Barranquero" <lekktu@gmail.com> writes:
>
>> At least I didn't find difficult to remember that frames are windows
>> and windows are panes (and yeah, I know, Emacs Was There First :)
>>
>> locate-user-emacs-file, then, as ugly as it is.
>
>>From functions like file-name-as-directory and directory-file-name one
> could possibly derive locate-user-emacs-file-name.  However, I find
> that this sounds illogical since the _name_ is not what is _located_.
>
> So locate-*-file seems more appropriate.

Actually, in correspondence with `make-temp-name', the function might
be named `make-user-file-name'.  The disadvantage is that `make'
carries with it the slight connotation that the file and/or name will
be a new one.  That would be somewhat alleviated by using
`get-user-file-name' (get is used in a similar function with buffers).

I think I should stop now before someone shoots me.

-- 
David Kastrup

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25  9:59                                           ` Juanma Barranquero
  2007-06-25 14:33                                             ` Stefan Monnier
@ 2007-06-25 15:46                                             ` Richard Stallman
  1 sibling, 0 replies; 71+ messages in thread
From: Richard Stallman @ 2007-06-25 15:46 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel

    Well, in fact I said that the function does not return a directory,
    and that's true, it returns a path.

The GNU Project convention is to use the term "path" only to mean a
list of directories to search.  For what this function returns,
our term is "file name".

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 14:51                                               ` Juanma Barranquero
  2007-06-25 14:54                                                 ` David Kastrup
@ 2007-06-25 16:27                                                 ` Stefan Monnier
  2007-06-25 18:23                                                   ` Juanma Barranquero
  2007-06-25 16:29                                                 ` Stefan Monnier
  2 siblings, 1 reply; 71+ messages in thread
From: Stefan Monnier @ 2007-06-25 16:27 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: rms, emacs-devel

> I'm not going to enter an OS flamewar, but in my younger days I hacked
> VAX/VMS, where a filename and a directory were clearly distinct :)

Emacs follows this idea as well.  I.e. a directory is a file, and it has two
names: one to treat it as a filem and another to treat it as a directory.
So /usr is a directory whose file name is "/usr" and directory name is
"/usr/", see file-name-as-directory and directory-file-name.

Unider Unix, the trailing slash often makes no difference, so people tend to
forget about the distinction, but occasionally the difference is significant.


        Stefan

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 14:51                                               ` Juanma Barranquero
  2007-06-25 14:54                                                 ` David Kastrup
  2007-06-25 16:27                                                 ` Stefan Monnier
@ 2007-06-25 16:29                                                 ` Stefan Monnier
  2007-06-25 18:27                                                   ` Juanma Barranquero
  2 siblings, 1 reply; 71+ messages in thread
From: Stefan Monnier @ 2007-06-25 16:29 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: rms, emacs-devel

> couple times before).  I've honestly tried to remember it, but my mind
> refuses, perhaps as a rection to the horror of supposing that
> everything is a file, which a directory is not (in general, though I

Not everything is a file.  But a directory is a file on all OSes I know that
includes VMS).


        Stefan

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 16:27                                                 ` Stefan Monnier
@ 2007-06-25 18:23                                                   ` Juanma Barranquero
  2007-06-25 18:32                                                     ` David Kastrup
  2007-06-26  0:16                                                     ` Stephen J. Turnbull
  0 siblings, 2 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-25 18:23 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: rms, emacs-devel

On 6/25/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> Emacs follows this idea as well.  I.e. a directory is a file, and it has two
> names: one to treat it as a filem and another to treat it as a directory.
> So /usr is a directory whose file name is "/usr" and directory name is
> "/usr/", see file-name-as-directory and directory-file-name.

I know, I'm even using `directory-file-name' in The Function Without A
Name. But Emacs users and developers apparently don't, if they don't
balk at the idea of a function *-file returning the path (cough, the
filename, I mean) of a directory.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 16:29                                                 ` Stefan Monnier
@ 2007-06-25 18:27                                                   ` Juanma Barranquero
  2007-06-25 19:49                                                     ` Andreas Schwab
  2007-06-25 20:35                                                     ` Eli Zaretskii
  0 siblings, 2 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-25 18:27 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: rms, emacs-devel

On 6/25/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> Not everything is a file.  But a directory is a file on all OSes I know that
> includes VMS).

I must be misremembering VMS. Neither at the command prompt nor in the
programming API were directories treated as files IIRC.

Also, in MS-DOS, there was some trickery to simulate that directories
were files, but you couldn't, for example, get the size of one, or
directly write onto it as a file. At least that's what I remember of
some distant past.

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 18:23                                                   ` Juanma Barranquero
@ 2007-06-25 18:32                                                     ` David Kastrup
  2007-06-25 18:46                                                       ` Juanma Barranquero
  2007-06-26  0:16                                                     ` Stephen J. Turnbull
  1 sibling, 1 reply; 71+ messages in thread
From: David Kastrup @ 2007-06-25 18:32 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel, Stefan Monnier, rms

"Juanma Barranquero" <lekktu@gmail.com> writes:

> On 6/25/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
>> Emacs follows this idea as well.  I.e. a directory is a file, and it has two
>> names: one to treat it as a filem and another to treat it as a directory.
>> So /usr is a directory whose file name is "/usr" and directory name is
>> "/usr/", see file-name-as-directory and directory-file-name.
>
> I know, I'm even using `directory-file-name' in The Function Without A
> Name. But Emacs users and developers apparently don't, if they don't
> balk at the idea of a function *-file returning the path (cough, the
> filename, I mean) of a directory.

That's why we have file-name-as-directory, isn't it?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 18:32                                                     ` David Kastrup
@ 2007-06-25 18:46                                                       ` Juanma Barranquero
  0 siblings, 0 replies; 71+ messages in thread
From: Juanma Barranquero @ 2007-06-25 18:46 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel, Stefan Monnier, rms

On 6/25/07, David Kastrup <dak@gnu.org> wrote:

> That's why we have file-name-as-directory, isn't it?

To placate your consciences, you mean?

             Juanma

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 18:27                                                   ` Juanma Barranquero
@ 2007-06-25 19:49                                                     ` Andreas Schwab
  2007-06-25 20:35                                                     ` Eli Zaretskii
  1 sibling, 0 replies; 71+ messages in thread
From: Andreas Schwab @ 2007-06-25 19:49 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel, Stefan Monnier, rms

"Juanma Barranquero" <lekktu@gmail.com> writes:

> Also, in MS-DOS, there was some trickery to simulate that directories
> were files, but you couldn't, for example, get the size of one, or
> directly write onto it as a file.

You can't write to a directory file on Unix either, and the size of it
is mostly meaningless too.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 18:27                                                   ` Juanma Barranquero
  2007-06-25 19:49                                                     ` Andreas Schwab
@ 2007-06-25 20:35                                                     ` Eli Zaretskii
  2007-06-25 20:39                                                       ` David Kastrup
  1 sibling, 1 reply; 71+ messages in thread
From: Eli Zaretskii @ 2007-06-25 20:35 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel, monnier, rms

> Date: Mon, 25 Jun 2007 20:27:30 +0200
> From: "Juanma Barranquero" <lekktu@gmail.com>
> Cc: rms@gnu.org, emacs-devel@gnu.org
> 
> Also, in MS-DOS, there was some trickery to simulate that directories
> were files, but you couldn't, for example, get the size of one, or
> directly write onto it as a file.

Directories _are_ files on MSDOS, they are just special files, in that
some file I/O functions fail for them.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 20:35                                                     ` Eli Zaretskii
@ 2007-06-25 20:39                                                       ` David Kastrup
  2007-06-25 20:58                                                         ` Eli Zaretskii
  0 siblings, 1 reply; 71+ messages in thread
From: David Kastrup @ 2007-06-25 20:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Juanma Barranquero, monnier, rms, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Mon, 25 Jun 2007 20:27:30 +0200
>> From: "Juanma Barranquero" <lekktu@gmail.com>
>> Cc: rms@gnu.org, emacs-devel@gnu.org
>> 
>> Also, in MS-DOS, there was some trickery to simulate that directories
>> were files, but you couldn't, for example, get the size of one, or
>> directly write onto it as a file.
>
> Directories _are_ files on MSDOS, they are just special files, in that
> some file I/O functions fail for them.

I seem to remember that the root directory on a disk is not a file.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 20:39                                                       ` David Kastrup
@ 2007-06-25 20:58                                                         ` Eli Zaretskii
  0 siblings, 0 replies; 71+ messages in thread
From: Eli Zaretskii @ 2007-06-25 20:58 UTC (permalink / raw)
  To: David Kastrup; +Cc: lekktu, monnier, rms, emacs-devel

> Cc: "Juanma Barranquero" <lekktu@gmail.com>,  emacs-devel@gnu.org,
> 	  monnier@iro.umontreal.ca,  rms@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Mon, 25 Jun 2007 22:39:20 +0200
> 
> > Directories _are_ files on MSDOS, they are just special files, in that
> > some file I/O functions fail for them.
> 
> I seem to remember that the root directory on a disk is not a file.

I think in later versions it was a file.

^ permalink raw reply	[flat|nested] 71+ messages in thread

* Re: Don't concat directories to file names
  2007-06-25 18:23                                                   ` Juanma Barranquero
  2007-06-25 18:32                                                     ` David Kastrup
@ 2007-06-26  0:16                                                     ` Stephen J. Turnbull
  1 sibling, 0 replies; 71+ messages in thread
From: Stephen J. Turnbull @ 2007-06-26  0:16 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel, Stefan Monnier, rms

Juanma Barranquero writes:

 > I know, I'm even using `directory-file-name' in The Function Without A
 > Name. But Emacs users and developers apparently don't, if they don't
 > balk at the idea of a function *-file returning the path (cough, the
 > filename, I mean) of a directory.

It's not globally consistent, of course.

As with many other concepts in Emacs there is a confusion between
objects, names for objects, and handles (references) to objects.
Consider fonts and coding systems.  (XEmacs actually has font objects
and coding system objects, but I have yet to see a case where the
distinction between a symbol naming such an object and the actual
object is useful.)

Consider that Emacs doesn't have a notion of file handle.  What serves
for a file handle in Emacs is a buffer visiting a file.  Thus the
distinction between the verbs "find" and "locate", which serves the
same kind of purpose with complete different syntax.

I don't mean to argue that you're "wrong" (how could you be?  this is
definitely a YMMV kinda thang :-).  Nor does this directly address the
PATH-style path vs. URL-style path issue.  This helps me to
rationalize it, that's all.

^ permalink raw reply	[flat|nested] 71+ messages in thread

end of thread, other threads:[~2007-06-26  0:16 UTC | newest]

Thread overview: 71+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-13 16:22 Don't concat directories to file names Richard Stallman
2007-06-14 15:16 ` Juanma Barranquero
2007-06-14 17:10   ` Stephen J. Turnbull
2007-06-14 21:12     ` Juanma Barranquero
2007-06-15  1:50       ` Stephen J. Turnbull
2007-06-15  7:55         ` Juanma Barranquero
2007-06-15  9:15     ` Juanma Barranquero
2007-06-15 10:20       ` Stephen J. Turnbull
2007-06-15 11:21         ` Juanma Barranquero
2007-06-15 14:19           ` Stephen J. Turnbull
2007-06-15 16:27             ` Juanma Barranquero
2007-06-15 18:09               ` Stephen J. Turnbull
2007-06-15 14:33           ` Stefan Monnier
2007-06-15 16:39             ` Miles Bader
2007-06-15 16:41               ` Juanma Barranquero
2007-06-16  0:38                 ` Miles Bader
2007-06-16  0:50                   ` Juanma Barranquero
2007-06-16  3:28                   ` Stefan Monnier
2007-06-16  3:30                     ` Juanma Barranquero
2007-06-16  4:53                   ` Stephen J. Turnbull
2007-06-15 22:45               ` Richard Stallman
2007-06-15 23:25                 ` Juanma Barranquero
2007-06-16 18:50                   ` Richard Stallman
2007-06-16 19:20                     ` Juanma Barranquero
2007-06-16 20:19                       ` Stephen J. Turnbull
2007-06-17 12:36                     ` Stefan Monnier
2007-06-18  7:25                       ` Richard Stallman
2007-06-18  7:38                         ` David Kastrup
2007-06-20 13:29                           ` Richard Stallman
2007-06-20 13:39                             ` Juanma Barranquero
2007-06-20 14:29                               ` Stephen J. Turnbull
2007-06-20 14:59                                 ` Juanma Barranquero
2007-06-21  1:07                                 ` Richard Stallman
2007-06-21  8:08                                   ` Kai Grossjohann
2007-06-21  8:23                                     ` Juanma Barranquero
2007-06-22  1:51                                     ` Richard Stallman
2007-06-22  7:55                                       ` Juanma Barranquero
2007-06-22 18:51                                         ` Richard Stallman
2007-06-22 18:51                                         ` Richard Stallman
2007-06-25  9:59                                           ` Juanma Barranquero
2007-06-25 14:33                                             ` Stefan Monnier
2007-06-25 14:51                                               ` Juanma Barranquero
2007-06-25 14:54                                                 ` David Kastrup
2007-06-25 15:00                                                   ` David Kastrup
2007-06-25 16:27                                                 ` Stefan Monnier
2007-06-25 18:23                                                   ` Juanma Barranquero
2007-06-25 18:32                                                     ` David Kastrup
2007-06-25 18:46                                                       ` Juanma Barranquero
2007-06-26  0:16                                                     ` Stephen J. Turnbull
2007-06-25 16:29                                                 ` Stefan Monnier
2007-06-25 18:27                                                   ` Juanma Barranquero
2007-06-25 19:49                                                     ` Andreas Schwab
2007-06-25 20:35                                                     ` Eli Zaretskii
2007-06-25 20:39                                                       ` David Kastrup
2007-06-25 20:58                                                         ` Eli Zaretskii
2007-06-25 15:46                                             ` Richard Stallman
2007-06-21  1:07                               ` Richard Stallman
2007-06-21  2:24                                 ` Stephen J. Turnbull
2007-06-21  8:11                                 ` Juanma Barranquero
2007-06-21  8:23                                   ` David Kastrup
2007-06-21  8:46                                     ` Juanma Barranquero
2007-06-16  5:16                 ` Stephen J. Turnbull
2007-06-16 18:50                   ` Richard Stallman
2007-06-15 16:40             ` Juanma Barranquero
2007-06-14 19:51   ` Tom Tromey
2007-06-14 21:17     ` Juanma Barranquero
2007-06-14 21:32       ` Stefan Monnier
2007-06-14 21:39         ` Juanma Barranquero
2007-06-15  7:29       ` Eli Zaretskii
2007-06-15  7:56         ` Juanma Barranquero
2007-06-14 19:40 ` Tom Tromey

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).