unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#26272: default-directory: Remark that it must be a directory name
@ 2017-03-27 10:13 Tino Calancha
  2017-03-27 14:43 ` Eli Zaretskii
  0 siblings, 1 reply; 13+ messages in thread
From: Tino Calancha @ 2017-03-27 10:13 UTC (permalink / raw)
  To: 26272


The docstring of `file-name-as-directory' suggests that is
important that `default-directory' be a directory name, i.e.,
for instance in GNU/Linux ends with '/'.  The docstring of
`default-directory' doesn't mention it.

--8<-----------------------------cut here---------------start------------->8---
From 1579eeb2388d65c4fe65fb37e4e5abe373de69e3 Mon Sep 17 00:00:00 2001
From: Tino Calancha <tino.calancha@gmail.com>
Date: Mon, 27 Mar 2017 19:04:29 +0900
Subject: [PATCH] default-directory: Remark that it must be a directory name

* src/buffer.c (default-directory): Update docstring.
---
 src/buffer.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/buffer.c b/src/buffer.c
index c1c53dd220..f0c334f08b 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5754,7 +5754,10 @@ visual lines rather than logical lines.  See the documentation of
   DEFVAR_PER_BUFFER ("default-directory", &BVAR (current_buffer, directory),
 		     Qstringp,
 		     doc: /* Name of default directory of current buffer.
-To interactively change the default directory, use command `cd'.  */);
+It must be a directory name, as the output of `file-name-as-directory'.
+To interactively change the default directory, use command `cd'.
+In a Elisp program is better to do
+(setq default-directory (file-name-as-directory DIR)) */);
 
   DEFVAR_PER_BUFFER ("auto-fill-function", &BVAR (current_buffer, auto_fill_function),
 		     Qnil,
-- 
2.11.0

--8<-----------------------------cut here---------------end--------------->8---
In GNU Emacs 25.2.4 (x86_64-pc-linux-gnu, GTK+ Version 3.22.9)
 of 2017-03-27
Repository revision: fb18bff91f01a3051253319e766ca276e5b756bd





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-27 10:13 bug#26272: default-directory: Remark that it must be a directory name Tino Calancha
@ 2017-03-27 14:43 ` Eli Zaretskii
  2017-03-27 15:15   ` Tino Calancha
  2017-03-31  8:25   ` Tino Calancha
  0 siblings, 2 replies; 13+ messages in thread
From: Eli Zaretskii @ 2017-03-27 14:43 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 26272

> From: Tino Calancha <tino.calancha@gmail.com>
> Date: Mon, 27 Mar 2017 19:13:05 +0900
> 
> 
> The docstring of `file-name-as-directory' suggests that is
> important that `default-directory' be a directory name, i.e.,
> for instance in GNU/Linux ends with '/'.  The docstring of
> `default-directory' doesn't mention it.

Didn't we discuss that at some point in the past?

>    DEFVAR_PER_BUFFER ("default-directory", &BVAR (current_buffer, directory),
>  		     Qstringp,
>  		     doc: /* Name of default directory of current buffer.
> -To interactively change the default directory, use command `cd'.  */);
> +It must be a directory name, as the output of `file-name-as-directory'.
> +To interactively change the default directory, use command `cd'.
> +In a Elisp program is better to do
> +(setq default-directory (file-name-as-directory DIR)) */);

A word of advice for the future: it is usually best to start from
informal text that describes well what you mean in your own words, and
then "formalize" it as needed, taking care not to lose key words and
concepts.  If you compare your informal description above with the
patched doc string, I think you will agree with me that the former
says what you mean in a much more clear and concise way.  So something
important got lost in transition, and you tried to make up for that by
adding more explanations and an example.

Here's my suggestion:

  It should be a directory name (as opposed to a directory file-name).
  On GNU and Unix systems, directory names and in a slash `/'.

This basically says what your original description said, which is spot
on.

Thanks.





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-27 14:43 ` Eli Zaretskii
@ 2017-03-27 15:15   ` Tino Calancha
  2017-03-27 15:32     ` Eli Zaretskii
  2017-03-31  8:25   ` Tino Calancha
  1 sibling, 1 reply; 13+ messages in thread
From: Tino Calancha @ 2017-03-27 15:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 26272, tino.calancha

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Tino Calancha <tino.calancha@gmail.com>
>> Date: Mon, 27 Mar 2017 19:13:05 +0900
>> 
>> 
>> The docstring of `file-name-as-directory' suggests that is
>> important that `default-directory' be a directory name, i.e.,
>> for instance in GNU/Linux ends with '/'.  The docstring of
>> `default-directory' doesn't mention it.
>
> Didn't we discuss that at some point in the past?
I don't remember it.  Maybe with another person.

