* PR: dired-do-create-files now checks for trailing slashes in the target @ 2021-09-28 17:50 Rudi C 2021-09-28 18:17 ` Stefan Kangas 0 siblings, 1 reply; 55+ messages in thread From: Rudi C @ 2021-09-28 17:50 UTC (permalink / raw) To: emacs-devel [-- Attachment #1.1: Type: text/plain, Size: 503 bytes --] With this patch, we can move directories into new directories if we explicitly end the new name with a trailing slash. So `/new_name` renames `/old_name` to `/new_name`, while `/new_name/` renames `/old_name` to `/new_name/old_name`. Without this feature, one has to first create the new directory and then move the old directory into it, which is so unpleasant I currently just copy the path and use my shell's move functions. PS: Please use reply-to-all, I am currently not subscribed to the list. [-- Attachment #1.2: Type: text/html, Size: 625 bytes --] [-- Attachment #2: 0001-dired-do-create-files-now-checks-for-trailing-slashe.patch --] [-- Type: application/octet-stream, Size: 992 bytes --] From 002984ab26573ce560a4dd7ec3f9a9aab600abbf Mon Sep 17 00:00:00 2001 From: NightMachinary <rudiwillalwaysloveyou@gmail.com> Date: Tue, 28 Sep 2021 21:14:05 +0330 Subject: [PATCH] dired-do-create-files now checks for trailing slashes in the target --- lisp/dired-aux.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 397c5c67cb..72cee2c485 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -2157,7 +2157,9 @@ Optional arg HOW-TO determines how to treat the target. target-dir op-symbol arg rfn-list default)))) (into-dir (progn - (unless dired-one-file (dired-maybe-create-dirs target)) + (when (or (not dired-one-file) + (string= (substring target -1) "/")) + (dired-maybe-create-dirs target)) (cond ((null how-to) ;; Allow users to change the letter case of ;; a directory on a case-insensitive -- 2.32.0 ^ permalink raw reply related [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 17:50 PR: dired-do-create-files now checks for trailing slashes in the target Rudi C @ 2021-09-28 18:17 ` Stefan Kangas 2021-09-28 18:42 ` Rudi C 2021-09-28 18:42 ` Eli Zaretskii 0 siblings, 2 replies; 55+ messages in thread From: Stefan Kangas @ 2021-09-28 18:17 UTC (permalink / raw) To: Rudi C, emacs-devel Rudi C <rudiwillalwaysloveyou@gmail.com> writes: > With this patch, we can move directories into new directories if we > explicitly end the new name with a trailing slash. > > So `/new_name` renames `/old_name` to `/new_name`, while `/new_name/` > renames `/old_name` to `/new_name/old_name`. Isn't that backwards-incompatible? > Without this feature, one has to first create the new directory and then > move the old directory into it, which is so unpleasant I currently just > copy the path and use my shell's move functions. IIRC, if you use e.g. `ido', you can create a directory from the prompt with M-m. I'm not sure about the default completion, but there are similar features in other completion frameworks. Isn't that a better way to go about this? ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 18:17 ` Stefan Kangas @ 2021-09-28 18:42 ` Rudi C 2021-09-28 19:03 ` Stefan Kangas 2021-09-28 18:42 ` Eli Zaretskii 1 sibling, 1 reply; 55+ messages in thread From: Rudi C @ 2021-09-28 18:42 UTC (permalink / raw) To: Stefan Kangas; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1601 bytes --] > Isn't that backwards-incompatible? This is an interactive function, I think, so backward compatibility is a loose concept here. I can add a configuration variable if you think this matters. > similar features in other completion frameworks I don't know if `ivy` has this, but anyway, I try to keep this kind of hotkeys to a minimum; They are easy to forget, they are not ergonomic, and I have only five fingers from birth, which doesn't help. Why would I want a hotkey when I can perfectly achieve what I need without one, and without losing any functionality? Besides, the point is moot, as dired already exposes `dired-create-destination-dirs', so it is not delegating this feature. So it might as well do it right. On Tue, Sep 28, 2021 at 9:47 PM Stefan Kangas <stefankangas@gmail.com> wrote: > Rudi C <rudiwillalwaysloveyou@gmail.com> writes: > > > With this patch, we can move directories into new directories if we > > explicitly end the new name with a trailing slash. > > > > So `/new_name` renames `/old_name` to `/new_name`, while `/new_name/` > > renames `/old_name` to `/new_name/old_name`. > > Isn't that backwards-incompatible? > > > Without this feature, one has to first create the new directory and then > > move the old directory into it, which is so unpleasant I currently just > > copy the path and use my shell's move functions. > > IIRC, if you use e.g. `ido', you can create a directory from the prompt > with M-m. I'm not sure about the default completion, but there are > similar features in other completion frameworks. Isn't that a better > way to go about this? > [-- Attachment #2: Type: text/html, Size: 2169 bytes --] ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 18:42 ` Rudi C @ 2021-09-28 19:03 ` Stefan Kangas 2021-09-28 19:38 ` Tassilo Horn 2021-09-28 20:23 ` Rudi C 0 siblings, 2 replies; 55+ messages in thread From: Stefan Kangas @ 2021-09-28 19:03 UTC (permalink / raw) To: Rudi C; +Cc: emacs-devel Rudi C <rudiwillalwaysloveyou@gmail.com> writes: >> Isn't that backwards-incompatible? > > This is an interactive function, I think, so backward compatibility is a > loose concept here. I can add a configuration variable if you think this > matters. I don't have an opinion on that yet. >> similar features in other completion frameworks > I don't know if `ivy` has this, but anyway, I try to keep this kind of > hotkeys to a minimum; They are easy to forget, they are not ergonomic, and > I have only five fingers from birth, which doesn't help. Why would I want a > hotkey when I can perfectly achieve what I need without one, and without > losing any functionality? It feels surprising that if I rename something to "/foo/" my file suddenly gets moved into a new directory "foo", though. Maybe it's just me. Does this have some precedent elsewhere? Is this something users would expect? ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 19:03 ` Stefan Kangas @ 2021-09-28 19:38 ` Tassilo Horn 2021-09-28 20:07 ` Stefan Kangas 2021-09-28 20:23 ` Rudi C 1 sibling, 1 reply; 55+ messages in thread From: Tassilo Horn @ 2021-09-28 19:38 UTC (permalink / raw) To: emacs-devel Stefan Kangas <stefankangas@gmail.com> writes: > It feels surprising that if I rename something to "/foo/" my file > suddenly gets moved into a new directory "foo", though. Maybe it's > just me. Does this have some precedent elsewhere? Is this something > users would expect? Consider that this only triggers if "foo" doesn't exist yet. In such a case, filename completion won't suggest anything, especially no trailing /. So it doesn't feel very likely that someone wants to rename a file or directory ~/bar to "foo" and then specifies ~/foo/ (with trailing slash) as the target by accident. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 19:38 ` Tassilo Horn @ 2021-09-28 20:07 ` Stefan Kangas 0 siblings, 0 replies; 55+ messages in thread From: Stefan Kangas @ 2021-09-28 20:07 UTC (permalink / raw) To: Tassilo Horn, emacs-devel Tassilo Horn <tsdh@gnu.org> writes: > Consider that this only triggers if "foo" doesn't exist yet. In such a > case, filename completion won't suggest anything, especially no trailing > /. So it doesn't feel very likely that someone wants to rename a file > or directory ~/bar to "foo" and then specifies ~/foo/ (with trailing > slash) as the target by accident. That's true. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 19:03 ` Stefan Kangas 2021-09-28 19:38 ` Tassilo Horn @ 2021-09-28 20:23 ` Rudi C 1 sibling, 0 replies; 55+ messages in thread From: Rudi C @ 2021-09-28 20:23 UTC (permalink / raw) To: Stefan Kangas, Eli Zaretskii, tsdh; +Cc: emacs-devel [-- Attachment #1.1: Type: text/plain, Size: 2387 bytes --] > we have functions for distinguishing between a file's name as directory and the directory's file name. Ah, you're right. I have attached a new patch that uses `directory-name-p`. > Does this have some precedent elsewhere? The most famous example is rsync, I guess. Doom's `doom/move-this-file' also does this. (Well, I contributed the directory creation patch to `doom/move-this-file', so make of that what you will.) Also note that `dired-create-destination-dirs' is by default `nil', which means this patch is irrelevant if someone uses the default settings. `dired-create-destination-dirs' being `'ask' will also ask you to confirm creating a new directory. If only you put it to `'always' will it do this "surprising" thing. You also won't lose any data by this surprise, unlike the current behavior that loses the old name of the directory. I am copying tsdh@gnu.org's response here, as I think it might not have gotten to the mailing list. > a reproducible recipe that demonstrates the problem. It solves the problem of moving/copying a file or directory into a not-yet-existing directory. So with the above example, you can do R /new_name/ RET So the behavior will now differ depending on whether new_name already exists or not? because if the user types R /new_ TAB Emacs will complete it to "/new_name/", including the trailing slash. On Tue, Sep 28, 2021 at 10:33 PM Stefan Kangas <stefankangas@gmail.com> wrote: > Rudi C <rudiwillalwaysloveyou@gmail.com> writes: > > >> Isn't that backwards-incompatible? > > > > This is an interactive function, I think, so backward compatibility is a > > loose concept here. I can add a configuration variable if you think this > > matters. > > I don't have an opinion on that yet. > > >> similar features in other completion frameworks > > I don't know if `ivy` has this, but anyway, I try to keep this kind of > > hotkeys to a minimum; They are easy to forget, they are not ergonomic, > and > > I have only five fingers from birth, which doesn't help. Why would I > want a > > hotkey when I can perfectly achieve what I need without one, and without > > losing any functionality? > > It feels surprising that if I rename something to "/foo/" my file > suddenly gets moved into a new directory "foo", though. Maybe it's just > me. Does this have some precedent elsewhere? Is this something users > would expect? > [-- Attachment #1.2: Type: text/html, Size: 3322 bytes --] [-- Attachment #2: 0001-dired-do-create-files-now-checks-for-trailing-slashe.patch --] [-- Type: application/octet-stream, Size: 982 bytes --] From 951e12f352b783b15edbabb4623a5c721425bd25 Mon Sep 17 00:00:00 2001 From: NightMachinary <rudiwillalwaysloveyou@gmail.com> Date: Tue, 28 Sep 2021 21:14:05 +0330 Subject: [PATCH] dired-do-create-files now checks for trailing slashes in the target --- lisp/dired-aux.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 397c5c67cb..fcaa8dd008 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -2157,7 +2157,9 @@ Optional arg HOW-TO determines how to treat the target. target-dir op-symbol arg rfn-list default)))) (into-dir (progn - (unless dired-one-file (dired-maybe-create-dirs target)) + (when (or (not dired-one-file) + (directory-name-p target)) + (dired-maybe-create-dirs target)) (cond ((null how-to) ;; Allow users to change the letter case of ;; a directory on a case-insensitive -- 2.32.0 ^ permalink raw reply related [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 18:17 ` Stefan Kangas 2021-09-28 18:42 ` Rudi C @ 2021-09-28 18:42 ` Eli Zaretskii 2021-09-28 19:29 ` Tassilo Horn 1 sibling, 1 reply; 55+ messages in thread From: Eli Zaretskii @ 2021-09-28 18:42 UTC (permalink / raw) To: Stefan Kangas; +Cc: rudiwillalwaysloveyou, emacs-devel > From: Stefan Kangas <stefankangas@gmail.com> > Date: Tue, 28 Sep 2021 11:17:32 -0700 > > Rudi C <rudiwillalwaysloveyou@gmail.com> writes: > > > With this patch, we can move directories into new directories if we > > explicitly end the new name with a trailing slash. > > > > So `/new_name` renames `/old_name` to `/new_name`, while `/new_name/` > > renames `/old_name` to `/new_name/old_name`. > > Isn't that backwards-incompatible? It may or may not be, but I'd suggest first to have a reproducible recipe that demonstrates the problem. Because I don't think I understand what this is trying to solve. In any case, testing the last character for a literal slash is not TRT; we have functions for distinguishing between a file's name as directory and the directory's file name. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 18:42 ` Eli Zaretskii @ 2021-09-28 19:29 ` Tassilo Horn 2021-09-28 19:55 ` Eli Zaretskii 0 siblings, 1 reply; 55+ messages in thread From: Tassilo Horn @ 2021-09-28 19:29 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rudiwillalwaysloveyou, Stefan Kangas, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> > With this patch, we can move directories into new directories if we >> > explicitly end the new name with a trailing slash. >> > >> > So `/new_name` renames `/old_name` to `/new_name`, while `/new_name/` >> > renames `/old_name` to `/new_name/old_name`. >> >> Isn't that backwards-incompatible? > > It may or may not be, but I'd suggest first to have a reproducible > recipe that demonstrates the problem. Because I don't think I > understand what this is trying to solve. It solves the problem of moving/copying a file or directory into a not-yet-existing directory. So with the above example, you can do R /new_name/ RET if point is on /old_name or /old_name is marked to move /old_name into /new_name/. Right now, you need to do + /new_name RET ;; create the new directory R /new_name RET ;; then move /old_name FWIW, I would find it very convenient if dired would create the target directory if I indicate it as directory by specifying a trailing /. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 19:29 ` Tassilo Horn @ 2021-09-28 19:55 ` Eli Zaretskii 2021-09-29 4:46 ` Tassilo Horn 0 siblings, 1 reply; 55+ messages in thread From: Eli Zaretskii @ 2021-09-28 19:55 UTC (permalink / raw) To: Tassilo Horn; +Cc: rudiwillalwaysloveyou, stefankangas, emacs-devel > From: Tassilo Horn <tsdh@gnu.org> > Cc: Stefan Kangas <stefankangas@gmail.com>, rudiwillalwaysloveyou@gmail.com, > emacs-devel@gnu.org > Date: Tue, 28 Sep 2021 21:29:04 +0200 > > > It may or may not be, but I'd suggest first to have a reproducible > > recipe that demonstrates the problem. Because I don't think I > > understand what this is trying to solve. > > It solves the problem of moving/copying a file or directory into a > not-yet-existing directory. So with the above example, you can do > > R /new_name/ RET So the behavior will now differ depending on whether new_name already exists or not? because if the user types R /new_ TAB Emacs will complete it to "/new_name/", including the trailing slash. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-28 19:55 ` Eli Zaretskii @ 2021-09-29 4:46 ` Tassilo Horn 2021-09-29 13:09 ` Eli Zaretskii 0 siblings, 1 reply; 55+ messages in thread From: Tassilo Horn @ 2021-09-29 4:46 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rudiwillalwaysloveyou, stefankangas, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: Hi Eli, >> It solves the problem of moving/copying a file or directory into a >> not-yet-existing directory. So with the above example, you can do >> >> R /new_name/ RET > > So the behavior will now differ depending on whether new_name already > exists or not? Right. And also `dired-create-destination-dirs' has to be non-nil for the new behavior which conforms to its documentation. I have that set to 'ask, and when I apply Rudi's patch and do the recipe, it'll ask if a new directory new_name/ should be created. > because if the user types > > R /new_ TAB > > Emacs will complete it to "/new_name/", including the trailing slash. But only if it exists, and then the patch makes no difference in behavior. You explicitly need to type non_existing_dir/ with trailing slash for the new behavior which will surely never be completed because of its non-existence. FWIW, I've applied the patch locally and like it very much. Of course, if we agree on including it, it will need to be documented somewhere. I'm not sure where the best place is. It's concerned with possibly creating a new target directory which happens not only with our renaming/moving example but also with copying, symlinking, etc. Maybe a good spot would be the docstring/texinfo docs for `dired-create-destination-dirs'. It basically needs another sentence that when specifying a target of a dired operation, one can add a trailing / to inform dired that the target is a directory which should be created if non-existent. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 4:46 ` Tassilo Horn @ 2021-09-29 13:09 ` Eli Zaretskii 2021-09-29 13:20 ` Rudi C 2021-09-29 13:23 ` Tassilo Horn 0 siblings, 2 replies; 55+ messages in thread From: Eli Zaretskii @ 2021-09-29 13:09 UTC (permalink / raw) To: Tassilo Horn; +Cc: rudiwillalwaysloveyou, stefankangas, emacs-devel > From: Tassilo Horn <tsdh@gnu.org> > Cc: rudiwillalwaysloveyou@gmail.com, stefankangas@gmail.com, > emacs-devel@gnu.org > Date: Wed, 29 Sep 2021 06:46:04 +0200 > > > So the behavior will now differ depending on whether new_name already > > exists or not? > > Right. And also `dired-create-destination-dirs' has to be non-nil for > the new behavior which conforms to its documentation. I have that set > to 'ask, and when I apply Rudi's patch and do the recipe, it'll ask if a > new directory new_name/ should be created. > > > because if the user types > > > > R /new_ TAB > > > > Emacs will complete it to "/new_name/", including the trailing slash. > > But only if it exists, and then the patch makes no difference in > behavior. Isn't that exactly the problem? If both old_name and new_name exist, how do I rename old_name into new_name so that it overwrites new_name instead of becoming its subdirectory? I must carefully type new_name RET so as to avoid having a slash at its end. I would support such a change only if it had an explicit defcustom to control it. (It could be a new value of dired-create-destination-dirs, if that makes sense.) ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:09 ` Eli Zaretskii @ 2021-09-29 13:20 ` Rudi C 2021-09-29 13:34 ` Eli Zaretskii ` (2 more replies) 2021-09-29 13:23 ` Tassilo Horn 1 sibling, 3 replies; 55+ messages in thread From: Rudi C @ 2021-09-29 13:20 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel, stefankangas, Tassilo Horn [-- Attachment #1: Type: text/plain, Size: 1731 bytes --] > how do I rename old_name into new_name so that it overwrites new_name Overwriting a directory is a highly destructive activity. It would be better to make the user explicitly delete the old directory, and then do the rename IMO. But we can add a new custom variable. I am all for giving everyone options. I don't think it can integrate with `dired-create-destination-dirs' though; `dired-create-destination-dirs-trailing-slash-special'? On Wed, Sep 29, 2021 at 4:39 PM Eli Zaretskii <eliz@gnu.org> wrote: > > From: Tassilo Horn <tsdh@gnu.org> > > Cc: rudiwillalwaysloveyou@gmail.com, stefankangas@gmail.com, > > emacs-devel@gnu.org > > Date: Wed, 29 Sep 2021 06:46:04 +0200 > > > > > So the behavior will now differ depending on whether new_name already > > > exists or not? > > > > Right. And also `dired-create-destination-dirs' has to be non-nil for > > the new behavior which conforms to its documentation. I have that set > > to 'ask, and when I apply Rudi's patch and do the recipe, it'll ask if a > > new directory new_name/ should be created. > > > > > because if the user types > > > > > > R /new_ TAB > > > > > > Emacs will complete it to "/new_name/", including the trailing slash. > > > > But only if it exists, and then the patch makes no difference in > > behavior. > > Isn't that exactly the problem? If both old_name and new_name exist, > how do I rename old_name into new_name so that it overwrites new_name > instead of becoming its subdirectory? I must carefully type new_name > RET so as to avoid having a slash at its end. > > I would support such a change only if it had an explicit defcustom to > control it. (It could be a new value of > dired-create-destination-dirs, if that makes sense.) > [-- Attachment #2: Type: text/html, Size: 2524 bytes --] ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:20 ` Rudi C @ 2021-09-29 13:34 ` Eli Zaretskii 2021-09-29 13:37 ` Tassilo Horn 2021-09-29 13:42 ` Stefan Kangas 2 siblings, 0 replies; 55+ messages in thread From: Eli Zaretskii @ 2021-09-29 13:34 UTC (permalink / raw) To: Rudi C; +Cc: emacs-devel, stefankangas, tsdh > From: Rudi C <rudiwillalwaysloveyou@gmail.com> > Date: Wed, 29 Sep 2021 16:50:50 +0330 > Cc: Tassilo Horn <tsdh@gnu.org>, stefankangas@gmail.com, emacs-devel@gnu.org > > > how do I rename old_name into new_name so that it overwrites new_name > > Overwriting a directory is a highly destructive activity. True, but it isn't invalid or nonsensical. And it was possible before the change, right? > But we can add a new custom variable. I am all for giving everyone options. I don't think it can integrate with > `dired-create-destination-dirs' though; `dired-create-destination-dirs-trailing-slash-special'? I leave this to you guys. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:20 ` Rudi C 2021-09-29 13:34 ` Eli Zaretskii @ 2021-09-29 13:37 ` Tassilo Horn 2021-09-29 13:42 ` Stefan Kangas 2 siblings, 0 replies; 55+ messages in thread From: Tassilo Horn @ 2021-09-29 13:37 UTC (permalink / raw) To: Rudi C; +Cc: Eli Zaretskii, stefankangas, emacs-devel Rudi C <rudiwillalwaysloveyou@gmail.com> writes: >> how do I rename old_name into new_name so that it overwrites new_name > > Overwriting a directory is a highly destructive activity. It would be > better to make the user explicitly delete the old directory, and then > do the rename IMO. I would agree. And while it could made work for the target being an empty directory, hopefully nobody will assume this to be a sensible operation if the target is a non-empty directory. > But we can add a new custom variable. I am all for giving everyone > options. I don't think it can integrate with > `dired-create-destination-dirs' though; > `dired-create-destination-dirs-trailing-slash-special'? Have a look at my reply to Eli. AFAICS, dired doesn't overwrite a directory even without your patch when you rename a directory foo to bar which already exists. It also moves foo into bar. So from my POV, no new defcustom is needed. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:20 ` Rudi C 2021-09-29 13:34 ` Eli Zaretskii 2021-09-29 13:37 ` Tassilo Horn @ 2021-09-29 13:42 ` Stefan Kangas 2021-09-29 13:53 ` Tassilo Horn 2 siblings, 1 reply; 55+ messages in thread From: Stefan Kangas @ 2021-09-29 13:42 UTC (permalink / raw) To: Rudi C, Eli Zaretskii; +Cc: emacs-devel, Tassilo Horn Rudi C <rudiwillalwaysloveyou@gmail.com> writes: > But we can add a new custom variable. I am all for giving everyone options. > I don't think it can integrate with `dired-create-destination-dirs' though; > `dired-create-destination-dirs-trailing-slash-special'? I have been convinced that this feature is generally useful, just as it is useful in rsync (as Tassilo reminded us). I also don't see any situation where this could lead to a problem, as you will never complete to "foo/" unless that directory already exists: 1. If there is a file "foo", you complete to "foo" and presumably you just get an error if you type a "/" to get "foo/" and then RET. 2. If there is a directory "foo", you complete to "foo/" and you get the current behavior which is to move the file into that already existing directory. BTW, in rsync I can't do "foo/bar/". Does it make sense to support that, perhaps optionally? Much like "mkdir -p". ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:42 ` Stefan Kangas @ 2021-09-29 13:53 ` Tassilo Horn 2021-09-29 14:31 ` Rudi C 0 siblings, 1 reply; 55+ messages in thread From: Tassilo Horn @ 2021-09-29 13:53 UTC (permalink / raw) To: Stefan Kangas; +Cc: Rudi C, Eli Zaretskii, emacs-devel Hi Stefan, > BTW, in rsync I can't do "foo/bar/". Does it make sense to support > that, perhaps optionally? Much like "mkdir -p". That does already work with Rudi's patch and dired-create-destination-dirs set to a non-nil value. ;-) Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:53 ` Tassilo Horn @ 2021-09-29 14:31 ` Rudi C 0 siblings, 0 replies; 55+ messages in thread From: Rudi C @ 2021-09-29 14:31 UTC (permalink / raw) To: Tassilo Horn; +Cc: Eli Zaretskii, Stefan Kangas, emacs-devel [-- Attachment #1.1: Type: text/plain, Size: 1311 bytes --] Everything Tassilo said seems correct to me, too. > slash is ephemeral and users may not be aware Even if they are not aware, they won't lose anything, do they? They will also probably pick it up easily enough (I learned this after I observed "inconsistent" behavior in rsync.). I have attached a new patch that adds a custom option. While I do like having the option, IMO it should be on by default. > Is there some other way we could get this > without relying on the difference between foo and foo/? A separate > command, perhaps? Or some extra prompting? I think we can add an `'ask' choice to this custom variable I introduced in this patch, but that really seems like overkill to me; You can just set `dired-create-destination-dirs' to `'ask', and if you refuse to create the new directory, you will still have your previous behavior: `old_name` -> `new_name/` -> user refuses dired' prompt to create a new directory -> fired moves `old_name` -> `new_name` On Wed, Sep 29, 2021 at 5:24 PM Tassilo Horn <tsdh@gnu.org> wrote: > Hi Stefan, > > > BTW, in rsync I can't do "foo/bar/". Does it make sense to support > > that, perhaps optionally? Much like "mkdir -p". > > That does already work with Rudi's patch and > dired-create-destination-dirs set to a non-nil value. ;-) > > Bye, > Tassilo > [-- Attachment #1.2: Type: text/html, Size: 1923 bytes --] [-- Attachment #2: 0002-Added-option-dired-create-destination-dirs-trailing-.patch --] [-- Type: application/octet-stream, Size: 2312 bytes --] From 7a680d06e4b6ecf9e88e1c309f214d4e1a7f8700 Mon Sep 17 00:00:00 2001 From: NightMachinary <rudiwillalwaysloveyou@gmail.com> Date: Wed, 29 Sep 2021 17:54:29 +0330 Subject: [PATCH 2/2] Added option dired-create-destination-dirs-trailing-separator-special --- lisp/dired-aux.el | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index fcaa8dd008..ee727ec5cc 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1789,6 +1789,17 @@ If `ask', ask for user confirmation." :group 'dired :version "27.1") +(defcustom dired-create-destination-dirs-trailing-separator-special nil + "If t, when selecting a single destination in Dired, paths that end in a path separator will be treated as a non-existent directory, and acted on according to `dired-create-destination-dirs'. + +This option is only relevant if `dired-create-destination-dirs' is not `nil', and you are moving/copying a single directory. + +For example, when renaming a directory named `old_name' to `new_name/' (note the trailing path separator), `new_name' might be created depending on `dired-create-destination-dirs' and `old_name' will be moved into it if it is created; Otherwise `old_name' will be directly renamed to `new_name'." + :type '(choice (const :tag "Do not treat paths with a trailing path separator specially" nil) + (const :tag "Treat paths with a trailing path separator specially" t)) + :group 'dired + :version "28.1") + (defun dired-maybe-create-dirs (dir) "Create DIR if doesn't exist according to `dired-create-destination-dirs'." (when (and dired-create-destination-dirs (not (file-exists-p dir))) @@ -2157,8 +2168,11 @@ Optional arg HOW-TO determines how to treat the target. target-dir op-symbol arg rfn-list default)))) (into-dir (progn - (when (or (not dired-one-file) - (directory-name-p target)) + (when + (or + (not dired-one-file) + (and dired-create-destination-dirs-trailing-separator-special + (directory-name-p target))) (dired-maybe-create-dirs target)) (cond ((null how-to) ;; Allow users to change the letter case of -- 2.32.0 [-- Attachment #3: 0001-dired-do-create-files-now-checks-for-trailing-slashe.patch --] [-- Type: application/octet-stream, Size: 986 bytes --] From 951e12f352b783b15edbabb4623a5c721425bd25 Mon Sep 17 00:00:00 2001 From: NightMachinary <rudiwillalwaysloveyou@gmail.com> Date: Tue, 28 Sep 2021 21:14:05 +0330 Subject: [PATCH 1/2] dired-do-create-files now checks for trailing slashes in the target --- lisp/dired-aux.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 397c5c67cb..fcaa8dd008 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -2157,7 +2157,9 @@ Optional arg HOW-TO determines how to treat the target. target-dir op-symbol arg rfn-list default)))) (into-dir (progn - (unless dired-one-file (dired-maybe-create-dirs target)) + (when (or (not dired-one-file) + (directory-name-p target)) + (dired-maybe-create-dirs target)) (cond ((null how-to) ;; Allow users to change the letter case of ;; a directory on a case-insensitive -- 2.32.0 ^ permalink raw reply related [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:09 ` Eli Zaretskii 2021-09-29 13:20 ` Rudi C @ 2021-09-29 13:23 ` Tassilo Horn 2021-09-29 13:41 ` Eli Zaretskii 2021-09-29 13:57 ` Stefan Kangas 1 sibling, 2 replies; 55+ messages in thread From: Tassilo Horn @ 2021-09-29 13:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rudiwillalwaysloveyou, stefankangas, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: Hi Eli, >> > because if the user types >> > >> > R /new_ TAB >> > >> > Emacs will complete it to "/new_name/", including the trailing slash. >> >> But only if it exists, and then the patch makes no difference in >> behavior. > > Isn't that exactly the problem? If both old_name and new_name exist, > how do I rename old_name into new_name so that it overwrites new_name > instead of becoming its subdirectory? I must carefully type new_name > RET so as to avoid having a slash at its end. That's already the case without this patch and emacs 27.2 started with "emacs -Q". I have both foo and bar directories in my dired buffer, then hit R on foo and complete bar/. It will move foo inside of bar. The very same happens if I just complete to bar without trailing /. IMHO, that makes sense because you usually don't want to rename a directory so that it gets a name which already exists. And its also consistent with "mv" from GNU coreutils 9.0 where "mv foo bar" also moves foo into bar if both exist and at least bar is a directory. That makes the proposed patch a very natural extension of what we already have, i.e., it just ensures `dired-create-destination-dirs' is obeyed. > I would support such a change only if it had an explicit defcustom to > control it. (It could be a new value of > dired-create-destination-dirs, if that makes sense.) I disagree based on above observations. Is the behavior different on Windows? Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:23 ` Tassilo Horn @ 2021-09-29 13:41 ` Eli Zaretskii 2021-09-29 13:42 ` Tassilo Horn 2021-09-29 13:57 ` Stefan Kangas 1 sibling, 1 reply; 55+ messages in thread From: Eli Zaretskii @ 2021-09-29 13:41 UTC (permalink / raw) To: Tassilo Horn; +Cc: rudiwillalwaysloveyou, stefankangas, emacs-devel > From: Tassilo Horn <tsdh@gnu.org> > Cc: rudiwillalwaysloveyou@gmail.com, stefankangas@gmail.com, > emacs-devel@gnu.org > Date: Wed, 29 Sep 2021 15:23:39 +0200 > > > Isn't that exactly the problem? If both old_name and new_name exist, > > how do I rename old_name into new_name so that it overwrites new_name > > instead of becoming its subdirectory? I must carefully type new_name > > RET so as to avoid having a slash at its end. > > That's already the case without this patch and emacs 27.2 started with > "emacs -Q". I have both foo and bar directories in my dired buffer, > then hit R on foo and complete bar/. It will move foo inside of bar. > The very same happens if I just complete to bar without trailing /. And with the proposed change, the last sentence will no longer happen, right? That's the change in behavior I was talking about. Or am I missing something? ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:41 ` Eli Zaretskii @ 2021-09-29 13:42 ` Tassilo Horn 2021-09-29 13:57 ` Eli Zaretskii 2021-09-29 17:01 ` [External] : " Drew Adams 0 siblings, 2 replies; 55+ messages in thread From: Tassilo Horn @ 2021-09-29 13:42 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rudiwillalwaysloveyou, stefankangas, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> That's already the case without this patch and emacs 27.2 started >> with "emacs -Q". I have both foo and bar directories in my dired >> buffer, then hit R on foo and complete bar/. It will move foo inside >> of bar. The very same happens if I just complete to bar without >> trailing /. > > And with the proposed change, the last sentence will no longer happen, > right? That's the change in behavior I was talking about. It still happens the very same way. The only thing this patch is concerned with is that if bar (specified as bar/) does not exist yet, it will be created as directory before doing the operation (i.e., the rename or copy). So basically we have those Rename/Copy semantics: file -> 2.txt (renames plain file no matter if 2.txt already exists) file -> foo (move into foo if that's an existing dir, otherwise rename) file -> foo/ (move into directory foo, creating if not existing and dired-create-destination-dirs is non-nil) The first 2 are unchanged, the third one is the new one. > Or am I missing something? The above. :-) And Rudi, please correct me if I'm wrong. But I think I've tested quite thoroughly. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:42 ` Tassilo Horn @ 2021-09-29 13:57 ` Eli Zaretskii 2021-09-29 14:21 ` Lars Ingebrigtsen 2021-09-29 17:01 ` [External] : " Drew Adams 1 sibling, 1 reply; 55+ messages in thread From: Eli Zaretskii @ 2021-09-29 13:57 UTC (permalink / raw) To: Tassilo Horn; +Cc: rudiwillalwaysloveyou, stefankangas, emacs-devel > From: Tassilo Horn <tsdh@gnu.org> > Cc: rudiwillalwaysloveyou@gmail.com, stefankangas@gmail.com, > emacs-devel@gnu.org > Date: Wed, 29 Sep 2021 15:42:50 +0200 > > So basically we have those Rename/Copy semantics: > > file -> 2.txt (renames plain file no matter if 2.txt already exists) > file -> foo (move into foo if that's an existing dir, otherwise rename) > file -> foo/ (move into directory foo, creating if not existing > and dired-create-destination-dirs is non-nil) > > The first 2 are unchanged, the third one is the new one. I'm against unconditionally changing the behavior based on the obscure fact of whether the directory name ends in a slash or doesn't. That slash is ephemeral and users may not be aware to its importance, since the semantics of foo/ and foo is the same more or less. So if you want me to agree to the change, please make this behavior optional. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:57 ` Eli Zaretskii @ 2021-09-29 14:21 ` Lars Ingebrigtsen 2021-09-29 15:04 ` Stefan Kangas 2021-09-29 15:44 ` Eli Zaretskii 0 siblings, 2 replies; 55+ messages in thread From: Lars Ingebrigtsen @ 2021-09-29 14:21 UTC (permalink / raw) To: Eli Zaretskii Cc: rudiwillalwaysloveyou, emacs-devel, stefankangas, Tassilo Horn Eli Zaretskii <eliz@gnu.org> writes: > I'm against unconditionally changing the behavior based on the obscure > fact of whether the directory name ends in a slash or doesn't. That > slash is ephemeral and users may not be aware to its importance, since > the semantics of foo/ and foo is the same more or less. Yes, we're extremely sloppy (in a good way) when handling foo/ and foo, so it might be surprising behaviour to make this one command assign different semantics to the two forms. But it's nice functionality. Is there some other way we could get this without relying on the difference between foo and foo/? A separate command, perhaps? Or some extra prompting? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 14:21 ` Lars Ingebrigtsen @ 2021-09-29 15:04 ` Stefan Kangas 2021-09-29 15:17 ` Tassilo Horn 2021-09-29 15:44 ` Eli Zaretskii 1 sibling, 1 reply; 55+ messages in thread From: Stefan Kangas @ 2021-09-29 15:04 UTC (permalink / raw) To: Lars Ingebrigtsen, Eli Zaretskii Cc: rudiwillalwaysloveyou, emacs-devel, Tassilo Horn Lars Ingebrigtsen <larsi@gnus.org> writes: > But it's nice functionality. Is there some other way we could get this > without relying on the difference between foo and foo/? A separate > command, perhaps? Or some extra prompting? How about a prompt by default (e.g. "Do you want to create directory `foo' and move the file into it?"), with a user option to disable it for those that want it? The option values could be t for "do it, no prompt", nil for "turn this feature off", and 'prompt for the default "enable but prompt first". ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 15:04 ` Stefan Kangas @ 2021-09-29 15:17 ` Tassilo Horn 2021-09-30 6:06 ` Lars Ingebrigtsen 0 siblings, 1 reply; 55+ messages in thread From: Tassilo Horn @ 2021-09-29 15:17 UTC (permalink / raw) To: Stefan Kangas Cc: Lars Ingebrigtsen, emacs-devel, Eli Zaretskii, rudiwillalwaysloveyou Stefan Kangas <stefankangas@gmail.com> writes: >> But it's nice functionality. Is there some other way we could get >> this without relying on the difference between foo and foo/? A >> separate command, perhaps? Or some extra prompting? Lars, note that we are not talking about a specific command like `dired-do-rename'. The change is to `dired-do-create-files' which is a workhorse for many dired commands that need some target directory or file, e.g., renaming/moving, copying, symlinking, etc. > How about a prompt by default (e.g. "Do you want to create directory > `foo' and move the file into it?"), with a user option to disable it > for those that want it? There already is `dired-create-destination-dirs'. Only if that is non-nil, Rudi's patch has an effect. And if it is 'ask, you'll be prompted if foo/ should be created already. Of course, it won't explain the "move the marked/current file(s) into it" part. (Note that while we are talking about just a single source file, it could be many.) We could also let-bind `dired-create-destination-dirs' around the one specific place Rudi touched so that it gets a special value 'ask-because-of-trailing-slash-in-target if it's non-nil already which would allow `dired-maybe-create-dirs' to issue a more explanatory message. But then again, this could also happen with copying or symlinking, so that message couldn't really say "move into" without moving more context into down to `dired-maybe-create-dirs' so that it can distinguish "move into" from "create a new symlink into" or what else. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 15:17 ` Tassilo Horn @ 2021-09-30 6:06 ` Lars Ingebrigtsen 2021-09-30 7:29 ` Lars Ingebrigtsen ` (2 more replies) 0 siblings, 3 replies; 55+ messages in thread From: Lars Ingebrigtsen @ 2021-09-30 6:06 UTC (permalink / raw) To: Tassilo Horn Cc: Eli Zaretskii, rudiwillalwaysloveyou, Stefan Kangas, emacs-devel Tassilo Horn <tsdh@gnu.org> writes: > Lars, note that we are not talking about a specific command like > `dired-do-rename'. The change is to `dired-do-create-files' which is a > workhorse for many dired commands that need some target directory or > file, e.g., renaming/moving, copying, symlinking, etc. Right. Then it's more invasive than I thought... Re-skimming this thread, the suggestion is that if the destination directory ends with a slash, then that directory is created, and the contents of the source is copied (etc) over to it? Isn't that just about the opposite of the syntax in rsync? That is, "rsync foo/ bar" will copy the files in foo over to bad, while "rsync foo bar" will copy the directory itself into bar. (Whether you have a slash or not at the end of the destination directory doesn't make a difference.) So rsync has put semantics on a trailing slash on the source dir, while the proposal here is to add semantics in Dired to the trailing slash of the destination dir? I guess I'm concerned that the semantics here are too subtle (even if we add a user option to switch between behaviours). -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 6:06 ` Lars Ingebrigtsen @ 2021-09-30 7:29 ` Lars Ingebrigtsen 2021-09-30 8:32 ` Tassilo Horn 2021-09-30 13:54 ` Stefan Kangas 2 siblings, 0 replies; 55+ messages in thread From: Lars Ingebrigtsen @ 2021-09-30 7:29 UTC (permalink / raw) To: Tassilo Horn Cc: Eli Zaretskii, emacs-devel, rudiwillalwaysloveyou, Stefan Kangas Lars Ingebrigtsen <larsi@gnus.org> writes: > I guess I'm concerned that the semantics here are too subtle (even if > we add a user option to switch between behaviours). On the other hand, perhaps it does make sense. There's some precedence for this behaviour in Emacs -- `C-x C-w /tmp' will query you if you wish to overwrite /tmp, while `C-x C-w /tmp/' will write to a file in /tmp/ (with the same name as the buffer name), and that seems to work without confusing people. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 6:06 ` Lars Ingebrigtsen 2021-09-30 7:29 ` Lars Ingebrigtsen @ 2021-09-30 8:32 ` Tassilo Horn 2021-09-30 13:33 ` Lars Ingebrigtsen 2021-09-30 15:45 ` [External] : " Drew Adams 2021-09-30 13:54 ` Stefan Kangas 2 siblings, 2 replies; 55+ messages in thread From: Tassilo Horn @ 2021-09-30 8:32 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Eli Zaretskii, emacs-devel, rudiwillalwaysloveyou, Stefan Kangas Lars Ingebrigtsen <larsi@gnus.org> writes: Hi Lars, >> Lars, note that we are not talking about a specific command like >> `dired-do-rename'. The change is to `dired-do-create-files' which is a >> workhorse for many dired commands that need some target directory or >> file, e.g., renaming/moving, copying, symlinking, etc. > > Right. Then it's more invasive than I thought... > > Re-skimming this thread, the suggestion is that if the destination > directory ends with a slash, then that directory is created, and the > contents of the source is copied (etc) over to it? Right. And the creation of a target directory is nothing new but already exists if `dired-create-destination-dirs' is non-nil. For example, when you now (without the patch) copy file.txt to bar/foo where bar/ doesn't exist, you'll be queried if dired should create it if the variable is 'ask. If it is 'always, dired just creates it. Finally bar/foo is a normal file, i.e., a copy of file.txt. With Rudi's patch, it's exactly the same when the destination is foo/bar. But if you specify foo/bar/ as destination, dired will create foo/bar/ (maybe after asking as controlled by `dired-create-destination-dirs') and you get foo/bar/file.txt. So basically the trailing / is an indicator to tell dired that the target must be a directory, and then the `dired-create-destination-dirs' semantics can apply. Without the /, dired cannot know. Therefore, the feature seems very natural to me. I'm fine with guarding it with a defcustom if you all feel that many users would type a trailing / out of habit. But since the change only triggers if the directory does not exist yet, the only scenario where it can bite you is when renaming or copying a directory to a new one and you specify the new one with trailing / (which completion will never do because there's no completion for non-existing directories). > Isn't that just about the opposite of the syntax in rsync? Sorry, I don't have a lot of rsync experience. And to me, it's not really important that dired conforms to rsync conventions. Instead it should conform to its own documentation we already have right now. --8<---------------cut here---------------start------------->8--- dired-create-destination-dirs is a variable defined in ‘dired-aux.el’. Its value is ‘ask’ Original value was nil Whether Dired should create destination dirs when copying/removing files. If nil, don’t create them. If ‘always’, create them without asking. If ‘ask’, ask for user confirmation. --8<---------------cut here---------------end--------------->8--- So when I copy/rename something to the non-existent bar/foo/baz/ where it's absolutely clear that it's a directory, why on earth should dired not create it? I would argue that with Rudi's patch the behavior conforms more to the current docs than the non-patched dired. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 8:32 ` Tassilo Horn @ 2021-09-30 13:33 ` Lars Ingebrigtsen 2021-09-30 14:10 ` Tassilo Horn 2021-09-30 15:45 ` [External] : " Drew Adams 1 sibling, 1 reply; 55+ messages in thread From: Lars Ingebrigtsen @ 2021-09-30 13:33 UTC (permalink / raw) To: Tassilo Horn Cc: Eli Zaretskii, emacs-devel, rudiwillalwaysloveyou, Stefan Kangas Tassilo Horn <tsdh@gnu.org> writes: > With Rudi's patch, it's exactly the same when the destination is > foo/bar. But if you specify foo/bar/ as destination, dired will create > foo/bar/ (maybe after asking as controlled by > `dired-create-destination-dirs') and you get foo/bar/file.txt. That does seem quite intuitive and attractive (and is somewhat analogous to what Emacs does with `C-x C-w' today). OK, you've convinced me. Adding a user option like `dired-create-destination-dirs' (as Eli said) is probably the best, though. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 13:33 ` Lars Ingebrigtsen @ 2021-09-30 14:10 ` Tassilo Horn 2021-09-30 16:03 ` Eli Zaretskii 0 siblings, 1 reply; 55+ messages in thread From: Tassilo Horn @ 2021-09-30 14:10 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Eli Zaretskii, emacs-devel, rudiwillalwaysloveyou, Stefan Kangas Lars Ingebrigtsen <larsi@gnus.org> writes: > Tassilo Horn <tsdh@gnu.org> writes: > >> With Rudi's patch, it's exactly the same when the destination is >> foo/bar. But if you specify foo/bar/ as destination, dired will create >> foo/bar/ (maybe after asking as controlled by >> `dired-create-destination-dirs') and you get foo/bar/file.txt. > > That does seem quite intuitive and attractive (and is somewhat > analogous to what Emacs does with `C-x C-w' today). Right. > OK, you've convinced me. Adding a user option like > `dired-create-destination-dirs' (as Eli said) is probably the best, > though. `dired-create-destination-dirs' already exists. But in Rudi's most recent patch version, he added a new one. --8<---------------cut here---------------start------------->8--- +(defcustom dired-create-destination-dirs-trailing-separator-special nil + "If t, when selecting a single destination in Dired, paths that end in a path separator will be treated as a non-existent directory, and acted on according to `dired-create-destination-dirs'. + +This option is only relevant if `dired-create-destination-dirs' is not `nil', and you are moving/copying a single directory. + +For example, when renaming a directory named `old_name' to `new_name/' (note the trailing path separator), `new_name' might be created depending on `dired-create-destination-dirs' and `old_name' will be moved into it if it is created; Otherwise `old_name' will be directly renamed to `new_name'." + :type '(choice (const :tag "Do not treat paths with a trailing path separator specially" nil) + (const :tag "Treat paths with a trailing path separator specially" t)) + :group 'dired + :version "28.1") --8<---------------cut here---------------end--------------->8--- I still think that this is not really necessary but won't object. Rudi proposed that the default value should probably be `t' given that this feels so intuitive and the only gotcha is renaming/moving or copying a directory source/ to a non-existent target or target/ where the former has rename/make a copy semantics and the latter has move/copy *into* the to be created target/ directory. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 14:10 ` Tassilo Horn @ 2021-09-30 16:03 ` Eli Zaretskii 2021-09-30 16:48 ` Tassilo Horn 0 siblings, 1 reply; 55+ messages in thread From: Eli Zaretskii @ 2021-09-30 16:03 UTC (permalink / raw) To: Tassilo Horn; +Cc: larsi, stefankangas, rudiwillalwaysloveyou, emacs-devel > From: Tassilo Horn <tsdh@gnu.org> > Date: Thu, 30 Sep 2021 16:10:02 +0200 > Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org, > rudiwillalwaysloveyou@gmail.com, Stefan Kangas <stefankangas@gmail.com> > > `dired-create-destination-dirs' already exists. But in Rudi's most > recent patch version, he added a new one. > > --8<---------------cut here---------------start------------->8--- > +(defcustom dired-create-destination-dirs-trailing-separator-special nil That's a mouthful, IMO. How about dired-create-dirs-with-trailing-slash instead? > Rudi proposed that the default value should probably be `t' given that > this feels so intuitive and the only gotcha is renaming/moving or > copying a directory source/ to a non-existent target or target/ where > the former has rename/make a copy semantics and the latter has move/copy > *into* the to be created target/ directory. Please don't make it t by default. I'm quite sure you didn't consider all the use cases. E.g., what about foo -> Foo on case-insensitive filesystems? That is a valid use case where the user wants a directory renamed with a different letter-case. We should only turn it on by default after it has been tested by enough users for long enough. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 16:03 ` Eli Zaretskii @ 2021-09-30 16:48 ` Tassilo Horn 2021-09-30 17:47 ` Eli Zaretskii 0 siblings, 1 reply; 55+ messages in thread From: Tassilo Horn @ 2021-09-30 16:48 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, emacs-devel, stefankangas, rudiwillalwaysloveyou Eli Zaretskii <eliz@gnu.org> writes: >> From: Tassilo Horn <tsdh@gnu.org> >> Date: Thu, 30 Sep 2021 16:10:02 +0200 >> Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org, >> rudiwillalwaysloveyou@gmail.com, Stefan Kangas <stefankangas@gmail.com> >> >> `dired-create-destination-dirs' already exists. But in Rudi's most >> recent patch version, he added a new one. >> >> --8<---------------cut here---------------start------------->8--- >> +(defcustom dired-create-destination-dirs-trailing-separator-special nil > > That's a mouthful, IMO. How about > > dired-create-dirs-with-trailing-slash > > instead? Fine with me. Rudi, could you please rework that suggestion into your latest patch? And please also adjust the docstring of the new option so that it conforms to our conventions, i.e., first line is a complete sentence (try M-x checkdoc RET), and everything is filled at column 70. >> Rudi proposed that the default value should probably be `t' given >> that this feels so intuitive and the only gotcha is renaming/moving >> or copying a directory source/ to a non-existent target or target/ >> where the former has rename/make a copy semantics and the latter has >> move/copy *into* the to be created target/ directory. > > Please don't make it t by default. Ok. > I'm quite sure you didn't consider all the use cases. E.g., what > about foo -> Foo on case-insensitive filesystems? That is a valid use > case where the user wants a directory renamed with a different > letter-case. You mean, you'd TAB-complete to the same name foo/ and then capitalize the already completed input so that you then have Foo/ with the slash? I can see that one might do that if the name is quite long. And that use-case would also apply to case-sensitive filesystems. So fine, let's have if off by default. > We should only turn it on by default after it has been tested by > enough users for long enough. Allright. BTW, do we need a copyright assignment for this patch? The actual change is about 5 lines (including reformatting) but the new defcustom is about a dozen of lines with docstring, and stuff. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 16:48 ` Tassilo Horn @ 2021-09-30 17:47 ` Eli Zaretskii 2021-09-30 18:52 ` Rudi C 2021-11-01 15:37 ` Rudi C 0 siblings, 2 replies; 55+ messages in thread From: Eli Zaretskii @ 2021-09-30 17:47 UTC (permalink / raw) To: Tassilo Horn; +Cc: larsi, emacs-devel, stefankangas, rudiwillalwaysloveyou > From: Tassilo Horn <tsdh@gnu.org> > Cc: larsi@gnus.org, stefankangas@gmail.com, rudiwillalwaysloveyou@gmail.com, > emacs-devel@gnu.org > Date: Thu, 30 Sep 2021 18:48:13 +0200 > > > I'm quite sure you didn't consider all the use cases. E.g., what > > about foo -> Foo on case-insensitive filesystems? That is a valid use > > case where the user wants a directory renamed with a different > > letter-case. > > You mean, you'd TAB-complete to the same name foo/ and then capitalize > the already completed input so that you then have Foo/ with the slash? > I can see that one might do that if the name is quite long. And that > use-case would also apply to case-sensitive filesystems. On case-sensitive filesystems, the new directory would not exist. > So fine, let's have if off by default. Thanks. > BTW, do we need a copyright assignment for this patch? The actual > change is about 5 lines (including reformatting) but the new defcustom > is about a dozen of lines with docstring, and stuff. No, we can accept it without an assignment, but that about exhausts our ability to accept more contributions from Rudi, so I recommend starting the paperwork now. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 17:47 ` Eli Zaretskii @ 2021-09-30 18:52 ` Rudi C 2021-09-30 19:02 ` Eli Zaretskii 2021-11-01 15:37 ` Rudi C 1 sibling, 1 reply; 55+ messages in thread From: Rudi C @ 2021-09-30 18:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, emacs-devel, stefankangas, Tassilo Horn [-- Attachment #1: Type: text/plain, Size: 1543 bytes --] > starting the paperwork now. As I'm in my early twenties, I will hopefully have more contributions down the line, so that's a good idea. I am an Iranian citizen, if that matters. Is it all doable with email, or is physical mailing also required? On Thu, Sep 30, 2021 at 9:17 PM Eli Zaretskii <eliz@gnu.org> wrote: > > From: Tassilo Horn <tsdh@gnu.org> > > Cc: larsi@gnus.org, stefankangas@gmail.com, > rudiwillalwaysloveyou@gmail.com, > > emacs-devel@gnu.org > > Date: Thu, 30 Sep 2021 18:48:13 +0200 > > > > > I'm quite sure you didn't consider all the use cases. E.g., what > > > about foo -> Foo on case-insensitive filesystems? That is a valid use > > > case where the user wants a directory renamed with a different > > > letter-case. > > > > You mean, you'd TAB-complete to the same name foo/ and then capitalize > > the already completed input so that you then have Foo/ with the slash? > > I can see that one might do that if the name is quite long. And that > > use-case would also apply to case-sensitive filesystems. > > On case-sensitive filesystems, the new directory would not exist. > > > So fine, let's have if off by default. > > Thanks. > > > BTW, do we need a copyright assignment for this patch? The actual > > change is about 5 lines (including reformatting) but the new defcustom > > is about a dozen of lines with docstring, and stuff. > > No, we can accept it without an assignment, but that about exhausts > our ability to accept more contributions from Rudi, so I recommend > starting the paperwork now. > [-- Attachment #2: Type: text/html, Size: 2359 bytes --] ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 18:52 ` Rudi C @ 2021-09-30 19:02 ` Eli Zaretskii 0 siblings, 0 replies; 55+ messages in thread From: Eli Zaretskii @ 2021-09-30 19:02 UTC (permalink / raw) To: Rudi C; +Cc: larsi, emacs-devel, stefankangas, tsdh > From: Rudi C <rudiwillalwaysloveyou@gmail.com> > Date: Thu, 30 Sep 2021 22:22:32 +0330 > Cc: Tassilo Horn <tsdh@gnu.org>, larsi@gnus.org, stefankangas@gmail.com, > emacs-devel@gnu.org > > > starting the paperwork now. > > As I'm in my early twenties, I will hopefully have more contributions down the line, so that's a good idea. > > I am an Iranian citizen, if that matters. Is it all doable with email, or is physical mailing also required? I think nowadays everything is done in email. I will send you the form off-list. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 17:47 ` Eli Zaretskii 2021-09-30 18:52 ` Rudi C @ 2021-11-01 15:37 ` Rudi C 2021-11-02 14:44 ` Lars Ingebrigtsen 1 sibling, 1 reply; 55+ messages in thread From: Rudi C @ 2021-11-01 15:37 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, emacs-devel, Stefan Kangas, Tassilo Horn [-- Attachment #1: Type: text/plain, Size: 1355 bytes --] My copyright assignment is now done, so we can merge this in. On Thu, Sep 30, 2021 at 9:17 PM Eli Zaretskii <eliz@gnu.org> wrote: > > From: Tassilo Horn <tsdh@gnu.org> > > Cc: larsi@gnus.org, stefankangas@gmail.com, > rudiwillalwaysloveyou@gmail.com, > > emacs-devel@gnu.org > > Date: Thu, 30 Sep 2021 18:48:13 +0200 > > > > > I'm quite sure you didn't consider all the use cases. E.g., what > > > about foo -> Foo on case-insensitive filesystems? That is a valid use > > > case where the user wants a directory renamed with a different > > > letter-case. > > > > You mean, you'd TAB-complete to the same name foo/ and then capitalize > > the already completed input so that you then have Foo/ with the slash? > > I can see that one might do that if the name is quite long. And that > > use-case would also apply to case-sensitive filesystems. > > On case-sensitive filesystems, the new directory would not exist. > > > So fine, let's have if off by default. > > Thanks. > > > BTW, do we need a copyright assignment for this patch? The actual > > change is about 5 lines (including reformatting) but the new defcustom > > is about a dozen of lines with docstring, and stuff. > > No, we can accept it without an assignment, but that about exhausts > our ability to accept more contributions from Rudi, so I recommend > starting the paperwork now. > [-- Attachment #2: Type: text/html, Size: 2098 bytes --] ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-11-01 15:37 ` Rudi C @ 2021-11-02 14:44 ` Lars Ingebrigtsen 2021-11-02 15:08 ` Rudi C 0 siblings, 1 reply; 55+ messages in thread From: Lars Ingebrigtsen @ 2021-11-02 14:44 UTC (permalink / raw) To: Rudi C; +Cc: Eli Zaretskii, emacs-devel, Stefan Kangas, Tassilo Horn Rudi C <rudiwillalwaysloveyou@gmail.com> writes: > My copyright assignment is now done, so we can merge this in. Can you re-send the current version of the patch (there were several versions, if I remember correctly)? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-11-02 14:44 ` Lars Ingebrigtsen @ 2021-11-02 15:08 ` Rudi C 2021-11-02 15:15 ` Eli Zaretskii 0 siblings, 1 reply; 55+ messages in thread From: Rudi C @ 2021-11-02 15:08 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel, Stefan Kangas, Tassilo Horn [-- Attachment #1.1: Type: text/plain, Size: 678 bytes --] Well, there are two commits, the first one adds the new behavior, and the second one moves the new behavior behind a new option. I can't find any way to merge the patch files without the original repo, and I no longer have the emacs git source on my computer. On Tue, Nov 2, 2021 at 6:14 PM Lars Ingebrigtsen <larsi@gnus.org> wrote: > Rudi C <rudiwillalwaysloveyou@gmail.com> writes: > > > My copyright assignment is now done, so we can merge this in. > > Can you re-send the current version of the patch (there were several > versions, if I remember correctly)? > > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no > [-- Attachment #1.2: Type: text/html, Size: 1180 bytes --] [-- Attachment #2: 0001-dired-do-create-files-now-checks-for-trailing-slashe.patch --] [-- Type: application/octet-stream, Size: 986 bytes --] From 951e12f352b783b15edbabb4623a5c721425bd25 Mon Sep 17 00:00:00 2001 From: NightMachinary <rudiwillalwaysloveyou@gmail.com> Date: Tue, 28 Sep 2021 21:14:05 +0330 Subject: [PATCH 1/2] dired-do-create-files now checks for trailing slashes in the target --- lisp/dired-aux.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 397c5c67cb..fcaa8dd008 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -2157,7 +2157,9 @@ Optional arg HOW-TO determines how to treat the target. target-dir op-symbol arg rfn-list default)))) (into-dir (progn - (unless dired-one-file (dired-maybe-create-dirs target)) + (when (or (not dired-one-file) + (directory-name-p target)) + (dired-maybe-create-dirs target)) (cond ((null how-to) ;; Allow users to change the letter case of ;; a directory on a case-insensitive -- 2.32.0 [-- Attachment #3: 0002-Added-option-dired-create-destination-dirs-trailing-.patch --] [-- Type: application/octet-stream, Size: 2312 bytes --] From 7a680d06e4b6ecf9e88e1c309f214d4e1a7f8700 Mon Sep 17 00:00:00 2001 From: NightMachinary <rudiwillalwaysloveyou@gmail.com> Date: Wed, 29 Sep 2021 17:54:29 +0330 Subject: [PATCH 2/2] Added option dired-create-destination-dirs-trailing-separator-special --- lisp/dired-aux.el | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index fcaa8dd008..ee727ec5cc 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1789,6 +1789,17 @@ If `ask', ask for user confirmation." :group 'dired :version "27.1") +(defcustom dired-create-destination-dirs-trailing-separator-special nil + "If t, when selecting a single destination in Dired, paths that end in a path separator will be treated as a non-existent directory, and acted on according to `dired-create-destination-dirs'. + +This option is only relevant if `dired-create-destination-dirs' is not `nil', and you are moving/copying a single directory. + +For example, when renaming a directory named `old_name' to `new_name/' (note the trailing path separator), `new_name' might be created depending on `dired-create-destination-dirs' and `old_name' will be moved into it if it is created; Otherwise `old_name' will be directly renamed to `new_name'." + :type '(choice (const :tag "Do not treat paths with a trailing path separator specially" nil) + (const :tag "Treat paths with a trailing path separator specially" t)) + :group 'dired + :version "28.1") + (defun dired-maybe-create-dirs (dir) "Create DIR if doesn't exist according to `dired-create-destination-dirs'." (when (and dired-create-destination-dirs (not (file-exists-p dir))) @@ -2157,8 +2168,11 @@ Optional arg HOW-TO determines how to treat the target. target-dir op-symbol arg rfn-list default)))) (into-dir (progn - (when (or (not dired-one-file) - (directory-name-p target)) + (when + (or + (not dired-one-file) + (and dired-create-destination-dirs-trailing-separator-special + (directory-name-p target))) (dired-maybe-create-dirs target)) (cond ((null how-to) ;; Allow users to change the letter case of -- 2.32.0 ^ permalink raw reply related [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-11-02 15:08 ` Rudi C @ 2021-11-02 15:15 ` Eli Zaretskii 2021-11-09 12:52 ` Rudi C 0 siblings, 1 reply; 55+ messages in thread From: Eli Zaretskii @ 2021-11-02 15:15 UTC (permalink / raw) To: Rudi C; +Cc: larsi, emacs-devel, stefankangas, tsdh > From: Rudi C <rudiwillalwaysloveyou@gmail.com> > Date: Tue, 2 Nov 2021 18:38:08 +0330 > Cc: Eli Zaretskii <eliz@gnu.org>, Tassilo Horn <tsdh@gnu.org>, Stefan Kangas <stefankangas@gmail.com>, > emacs-devel@gnu.org > > +(defcustom dired-create-destination-dirs-trailing-separator-special nil This variable's name is a mouthful; please let's find a shorter name. > + "If t, when selecting a single destination in Dired, paths that end in a path separator will be treated as a non-existent directory, and acted on according to `dired-create-destination-dirs'. > + > +This option is only relevant if `dired-create-destination-dirs' is not `nil', and you are moving/copying a single directory. > + > +For example, when renaming a directory named `old_name' to `new_name/' (note the trailing path separator), `new_name' might be created depending on `dired-create-destination-dirs' and `old_name' will be moved into it if it is created; Otherwise `old_name' will be directly renamed to `new_name'." > + :type '(choice (const :tag "Do not treat paths with a trailing path separator specially" nil) These lines are too long; please divide them into shorter lines. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-11-02 15:15 ` Eli Zaretskii @ 2021-11-09 12:52 ` Rudi C 2021-11-09 13:47 ` Eli Zaretskii 2021-12-05 12:12 ` Tassilo Horn 0 siblings, 2 replies; 55+ messages in thread From: Rudi C @ 2021-11-09 12:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, emacs-devel, stefankangas, tsdh [-- Attachment #1.1: Type: text/plain, Size: 1578 bytes --] Okay, I have attached a new patch (no need for the previous patches). PS: I inserted newlines into the docstring to make the lines shorter, but this makes the docstring ugly to view (as it is essentially hardwrapping based on an arbitrary column size that the user's screen will not share). On Tue, Nov 2, 2021 at 6:45 PM Eli Zaretskii <eliz@gnu.org> wrote: > > From: Rudi C <rudiwillalwaysloveyou@gmail.com> > > Date: Tue, 2 Nov 2021 18:38:08 +0330 > > Cc: Eli Zaretskii <eliz@gnu.org>, Tassilo Horn <tsdh@gnu.org>, Stefan > Kangas <stefankangas@gmail.com>, > > emacs-devel@gnu.org > > > > +(defcustom dired-create-destination-dirs-trailing-separator-special nil > > This variable's name is a mouthful; please let's find a shorter name. > > > + "If t, when selecting a single destination in Dired, paths that end > in a path separator will be treated as a non-existent directory, and acted > on according to `dired-create-destination-dirs'. > > + > > +This option is only relevant if `dired-create-destination-dirs' is not > `nil', and you are moving/copying a single directory. > > + > > +For example, when renaming a directory named `old_name' to `new_name/' > (note the trailing path separator), `new_name' might be created depending > on `dired-create-destination-dirs' and `old_name' will be moved into it if > it is created; Otherwise `old_name' will be directly renamed to `new_name'." > > + :type '(choice (const :tag "Do not treat paths with a trailing path > separator specially" nil) > > These lines are too long; please divide them into shorter lines. > [-- Attachment #1.2: Type: text/html, Size: 2363 bytes --] [-- Attachment #2: 0001-Added-dired-create-dirs-trailing-separator.patch --] [-- Type: application/octet-stream, Size: 2294 bytes --] From 3dfea8f43a45473138d9d3d9716658390957b494 Mon Sep 17 00:00:00 2001 From: NightMachinary <rudiwillalwaysloveyou@gmail.com> Date: Tue, 9 Nov 2021 16:19:45 +0330 Subject: [PATCH] Added: dired-create-dirs-trailing-separator --- lisp/dired-aux.el | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index ef299b21fd..064d9eba8d 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1789,6 +1789,25 @@ If `ask', ask for user confirmation." :group 'dired :version "27.1") +(defcustom dired-create-dirs-trailing-separator nil + "If t, when selecting a single destination in Dired, +paths that end in a path separator will be treated as a non-existent directory, +and acted on according to `dired-create-destination-dirs'. + +This option is only relevant if `dired-create-destination-dirs' is not `nil', +and you are moving/copying a single directory. + +For example, when renaming a directory named `old_name' to `new_name/' +(note the trailing path separator), `new_name' might be created depending on +`dired-create-destination-dirs' and `old_name' will be moved into it +if it is created; Otherwise `old_name' will be directly renamed to `new_name'." + :type '(choice + (const :tag + "Do not treat paths with a trailing path separator specially" nil) + (const :tag "Treat paths with a trailing path separator specially" t)) + :group 'dired + :version "28.1") + (defun dired-maybe-create-dirs (dir) "Create DIR if doesn't exist according to `dired-create-destination-dirs'." (when (and dired-create-destination-dirs (not (file-exists-p dir))) @@ -2157,7 +2176,12 @@ Optional arg HOW-TO determines how to treat the target. target-dir op-symbol arg rfn-list default)))) (into-dir (progn - (unless dired-one-file (dired-maybe-create-dirs target)) + (when + (or + (not dired-one-file) + (and dired-create-dirs-trailing-separator + (directory-name-p target))) + (dired-maybe-create-dirs target)) (cond ((null how-to) ;; Allow users to change the letter case of ;; a directory on a case-insensitive -- 2.33.1 ^ permalink raw reply related [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-11-09 12:52 ` Rudi C @ 2021-11-09 13:47 ` Eli Zaretskii 2021-12-05 12:12 ` Tassilo Horn 1 sibling, 0 replies; 55+ messages in thread From: Eli Zaretskii @ 2021-11-09 13:47 UTC (permalink / raw) To: Rudi C; +Cc: larsi, emacs-devel, stefankangas, tsdh > From: Rudi C <rudiwillalwaysloveyou@gmail.com> > Date: Tue, 9 Nov 2021 16:22:59 +0330 > Cc: larsi@gnus.org, tsdh@gnu.org, stefankangas@gmail.com, emacs-devel@gnu.org > > Okay, I have attached a new patch (no need for the previous patches). Thanks. > PS: I inserted newlines into the docstring to make the lines shorter, but this makes the docstring ugly to view > (as it is essentially hardwrapping based on an arbitrary column size that the user's screen will not share). No, that's not TRT. The first line of a doc string should be a complete sentence, and it should be a summary of what the variable or the function does. That's because some Help commands display only that first line to the user. See below. > +(defcustom dired-create-dirs-trailing-separator nil > + "If t, when selecting a single destination in Dired, > +paths that end in a path separator will be treated as a non-existent directory, > +and acted on according to `dired-create-destination-dirs'. Here, I'd rephrase: "If non-nil, create missing directories when copying or moving in Dired. If this variable is non-nil, and the destination of a move or a copy operation in Dired is a directory name, i.e. it ends in a slash, Dired will create the destination if it doesn't already exist, provided that `dired-create-destination-dirs' says so." Additional comments: . we don't use "path" for anything except PATH-style directory lists; the GNU Coding Standards frown on using that to mean "file name" or "directory name" . instead of "path separator" (which could be confused with the colon which separates directories in PATH), use "slash" or "directory separator" > +For example, when renaming a directory named `old_name' to `new_name/' > +(note the trailing path separator), `new_name' might be created depending on "path separator" again > +`dired-create-destination-dirs' and `old_name' will be moved into it > +if it is created; Otherwise `old_name' will be directly renamed to `new_name'." The "Otherwise" part should not be capitalized here. > + :type '(choice > + (const :tag > + "Do not treat paths with a trailing path separator specially" nil) > + (const :tag "Treat paths with a trailing path separator specially" t)) Once again, "paths" used for file names. Also, "treat specially" is a riddle: it doesn't explain the effect of the setting. I suggest the following descriptions instead: "Create missing destination directories on copy/move." "Do not create missing destination directories." OK? ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-11-09 12:52 ` Rudi C 2021-11-09 13:47 ` Eli Zaretskii @ 2021-12-05 12:12 ` Tassilo Horn 2021-12-05 13:26 ` Rudi C 2021-12-05 20:24 ` Lars Ingebrigtsen 1 sibling, 2 replies; 55+ messages in thread From: Tassilo Horn @ 2021-12-05 12:12 UTC (permalink / raw) To: Rudi C; +Cc: Eli Zaretskii, emacs-devel, larsi, stefankangas [-- Attachment #1: Type: text/plain, Size: 735 bytes --] Rudi C <rudiwillalwaysloveyou@gmail.com> writes: Hi all, > Okay, I have attached a new patch (no need for the previous patches). since it seems that no progress has been made on this issue and the only remaining stuff is just adapting the patch to our conventions, I reworked Rudi's last version of the patch (while keeping him as the author, of course). Would the following be acceptable for master? If so, I'd volunteer to extend the dired docs wrt. the new feature. (I have to confess I've made the new option's name longer again but IMHO a slightly longer but more descriptive name is no real burden. Especially since it pairs with dired-create-destination-dirs, it's good when it's named very similarly.) Thanks, Tassilo [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-Added-dired-create-destination-dirs-on-trailing-dirs.patch --] [-- Type: text/x-patch, Size: 3331 bytes --] From 8d957061a9cd0e6924558c2634932a8d08a92975 Mon Sep 17 00:00:00 2001 From: NightMachinary <rudiwillalwaysloveyou@gmail.com> Date: Tue, 9 Nov 2021 16:19:45 +0330 Subject: [PATCH] Added dired-create-destination-dirs-on-trailing-dirsep * lisp/dired-aux.el (dired-create-destination-dirs-on-trailing-dirsep): New customization option. (dired-do-create-files): Use it. (dired-create-destination-dirs): Mention the new option in the docstring. --- lisp/dired-aux.el | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 588551a641..af7b160c1a 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1787,13 +1787,46 @@ dired-create-destination-dirs "Whether Dired should create destination dirs when copying/removing files. If nil, don't create them. If `always', create them without asking. -If `ask', ask for user confirmation." +If `ask', ask for user confirmation. + +Also see `dired-create-destination-dirs-on-trailing-dirsep'." :type '(choice (const :tag "Never create non-existent dirs" nil) (const :tag "Always create non-existent dirs" always) (const :tag "Ask for user confirmation" ask)) :group 'dired :version "27.1") +(defcustom dired-create-destination-dirs-on-trailing-dirsep nil + "If non-nil, treat a trailing slash at queried destination dir specially. + +If this variable is non-nil and a single destination filename is +queried which ends in a directory separator (/), it will be +treated as a non-existent directory and acted on according to +`dired-create-destination-dirs'. + +This option is only relevant if `dired-create-destination-dirs' +is non-nil, too. + +For example, if both `dired-create-destination-dirs' and this +option are non-nil, renaming a directory named `old_name' to +`new_name/' (note the trailing directory separator) where +`new_name' does not exists already, it will be created and +`old_name' be moved into it. If only `new_name' (without the +trailing /) is given or this option or +`dired-create-destination-dirs' is `nil', `old_name' will be +renamed to `new_name'." + :type '(choice + (const :tag + (concat "Do not treat destination dirs with a " + "trailing directory separator specially") + nil) + (const :tag + (concat "Treat destination dirs with trailing " + "directory separator specially") + t)) + :group 'dired + :version "29.1") + (defun dired-maybe-create-dirs (dir) "Create DIR if doesn't exist according to `dired-create-destination-dirs'." (when (and dired-create-destination-dirs (not (file-exists-p dir))) @@ -2163,7 +2196,12 @@ dired-do-create-files target-dir op-symbol arg rfn-list default)))) (into-dir (progn - (unless dired-one-file (dired-maybe-create-dirs target)) + (when + (or + (not dired-one-file) + (and dired-create-destination-dirs-on-trailing-dirsep + (directory-name-p target))) + (dired-maybe-create-dirs target)) (cond ((null how-to) ;; Allow users to change the letter case of ;; a directory on a case-insensitive -- 2.34.1 ^ permalink raw reply related [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-12-05 12:12 ` Tassilo Horn @ 2021-12-05 13:26 ` Rudi C 2021-12-05 17:00 ` Tassilo Horn 2021-12-06 4:34 ` Richard Stallman 2021-12-05 20:24 ` Lars Ingebrigtsen 1 sibling, 2 replies; 55+ messages in thread From: Rudi C @ 2021-12-05 13:26 UTC (permalink / raw) To: Tassilo Horn; +Cc: Eli Zaretskii, emacs-devel, Lars Ingebrigtsen, Stefan Kangas [-- Attachment #1: Type: text/plain, Size: 974 bytes --] Thanks! PS: Are doc/emacs/dired.texi and the docstrings completely separate? I.e., any documentation change needs to be duplicated? On Sun, Dec 5, 2021 at 3:49 PM Tassilo Horn <tsdh@gnu.org> wrote: > Rudi C <rudiwillalwaysloveyou@gmail.com> writes: > > Hi all, > > > Okay, I have attached a new patch (no need for the previous patches). > > since it seems that no progress has been made on this issue and the only > remaining stuff is just adapting the patch to our conventions, I > reworked Rudi's last version of the patch (while keeping him as the > author, of course). > > Would the following be acceptable for master? If so, I'd volunteer to > extend the dired docs wrt. the new feature. (I have to confess I've > made the new option's name longer again but IMHO a slightly longer but > more descriptive name is no real burden. Especially since it pairs with > dired-create-destination-dirs, it's good when it's named very > similarly.) > > Thanks, > Tassilo > > [-- Attachment #2: Type: text/html, Size: 1445 bytes --] ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-12-05 13:26 ` Rudi C @ 2021-12-05 17:00 ` Tassilo Horn 2021-12-06 4:34 ` Richard Stallman 1 sibling, 0 replies; 55+ messages in thread From: Tassilo Horn @ 2021-12-05 17:00 UTC (permalink / raw) To: Rudi C; +Cc: Eli Zaretskii, emacs-devel, Lars Ingebrigtsen, Stefan Kangas Rudi C <rudiwillalwaysloveyou@gmail.com> writes: Hi Rudi, > Thanks! You're welcome. > PS: Are doc/emacs/dired.texi and the docstrings completely separate? Yes. > I.e., any documentation change needs to be duplicated? Well, kind of. The manual and the docstrings are written in different styles, e.g., the docstrings are written as an imperative, the manual in indicative, docstrings are terse, the manual more explanatory, e.g., with examples. See (info "(elisp) Documentation Tips") for how to write docstrings fitting our conventions. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-12-05 13:26 ` Rudi C 2021-12-05 17:00 ` Tassilo Horn @ 2021-12-06 4:34 ` Richard Stallman 1 sibling, 0 replies; 55+ messages in thread From: Richard Stallman @ 2021-12-06 4:34 UTC (permalink / raw) To: Rudi C; +Cc: eliz, emacs-devel, stefankangas, larsi, tsdh [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > PS: Are doc/emacs/dired.texi and the docstrings completely separate? I.e., > any documentation change needs to be duplicated? The documentation is not "duplicated" -- the text in the manual, and the doc strings, are very different. They HAVE to be very different since they do different jobs. Each one needs to be updated. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-12-05 12:12 ` Tassilo Horn 2021-12-05 13:26 ` Rudi C @ 2021-12-05 20:24 ` Lars Ingebrigtsen 2021-12-06 6:01 ` Tassilo Horn 1 sibling, 1 reply; 55+ messages in thread From: Lars Ingebrigtsen @ 2021-12-05 20:24 UTC (permalink / raw) To: Tassilo Horn; +Cc: Rudi C, emacs-devel, Eli Zaretskii, stefankangas Tassilo Horn <tsdh@gnu.org> writes: > Would the following be acceptable for master? If so, I'd volunteer to > extend the dired docs wrt. the new feature. (I have to confess I've > made the new option's name longer again but IMHO a slightly longer but > more descriptive name is no real burden. Especially since it pairs with > dired-create-destination-dirs, it's good when it's named very > similarly.) Looks good to me. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-12-05 20:24 ` Lars Ingebrigtsen @ 2021-12-06 6:01 ` Tassilo Horn 0 siblings, 0 replies; 55+ messages in thread From: Tassilo Horn @ 2021-12-06 6:01 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Rudi C, emacs-devel, Eli Zaretskii, stefankangas Lars Ingebrigtsen <larsi@gnus.org> writes: Hi Lars, >> Would the following be acceptable for master? If so, I'd volunteer to >> extend the dired docs wrt. the new feature. (I have to confess I've >> made the new option's name longer again but IMHO a slightly longer but >> more descriptive name is no real burden. Especially since it pairs with >> dired-create-destination-dirs, it's good when it's named very >> similarly.) > > Looks good to me. Thanks for checking! Pushed now. Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* RE: [External] : Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 8:32 ` Tassilo Horn 2021-09-30 13:33 ` Lars Ingebrigtsen @ 2021-09-30 15:45 ` Drew Adams 1 sibling, 0 replies; 55+ messages in thread From: Drew Adams @ 2021-09-30 15:45 UTC (permalink / raw) To: Tassilo Horn, Lars Ingebrigtsen Cc: Eli Zaretskii, Stefan Kangas, rudiwillalwaysloveyou@gmail.com, emacs-devel@gnu.org > With Rudi's patch, it's exactly the same when the destination is > foo/bar. But if you specify foo/bar/ as destination, dired will create > foo/bar/ (maybe after asking as controlled by > `dired-create-destination-dirs') and you get foo/bar/file.txt. > > So basically the trailing / is an indicator to tell dired that the > target must be a directory, and then the `dired-create-destination- > dirs' semantics can apply. Without the /, dired cannot know. Except for the case where the "missing directory" part has the same name as the file to be acted on (for the proposed feature apparently, and also for the existing behavior of `dired-create-destination-dirs'). You've confirmed that Emacs just raises an error in that case for the new feature, and that's also what it does anyway for the existing case of trying to copy (or move or whatever) file `aaa' in dir `foo' to `foo/aaa/aaa/', where subdir `foo/aaa' doesn't exist. Emacs doesn't ask you to create the subdir if `dired-create-destination-dirs' is `ask', and it doesn't create it if that option value is t. It always raises an error. Whether such behavior is good, or the best, is another question. But at least (IIUC) the proposed behavior is the consistent with what we already have. (However, the error message isn't ideal: "Cannot copy to same file: ABS-DIR-FOR/foo/aaa". Since, by the convention, the user has specified a missing dir, the message should say that that dir, .../foo/aaa, is missing, or something similar.) ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 6:06 ` Lars Ingebrigtsen 2021-09-30 7:29 ` Lars Ingebrigtsen 2021-09-30 8:32 ` Tassilo Horn @ 2021-09-30 13:54 ` Stefan Kangas 2021-09-30 13:59 ` Lars Ingebrigtsen 2 siblings, 1 reply; 55+ messages in thread From: Stefan Kangas @ 2021-09-30 13:54 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Emacs developers, Rudi C, Tassilo Horn Den tors 30 sep. 2021 kl 08:06 skrev Lars Ingebrigtsen <larsi@gnus.org>: > Isn't that just about the opposite of the syntax in rsync? That is, > "rsync foo/ bar" will copy the files in foo over to bad, while "rsync > foo bar" will copy the directory itself into bar. (Whether you have a > slash or not at the end of the destination directory doesn't make a > difference.) Having a slash at the end of the destination directory *is* significant with rsync: $ touch foo $ ls bar ls: bar: No such file or directory $ rsync foo bar/ $ ls -al bar total 0 drwxr-xr-x 3 skangas wheel 96 Sep 30 15:50 . drwxr-xr-x 4 skangas wheel 128 Sep 30 15:50 .. -rw-r--r-- 1 skangas wheel 0 Sep 30 15:50 foo ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-30 13:54 ` Stefan Kangas @ 2021-09-30 13:59 ` Lars Ingebrigtsen 0 siblings, 0 replies; 55+ messages in thread From: Lars Ingebrigtsen @ 2021-09-30 13:59 UTC (permalink / raw) To: Stefan Kangas; +Cc: Eli Zaretskii, Emacs developers, Rudi C, Tassilo Horn Stefan Kangas <stefankangas@gmail.com> writes: > Having a slash at the end of the destination directory *is* > significant with rsync: > > $ touch foo > $ ls bar > ls: bar: No such file or directory > $ rsync foo bar/ > $ ls -al bar > total 0 > drwxr-xr-x 3 skangas wheel 96 Sep 30 15:50 . > drwxr-xr-x 4 skangas wheel 128 Sep 30 15:50 .. > -rw-r--r-- 1 skangas wheel 0 Sep 30 15:50 foo I was thinking of the "rsync -a" thing. "rsync -a d1 d2" and "rsync -a d1 d2/" does the same. (d1 is a directory and d2 doesn't exist in this scenario.) (Adding a slash to d1 does change what's happening.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 14:21 ` Lars Ingebrigtsen 2021-09-29 15:04 ` Stefan Kangas @ 2021-09-29 15:44 ` Eli Zaretskii 1 sibling, 0 replies; 55+ messages in thread From: Eli Zaretskii @ 2021-09-29 15:44 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: rudiwillalwaysloveyou, emacs-devel, stefankangas, tsdh > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: Tassilo Horn <tsdh@gnu.org>, rudiwillalwaysloveyou@gmail.com, > stefankangas@gmail.com, emacs-devel@gnu.org > Date: Wed, 29 Sep 2021 16:21:50 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > > I'm against unconditionally changing the behavior based on the obscure > > fact of whether the directory name ends in a slash or doesn't. That > > slash is ephemeral and users may not be aware to its importance, since > > the semantics of foo/ and foo is the same more or less. > > Yes, we're extremely sloppy (in a good way) when handling foo/ and foo, > so it might be surprising behaviour to make this one command assign > different semantics to the two forms. > > But it's nice functionality. Is there some other way we could get this > without relying on the difference between foo and foo/? A separate > command, perhaps? Or some extra prompting? I suggested a new defcustom to turn this on. A separate command would also be okay. Extra prompting is less nice, because it will also affect those who don't want the new behavior. ^ permalink raw reply [flat|nested] 55+ messages in thread
* RE: [External] : Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:42 ` Tassilo Horn 2021-09-29 13:57 ` Eli Zaretskii @ 2021-09-29 17:01 ` Drew Adams 2021-09-29 19:09 ` Tassilo Horn 1 sibling, 1 reply; 55+ messages in thread From: Drew Adams @ 2021-09-29 17:01 UTC (permalink / raw) To: Tassilo Horn, Eli Zaretskii Cc: rudiwillalwaysloveyou@gmail.com, stefankangas@gmail.com, emacs-devel@gnu.org > file -> 2.txt (renames plain file no matter if 2.txt already exists) > file -> foo (move into foo if that's an existing dir, otherwise > rename) > file -> foo/ (move into directory foo, creating if not existing > and dired-create-destination-dirs is non-nil) > > The first 2 are unchanged, the third one is the new one. What about: foo -> foo/ Does that move file foo to directory foo, as foo/foo, creating directory foo if it doesn't exist? If not, does the doc call out that inconsistency? Or does it raise an error? What does it do? ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: [External] : Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 17:01 ` [External] : " Drew Adams @ 2021-09-29 19:09 ` Tassilo Horn 2021-09-29 19:35 ` Drew Adams 0 siblings, 1 reply; 55+ messages in thread From: Tassilo Horn @ 2021-09-29 19:09 UTC (permalink / raw) To: Drew Adams Cc: Eli Zaretskii, emacs-devel, rudiwillalwaysloveyou@gmail.com, stefankangas@gmail.com Drew Adams <drew.adams@oracle.com> writes: >> file -> 2.txt (renames plain file no matter if 2.txt already exists) >> file -> foo (move into foo if that's an existing dir, otherwise >> rename) >> file -> foo/ (move into directory foo, creating if not existing >> and dired-create-destination-dirs is non-nil) >> >> The first 2 are unchanged, the third one is the new one. > > What about: foo -> foo/ > > Does that move file foo to directory foo, as > foo/foo, creating directory foo if it doesn't > exist? No, it errors in the same way as it does without the patch. Move: ‘/home/horn/tmp/foo’ to ‘/home/horn/tmp/foo/foo’ failed: (file-error Renaming Invalid argument /home/horn/tmp/foo /home/horn/tmp/foo/foo) Bye, Tassilo ^ permalink raw reply [flat|nested] 55+ messages in thread
* RE: [External] : Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 19:09 ` Tassilo Horn @ 2021-09-29 19:35 ` Drew Adams 0 siblings, 0 replies; 55+ messages in thread From: Drew Adams @ 2021-09-29 19:35 UTC (permalink / raw) To: Tassilo Horn Cc: Eli Zaretskii, emacs-devel@gnu.org, rudiwillalwaysloveyou@gmail.com, stefankangas@gmail.com > >> file -> 2.txt (renames plain file no matter if 2.txt already > >> exists) > >> file -> foo (move into foo if that's an existing dir, otherwise > >> rename) > >> file -> foo/ (move into directory foo, creating if not existing > >> and dired-create-destination-dirs is non-nil) > >> > >> The first 2 are unchanged, the third one is the new one. > > > > What about: foo -> foo/ > > > > Does that move file foo to directory foo, as > > foo/foo, creating directory foo if it doesn't > > exist? > > No, it errors in the same way as it does without the patch. OK, good. > Move: ‘/home/horn/tmp/foo’ to ‘/home/horn/tmp/foo/foo’ failed: > (file-error Renaming Invalid argument /home/horn/tmp/foo > /home/horn/tmp/foo/foo) That error msg isn't so great, FWIW. This is a design choice. What's the invalid argument (which)? It could at least say that the dir to move to doesn't exist. The doc should at least call this case out where it talks about this (optional) feature of an appended `/' creating a missing dir. ^ permalink raw reply [flat|nested] 55+ messages in thread
* Re: PR: dired-do-create-files now checks for trailing slashes in the target 2021-09-29 13:23 ` Tassilo Horn 2021-09-29 13:41 ` Eli Zaretskii @ 2021-09-29 13:57 ` Stefan Kangas 1 sibling, 0 replies; 55+ messages in thread From: Stefan Kangas @ 2021-09-29 13:57 UTC (permalink / raw) To: Tassilo Horn, Eli Zaretskii; +Cc: rudiwillalwaysloveyou, emacs-devel Tassilo Horn <tsdh@gnu.org> writes: > [...] "mv" from GNU coreutils 9.0 where "mv foo bar" also > moves foo into bar if both exist and at least bar is a directory. This has been the case with mv since at least 1971: If the new name is a directory, the file is moved to that directory under its old name. http://man.cat-v.org/unix-1st/1/mv ^ permalink raw reply [flat|nested] 55+ messages in thread
end of thread, other threads:[~2021-12-06 6:01 UTC | newest] Thread overview: 55+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-09-28 17:50 PR: dired-do-create-files now checks for trailing slashes in the target Rudi C 2021-09-28 18:17 ` Stefan Kangas 2021-09-28 18:42 ` Rudi C 2021-09-28 19:03 ` Stefan Kangas 2021-09-28 19:38 ` Tassilo Horn 2021-09-28 20:07 ` Stefan Kangas 2021-09-28 20:23 ` Rudi C 2021-09-28 18:42 ` Eli Zaretskii 2021-09-28 19:29 ` Tassilo Horn 2021-09-28 19:55 ` Eli Zaretskii 2021-09-29 4:46 ` Tassilo Horn 2021-09-29 13:09 ` Eli Zaretskii 2021-09-29 13:20 ` Rudi C 2021-09-29 13:34 ` Eli Zaretskii 2021-09-29 13:37 ` Tassilo Horn 2021-09-29 13:42 ` Stefan Kangas 2021-09-29 13:53 ` Tassilo Horn 2021-09-29 14:31 ` Rudi C 2021-09-29 13:23 ` Tassilo Horn 2021-09-29 13:41 ` Eli Zaretskii 2021-09-29 13:42 ` Tassilo Horn 2021-09-29 13:57 ` Eli Zaretskii 2021-09-29 14:21 ` Lars Ingebrigtsen 2021-09-29 15:04 ` Stefan Kangas 2021-09-29 15:17 ` Tassilo Horn 2021-09-30 6:06 ` Lars Ingebrigtsen 2021-09-30 7:29 ` Lars Ingebrigtsen 2021-09-30 8:32 ` Tassilo Horn 2021-09-30 13:33 ` Lars Ingebrigtsen 2021-09-30 14:10 ` Tassilo Horn 2021-09-30 16:03 ` Eli Zaretskii 2021-09-30 16:48 ` Tassilo Horn 2021-09-30 17:47 ` Eli Zaretskii 2021-09-30 18:52 ` Rudi C 2021-09-30 19:02 ` Eli Zaretskii 2021-11-01 15:37 ` Rudi C 2021-11-02 14:44 ` Lars Ingebrigtsen 2021-11-02 15:08 ` Rudi C 2021-11-02 15:15 ` Eli Zaretskii 2021-11-09 12:52 ` Rudi C 2021-11-09 13:47 ` Eli Zaretskii 2021-12-05 12:12 ` Tassilo Horn 2021-12-05 13:26 ` Rudi C 2021-12-05 17:00 ` Tassilo Horn 2021-12-06 4:34 ` Richard Stallman 2021-12-05 20:24 ` Lars Ingebrigtsen 2021-12-06 6:01 ` Tassilo Horn 2021-09-30 15:45 ` [External] : " Drew Adams 2021-09-30 13:54 ` Stefan Kangas 2021-09-30 13:59 ` Lars Ingebrigtsen 2021-09-29 15:44 ` Eli Zaretskii 2021-09-29 17:01 ` [External] : " Drew Adams 2021-09-29 19:09 ` Tassilo Horn 2021-09-29 19:35 ` Drew Adams 2021-09-29 13:57 ` Stefan Kangas
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.