From: Eli Zaretskii <eliz@gnu.org>
To: Tino Calancha <tino.calancha@gmail.com>
Cc: psainty@orcon.net.nz, tzz@lifelogs.com, clement.pit@gmail.com,
michael.albinus@gmx.de, 24150@debbugs.gnu.org, sdl.web@gmail.com
Subject: bug#24150: 26.0.50; New command: dired-create-empty-file
Date: Fri, 27 Jul 2018 11:39:38 +0300 [thread overview]
Message-ID: <83r2jprs1h.fsf@gnu.org> (raw)
In-Reply-To: <87va9661uy.fsf@calancha-pc.dy.bbexcite.jp> (message from Tino Calancha on Mon, 23 Jul 2018 12:57:09 +0900)
> From: Tino Calancha <tino.calancha@gmail.com>
> Cc: bug-gnu-emacs-bounces+psainty=orcon.net.nz@gnu.org, psainty@orcon.net.nz, tzz@lifelogs.com, clement.pit@gmail.com, michael.albinus@gmx.de, 24150@debbugs.gnu.org, sdl.web@gmail.com
> Date: Mon, 23 Jul 2018 12:57:09 +0900
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > I was somewhat surprised to see how much
> > code you needed. We have the capability of creating parent
> > directories in 'make-directory', so I thought all we'd need for
> > creating a new file is this two-step dance:
> >
> > . call make-directory to maybe create the file's parent directory
> > . call write-region to create the file itself
> >
> > What did I miss that needs so many lines of code?
> Right. Too much dance.
> Updated the patch to follow your recomendation:
Thanks, this is much better IMO.
> +@deffn Command make-empty-file filename &optional parents
> +This command creates an empty file named @var{filename}.
> +As @code{make-directory}, this command creates parent directories
> +if @var{parents} is non-@code{nil}.
> +If @var{filename} already exists, then this command signal an error.
^^^^^^
"signals". And I would drop the "then" part, it is not needed here.
> +(defun dired--find-topmost-parent-dir (filename)
> + "Return the topmost nonexistent parent dir of FILENAME.
> +FILENAME is a full file name."
> + (let ((try filename) new)
> + (while (and try (not (file-exists-p try)) (not (equal new try)))
> + (setq new try
> + try (directory-file-name (file-name-directory try))))
> + new))
What is the purpose of using this function in dired-create-empty-file?
What you do with the result of this function doesn't seem to be
reflected in the doc string of dired-create-empty-file.
> +(defun make-empty-file (filename &optional parents)
> + "Create an empty file FILENAME.
> +Optional arg PARENTS, if non-nil then creates parent dirs as needed.
"Optional arg PARENTS, if non-nil, means create parent dirs as needed."
> +If called interactively, then PARENTS is non-nil."
> + (interactive
> + (let ((filename (read-file-name "Create empty file: ")))
> + (list filename t)))
> + (let ((paren-dir (file-name-directory filename)))
> + (when paren-dir (make-directory paren-dir parents)))
> + (if (and (file-exists-p filename) (null parents))
> + (signal 'file-already-exists `("File exists" ,filename) )
Shouldn't we check for file existing before creating the missing
parent directories?
Thanks.
next prev parent reply other threads:[~2018-07-27 8:39 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-04 13:25 bug#24150: 25.1.50; New command: dired-create-empty-file Tino Calancha
2016-08-04 13:54 ` Clément Pit--Claudel
2016-08-04 16:29 ` Leo Liu
2016-08-04 17:13 ` Ted Zlatanov
2016-08-04 17:29 ` Drew Adams
2016-08-05 6:03 ` Tino Calancha
2016-08-05 14:48 ` Drew Adams
2016-08-06 12:38 ` Tino Calancha
2016-08-05 6:07 ` Tino Calancha
2017-05-03 8:23 ` Tino Calancha
2017-07-03 4:51 ` bug#24150: 26.0.50; " Tino Calancha
2017-07-03 14:24 ` Eli Zaretskii
2017-07-03 15:04 ` Tino Calancha
2017-07-03 16:33 ` Eli Zaretskii
2017-07-03 20:18 ` Thien-Thi Nguyen
2017-07-07 13:13 ` Ted Zlatanov
2017-07-07 13:17 ` Drew Adams
2017-07-07 13:31 ` Ted Zlatanov
2017-07-03 15:12 ` Drew Adams
2017-07-05 18:28 ` Eli Zaretskii
2017-07-05 19:34 ` Drew Adams
2017-07-07 5:36 ` Tino Calancha
2017-07-07 11:11 ` Drew Adams
2018-07-10 7:01 ` Tino Calancha
2018-07-10 7:42 ` Phil Sainty
2018-07-17 7:39 ` Tino Calancha
2018-07-20 9:03 ` Eli Zaretskii
2018-07-23 3:57 ` Tino Calancha
2018-07-27 8:39 ` Eli Zaretskii [this message]
2018-07-31 4:47 ` Tino Calancha
2018-07-31 16:20 ` Eli Zaretskii
2018-08-01 5:16 ` Tino Calancha
2018-08-01 6:24 ` Eli Zaretskii
2018-08-01 7:13 ` Tino Calancha
2018-08-01 8:56 ` Eli Zaretskii
2018-08-01 9:31 ` Tino Calancha
2018-08-01 11:45 ` Eli Zaretskii
2018-08-02 4:34 ` Tino Calancha
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83r2jprs1h.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=24150@debbugs.gnu.org \
--cc=clement.pit@gmail.com \
--cc=michael.albinus@gmx.de \
--cc=psainty@orcon.net.nz \
--cc=sdl.web@gmail.com \
--cc=tino.calancha@gmail.com \
--cc=tzz@lifelogs.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).