>>    DEFVAR_PER_BUFFER ("default-directory", &BVAR (current_buffer, directory),
>>  		     Qstringp,
>>  		     doc: /* Name of default directory of current buffer.
>> -To interactively change the default directory, use command `cd'.  */);
>> +It must be a directory name, as the output of `file-name-as-directory'.
>> +To interactively change the default directory, use command `cd'.
>> +In a Elisp program is better to do
>> +(setq default-directory (file-name-as-directory DIR)) */);
>
> A word of advice for the future: it is usually best to start from
> informal text that describes well what you mean in your own words, and
> then "formalize" it as needed, taking care not to lose key words and
> concepts.
Thanks for the advice.  It's a useful one.
>If you compare your informal description above with the
> patched doc string, I think you will agree with me that the former
> says what you mean in a much more clear and concise way.
I agree.
> Here's my suggestion:
>
>   It should be a directory name (as opposed to a directory file-name).
>   On GNU and Unix systems, directory names and in a slash `/'.
>
> This basically says what your original description said, which is spot
> on.
Much clear.  Updated the patch with yout suggestion.
I have changed
'and in a slash' with 'end in a slash'.

--8<-----------------------------cut here---------------start------------->8---
From e63611ca54a59d8cff18de5ad1413f9678f3a51c Mon Sep 17 00:00:00 2001
From: Tino Calancha <tino.calancha@gmail.com>
Date: Tue, 28 Mar 2017 00:07:35 +0900
Subject: [PATCH] default-directory: Remark that it must be a directory name

* src/buffer.c (default-directory): Update docstring (Bug#26272).
---
 src/buffer.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/buffer.c b/src/buffer.c
index c1c53dd220..8ef27dee0f 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5754,7 +5754,9 @@ visual lines rather than logical lines.  See the documentation of
   DEFVAR_PER_BUFFER ("default-directory", &BVAR (current_buffer, directory),
 		     Qstringp,
 		     doc: /* Name of default directory of current buffer.
-To interactively change the default directory, use command `cd'.  */);
+It should be a directory name (as opposed to a directory file-name).
+On GNU and Unix systems, directory names end in a slash `/'.
+To interactively change the default directory, use command `cd'. */);
 
   DEFVAR_PER_BUFFER ("auto-fill-function", &BVAR (current_buffer, auto_fill_function),
 		     Qnil,
-- 
2.11.0

--8<-----------------------------cut here---------------end--------------->8---
In GNU Emacs 25.2.5 (x86_64-pc-linux-gnu, GTK+ Version 3.22.9)
 of 2017-03-27
Repository revision: fb18bff91f01a3051253319e766ca276e5b756bd






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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-27 15:15   ` Tino Calancha
@ 2017-03-27 15:32     ` Eli Zaretskii
  2017-03-27 15:52       ` Noam Postavsky
  0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2017-03-27 15:32 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 26272, tino.calancha

> From: Tino Calancha <tino.calancha@gmail.com>
> Cc: 26272@debbugs.gnu.org, tino.calancha@gmail.com
> Date: Tue, 28 Mar 2017 00:15:07 +0900
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> From: Tino Calancha <tino.calancha@gmail.com>
> >> Date: Mon, 27 Mar 2017 19:13:05 +0900
> >> 
> >> 
> >> The docstring of `file-name-as-directory' suggests that is
> >> important that `default-directory' be a directory name, i.e.,
> >> for instance in GNU/Linux ends with '/'.  The docstring of
> >> `default-directory' doesn't mention it.
> >
> > Didn't we discuss that at some point in the past?
> I don't remember it.  Maybe with another person.

No, I meant on emacs-devel, not with you personally.

> I have changed
> 'and in a slash' with 'end in a slash'.

Oops ;-)





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-27 15:32     ` Eli Zaretskii
@ 2017-03-27 15:52       ` Noam Postavsky
  2017-03-27 18:26         ` Eli Zaretskii
  0 siblings, 1 reply; 13+ messages in thread
From: Noam Postavsky @ 2017-03-27 15:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 26272, Tino Calancha

On Mon, Mar 27, 2017 at 11:32 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>> >> The docstring of `file-name-as-directory' suggests that is
>> >> important that `default-directory' be a directory name, i.e.,
>> >> for instance in GNU/Linux ends with '/'.  The docstring of
>> >> `default-directory' doesn't mention it.
>> >
>> > Didn't we discuss that at some point in the past?
>> I don't remember it.  Maybe with another person.
>
> No, I meant on emacs-devel, not with you personally.

This one maybe? (it's about load-path though)
https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg02060.html





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-27 15:52       ` Noam Postavsky
@ 2017-03-27 18:26         ` Eli Zaretskii
  2017-03-27 19:23           ` Noam Postavsky
  0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2017-03-27 18:26 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: 26272, tino.calancha

> From: Noam Postavsky <npostavs@users.sourceforge.net>
> Date: Mon, 27 Mar 2017 11:52:21 -0400
> Cc: Tino Calancha <tino.calancha@gmail.com>, 26272@debbugs.gnu.org
> 
> >> > Didn't we discuss that at some point in the past?
> >> I don't remember it.  Maybe with another person.
> >
> > No, I meant on emacs-devel, not with you personally.
> 
> This one maybe? (it's about load-path though)
> https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg02060.html

Yes, but AFAIR it also touched default-directory.





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-27 18:26         ` Eli Zaretskii
@ 2017-03-27 19:23           ` Noam Postavsky
  2017-03-28  1:54             ` Tino Calancha
  0 siblings, 1 reply; 13+ messages in thread
From: Noam Postavsky @ 2017-03-27 19:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 26272, Tino Calancha

On Mon, Mar 27, 2017 at 2:26 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Noam Postavsky <npostavs@users.sourceforge.net>
>> Date: Mon, 27 Mar 2017 11:52:21 -0400
>> Cc: Tino Calancha <tino.calancha@gmail.com>, 26272@debbugs.gnu.org
>>
>> >> > Didn't we discuss that at some point in the past?
>> >> I don't remember it.  Maybe with another person.
>> >
>> > No, I meant on emacs-devel, not with you personally.
>>
>> This one maybe? (it's about load-path though)
>> https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg02060.html
>
> Yes, but AFAIR it also touched default-directory.

Ah, it seems that code was fixed to be more tolerant: the trailing
slash in default-directory used to matter for executing processes, but
not any more: https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg02367.html

(the rest of the discussion seems to mostly just go in circles)





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-27 19:23           ` Noam Postavsky
@ 2017-03-28  1:54             ` Tino Calancha
  2017-03-28  2:32               ` Eli Zaretskii
  0 siblings, 1 reply; 13+ messages in thread
From: Tino Calancha @ 2017-03-28  1:54 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: 26272, Tino Calancha



On Mon, 27 Mar 2017, Noam Postavsky wrote:

> On Mon, Mar 27, 2017 at 2:26 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>>> From: Noam Postavsky <npostavs@users.sourceforge.net>
>>> Date: Mon, 27 Mar 2017 11:52:21 -0400
>>> Cc: Tino Calancha <tino.calancha@gmail.com>, 26272@debbugs.gnu.org
>>>
>>>>>> Didn't we discuss that at some point in the past?
>>>>> I don't remember it.  Maybe with another person.
>>>>
>>>> No, I meant on emacs-devel, not with you personally.
>>>
>>> This one maybe? (it's about load-path though)
>>> https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg02060.html
>>
>> Yes, but AFAIR it also touched default-directory.
>
> Ah, it seems that code was fixed to be more tolerant: the trailing
> slash in default-directory used to matter for executing processes, but
> not any more: https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg02367.html
Following is not the same but slightly related:
emacs -Q /tmp

I) OK
M-x cd RET /tmp/ RET
M-: (default-directory) RET
=> "/tmp/"

II) OK
M-x cd RET /tmp RET
M-: (default-directory) RET
=> "/tmp/"

III) Wrong
M-x cd RET /tmp// RET
M-: (default-directory) RET
=> "/"

;; Just an issue on interactive calls, as you can see:
M-: (mapcar
      (lambda (x)
        (progn (cd x) default-directory))
      '("/tmp/" "/tmp" "/tmp//")) RET
=> ("/tmp/" "/tmp/" "/tmp/")






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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-28  1:54             ` Tino Calancha
@ 2017-03-28  2:32               ` Eli Zaretskii
  2017-03-28  8:33                 ` Tino Calancha
  0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2017-03-28  2:32 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 26272, npostavs

> From: Tino Calancha <tino.calancha@gmail.com>
> Date: Tue, 28 Mar 2017 10:54:36 +0900 (JST)
> cc: Eli Zaretskii <eliz@gnu.org>, Tino Calancha <tino.calancha@gmail.com>, 
>     26272@debbugs.gnu.org
> 
> III) Wrong
> M-x cd RET /tmp// RET
> M-: (default-directory) RET
> => "/"

Why is this wrong?  It's a standard Emacs feature.





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-28  2:32               ` Eli Zaretskii
@ 2017-03-28  8:33                 ` Tino Calancha
  2017-03-28 10:13                   ` Andreas Schwab
  0 siblings, 1 reply; 13+ messages in thread
From: Tino Calancha @ 2017-03-28  8:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Tino Calancha, 26272, npostavs



On Tue, 28 Mar 2017, Eli Zaretskii wrote:

>> From: Tino Calancha <tino.calancha@gmail.com>
>> Date: Tue, 28 Mar 2017 10:54:36 +0900 (JST)
>> cc: Eli Zaretskii <eliz@gnu.org>, Tino Calancha <tino.calancha@gmail.com>,
>>     26272@debbugs.gnu.org
>>
>> III) Wrong
>> M-x cd RET /tmp// RET
>> M-: (default-directory) RET
>> => "/"
>
> Why is this wrong?  It's a standard Emacs feature.
I don't think is wrong, indeed is consistent with the behaviour
in Bug#21454.
I was just a bit sorprise that the result is different in
interactive calls compared with:
M-: (cd "/tmp//") RET
M-: (default-directory) RET
=> "/tmp/"





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-28  8:33                 ` Tino Calancha
@ 2017-03-28 10:13                   ` Andreas Schwab
  2017-03-28 11:26                     ` Tino Calancha
  0 siblings, 1 reply; 13+ messages in thread
From: Andreas Schwab @ 2017-03-28 10:13 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 26272, npostavs

On Mär 28 2017, Tino Calancha <tino.calancha@gmail.com> wrote:

> On Tue, 28 Mar 2017, Eli Zaretskii wrote:
>
>>> From: Tino Calancha <tino.calancha@gmail.com>
>>> Date: Tue, 28 Mar 2017 10:54:36 +0900 (JST)
>>> cc: Eli Zaretskii <eliz@gnu.org>, Tino Calancha <tino.calancha@gmail.com>,
>>>     26272@debbugs.gnu.org
>>>
>>> III) Wrong
>>> M-x cd RET /tmp// RET
>>> M-: (default-directory) RET
>>> => "/"
>>
>> Why is this wrong?  It's a standard Emacs feature.
> I don't think is wrong, indeed is consistent with the behaviour
> in Bug#21454.
> I was just a bit sorprise that the result is different in
> interactive calls compared with:
> M-: (cd "/tmp//") RET
> M-: (default-directory) RET
> => "/tmp/"

substitute-in-file-name is a feature of reading the argument
interactively, before the argument is passed to the command.

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-28 10:13                   ` Andreas Schwab
@ 2017-03-28 11:26                     ` Tino Calancha
  0 siblings, 0 replies; 13+ messages in thread
From: Tino Calancha @ 2017-03-28 11:26 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Tino Calancha, 26272, npostavs



On Tue, 28 Mar 2017, Andreas Schwab wrote:

>> I don't think is wrong, indeed is consistent with the behaviour
>> in Bug#21454.
>> I was just a bit sorprise that the result is different in
>> interactive calls compared with:
>> M-: (cd "/tmp//") RET
>> M-: (default-directory) RET
>> => "/tmp/"
>
> substitute-in-file-name is a feature of reading the argument
> interactively, before the argument is passed to the command.
>
> Andreas.
I see, then it was my misunderstanding.
Thank you Andreas.





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

* bug#26272: default-directory: Remark that it must be a directory name
  2017-03-27 14:43 ` Eli Zaretskii
  2017-03-27 15:15   ` Tino Calancha
@ 2017-03-31  8:25   ` Tino Calancha
  1 sibling, 0 replies; 13+ messages in thread
From: Tino Calancha @ 2017-03-31  8:25 UTC (permalink / raw)
  To: 26272-done

Eli Zaretskii <eliz@gnu.org> writes:

> Here's my suggestion:
>
>   It should be a directory name (as opposed to a directory file-name).
>   On GNU and Unix systems, directory names and in a slash `/'.
>
> This basically says what your original description said, which is spot
> on.
>
> Thanks.
Thank you.  Pushed fix into Emacs-25 with commit:
84938d79698c1725016e2bc6480d5d73cc769a81





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

end of thread, other threads:[~2017-03-31  8:25 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-27 10:13 bug#26272: default-directory: Remark that it must be a directory name Tino Calancha
2017-03-27 14:43 ` Eli Zaretskii
2017-03-27 15:15   ` Tino Calancha
2017-03-27 15:32     ` Eli Zaretskii
2017-03-27 15:52       ` Noam Postavsky
2017-03-27 18:26         ` Eli Zaretskii
2017-03-27 19:23           ` Noam Postavsky
2017-03-28  1:54             ` Tino Calancha
2017-03-28  2:32               ` Eli Zaretskii
2017-03-28  8:33                 ` Tino Calancha
2017-03-28 10:13                   ` Andreas Schwab
2017-03-28 11:26                     ` Tino Calancha
2017-03-31  8:25   ` Tino Calancha

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).