emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/denote b523f6b99d 4/4: Change double prefix meaning in


From: ELPA Syncer
Subject: [elpa] externals/denote b523f6b99d 4/4: Change double prefix meaning in denote-dired-rename-marked-files
Date: Wed, 19 Jul 2023 03:57:54 -0400 (EDT)

branch: externals/denote
commit b523f6b99d1a321dc958e8d553f6b190c0154046
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>

    Change double prefix meaning in denote-dired-rename-marked-files
    
    The command will now check for duplicate identifiers by default,
    unless the corresponding optional argument is supplied.
    
    Thanks to Vedang Manerikar and Jean-Charles Bagneris for commenting on
    this feature on the mailing list:
    
<https://lists.sr.ht/~protesilaos/denote/%3C87v8emeus0.fsf%40protesilaos.com%3E>.
---
 README.org | 79 ++++++++++++++++++++++++++++-------------------------
 denote.el  | 92 ++++++++++++++++++++++++++++++++++----------------------------
 2 files changed, 92 insertions(+), 79 deletions(-)

diff --git a/README.org b/README.org
index b8f5a7e510..2a78261052 100644
--- a/README.org
+++ b/README.org
@@ -1047,47 +1047,52 @@ not---manage such files).
 :CUSTOM_ID: h:1b6b2c78-42f0-45b8-9ef0-6de21a8b2cde
 :END:
 
+[ The optional =SKIP-FRONT-MATTER-PROMPT= and =NO-UNIQUE-ID-CHECK= are added to
+  ~denote-dired-rename-marked-files~ as part of {{{development-version}}}. ]
+
 #+findex: denote-dired-rename-marked-files
 The ~denote-dired-rename-marked-files~ command renames marked files in
-Dired to conform with our file-naming scheme.  The operation does the
-following:
+Dired to conform with our file-naming scheme.  Specifically, it does
+the following:
 
-- the file's existing file name is retained and becomes the =TITLE=
-  field, per Denote's file-naming scheme;
+- retains the file's existing name and make it the =TITLE= field, per
+  Denote's file-naming scheme;
 
-- the =TITLE= is sluggified and downcased, per our conventions;
+- downcases and sluggifies the =TITLE=, per our conventions;
 
-- an identifier is prepended to the =TITLE=;
+- prepends an identifier to the =TITLE=;
 
-- the file's extension is retained;
+- preserves the file's extension, if any;
 
-- a prompt is asked once for the =KEYWORDS= field and the input is
-  applied to all file names;
+- prompts once for =KEYWORDS= and applies the user's input to the
+  corresponding field in the file name;
 
-- if the file is recognized as a Denote note, this command adds or
-  rewrites front matter to include the new keywords.  A confirmation
-  to carry out this step is performed once at the outset, unless
-  optional =SKIP-FRONT-MATTER-PROMPT= is non-nil (such as with a
-  universal prefix argument).  Note that the affected buffers are not
-  saved.  The user can thus check them to confirm that the new front
-  matter does not cause any problems (e.g. with the command
-  ~diff-buffer-with-file~).  Multiple buffers can be saved with
-  ~save-some-buffers~ (read its doc string).  The addition of front
-  matter takes place only if the given file has the appropriate file
-  type extension (per the user option ~denote-file-type~).
+- adds or rewrites existing front matter to the underlying file, if it
+  is recognized as a Denote note (per the ~denote-file-type~ user
+  option), such that it includes the new keywords.
 
-[ The optional =SKIP-FRONT-MATTER-PROMPT= is added to
-  ~denote-dired-rename-marked-files~ as part of {{{development-version}}}. ]
+- prompts at the outset for a confirmation, unless optional
+  =SKIP-FRONT-MATTER-PROMPT= is non-nil (such as with a universal
+  prefix argument).
 
-With optional =ENSURE-UNIQUE-IDS= as a double prefix argument,
-process the file identifiers of the marked files to ensure there
-is no duplicate among them.  When renaming files in Dired, it is
-possible to produce duplicate identifiers.  This can happen when
-multiple files share the same modification time, which can be
-casually done with the ~touch~ command, ~git~, and others.
+  [ Note that the affected buffers are not saved.  Users can thus
+    check them to confirm that the new front matter does not cause any
+    problems (e.g. with the `diff-buffer-with-file' command).  Multiple
+    buffers can be saved in one go with `save-some-buffers' (read its
+    doc string). ]
 
-[ The optional =ENSURE-UNIQUE-IDS= is added to
-  ~denote-dired-rename-marked-files~ as part of {{{development-version}}}. ]
+With the optional =NO-UNIQUE-ID-CHECK= as non-nil (such as as a double
+prefix argument), it does not process the file identifiers of the
+marked files for potential duplicates.  The default is to check for
+duplicates and increment them such that they become unique.  The
+reason this optional argument exists is for those who want to speed up
+the process, perhaps because they know ahead of time all identifiers
+will be unique or do not care about them.
+
+[ When renaming files in Dired, it is possible to produce duplicate
+  identifiers.  This can happen when multiple files share the same
+  modification time, which can be casually done with the `touch'
+  command, `git', and others. ]
 
 ** Rename a single file based on its front matter
 :PROPERTIES:
@@ -4505,13 +4510,13 @@ Denote is meant to be a collective effort.  Every bit 
of help matters.
 + Ideas and/or user feedback :: Abin Simon, Aditya Yadav, Alan
   Schmitt, Alfredo Borrás, Benjamin Kästner, Colin McLear, Damien
   Cassou, Elias Storms, Federico Stilman, Florian, Frank Ehmsen, Guo
-  Yong, Hanspeter Gisler, Jack Baty, Jay Rajput, Jeremy Friesen,
-  Jonathan Sahar, Johan Bolmsjö, Juanjo Presa, Kai von Fintel, Kaushal
-  Modi, M. Hadi Timachi, Mirko Hernandez, Niall Dooley, Paul van
-  Gelder, Peter Prevos, Shreyas Ragavan, Stefan Thesing, Summer Emacs,
-  Sven Seebeck, Taoufik, Viktor Haag, Wade Mealing, Yi Liu, Ypot,
-  atanasj, doolio, drcxd, hpgisler, pRot0ta1p, rbenit68, relict007,
-  sienic, sundar bp.
+  Yong, Hanspeter Gisler, Jack Baty, Jay Rajput, Jean-Charles
+  Bagneris, Jeremy Friesen, Jonathan Sahar, Johan Bolmsjö, Juanjo
+  Presa, Kai von Fintel, Kaushal Modi, M. Hadi Timachi, Mirko
+  Hernandez, Niall Dooley, Paul van Gelder, Peter Prevos, Shreyas
+  Ragavan, Stefan Thesing, Summer Emacs, Sven Seebeck, Taoufik, Viktor
+  Haag, Wade Mealing, Yi Liu, Ypot, atanasj, doolio, drcxd, hpgisler,
+  pRot0ta1p, rbenit68, relict007, sienic, sundar bp.
 
 Special thanks to Peter Povinec who helped refine the file-naming
 scheme, which is the cornerstone of this project.
diff --git a/denote.el b/denote.el
index d430bc815c..33e1831b54 100644
--- a/denote.el
+++ b/denote.el
@@ -2379,65 +2379,73 @@ of the file.  This needs to be done manually."
         (denote--add-front-matter new-name title keywords id new-file-type)))))
 
 ;;;###autoload
-(defun denote-dired-rename-marked-files (&optional skip-front-matter-prompt 
ensure-unique-ids)
-  "Rename marked files in Dired to Denote file name.
+(defun denote-dired-rename-marked-files (&optional skip-front-matter-prompt 
no-unique-id-check)
+  "Rename marked files in Dired to a Denote file name.
 
-The operation does the following:
+Specifically, do the following:
+
+- retain the file's existing name and make it the TITLE field,
+  per Denote's file-naming scheme;
+
+- downcase and sluggify the TITLE, per our conventions;
+
+- prepend an identifier to the TITLE;
+
+- preserve the file's extension, if any;
+
+- prompt once for KEYWORDS and apply the user's input to the
+  corresponding field in the file name;
+
+- add or rewrite existing front matter to the underlying file, if
+  it is recognized as a Denote note (per `denote-file-type'),
+  such that it includes the new keywords;
 
-- the file's existing file name is retained and becomes the TITLE
-  field, per Denote's file-naming scheme;
-
-- the TITLE is sluggified and downcased, per our conventions;
-
-- an identifier is prepended to the TITLE;
-
-- the file's extension is retained;
-
-- a prompt is asked once for the KEYWORDS field and the input is
-  applied to all file names;
-
-- if the file is recognized as a Denote note, add a front matter
-  or rewrite it to include the new keywords.  A confirmation to
-  carry out this step is performed once at the outset, unless
-  optional SKIP-FRONT-MATTER-PROMPT is non-nil (such as with a
-  universal prefix argument).  Note that the affected buffers are
-  not saved.  The user can thus check them to confirm that the
-  new front matter does not cause any problems (e.g. with the
-  command `diff-buffer-with-file').  Multiple buffers can be
-  saved with `save-some-buffers' (read its doc string).  The
-  addition of front matter takes place only if the given file has
-  the appropriate file type extension (per the user option
-  `denote-file-type').
-
-With optional ENSURE-UNIQUE-IDS as a double prefix argument,
-process the file identifiers of the marked files to ensure there
-is no duplicate among them.  When renaming files in Dired, it is
-possible to produce duplicate identifiers.  This can happen when
-multiple files share the same modification time, which can be
-casually done with the `touch' command, `git', and others."
-  (interactive "P" dired-mode)
-  (when current-prefix-arg
-    (setq skip-front-matter-prompt t
-          ensure-unique-ids (when (>= (car current-prefix-arg) 16) t)))
+- prompt at the outset for a confirmation, unless optional
+  SKIP-FRONT-MATTER-PROMPT is non-nil (such as with a universal
+  prefix argument).
+
+  [ Note that the affected buffers are not saved.  Users can thus
+    check them to confirm that the new front matter does not
+    cause any problems (e.g. with the `diff-buffer-with-file'
+    command).  Multiple buffers can be saved in one go with
+    `save-some-buffers' (read its doc string). ]
+
+With the optional NO-UNIQUE-ID-CHECK as non-nil (such as as a
+double prefix argument), do not process the file identifiers of
+the marked files for potential duplicates.  The default is to
+check for duplicates and increment them such that they become
+unique.  The reason this optional argument exists is for those
+who want to speed up the process, perhaps because they know ahead
+of time all identifiers will be unique or do not care about them.
+
+[ When renaming files in Dired, it is possible to produce
+  duplicate identifiers.  This can happen when multiple files
+  share the same modification time, which can be casually done
+  with the `touch' command, `git', and others. ]"
+  (interactive
+   (list
+    (when current-prefix-arg
+      (setq skip-front-matter-prompt t
+            no-unique-id-check (when (>= (car current-prefix-arg) 16) t))))
+   dired-mode)
   (if-let ((marks (dired-get-marked-files)))
       (let ((keywords (denote-keywords-prompt)))
         (when (or skip-front-matter-prompt
                   (yes-or-no-p "Add front matter if necessary (buffers are not 
saved)?"))
           (dolist (file marks)
             (let* ((dir (file-name-directory file))
-                   (id (denote-retrieve-or-create-file-identifier file nil 
(when ensure-unique-ids marks)))
+                   (id (denote-retrieve-or-create-file-identifier file nil 
(unless no-unique-id-check marks)))
                    (signature (denote-retrieve-filename-signature file))
                    (file-type (denote-filetype-heuristics file))
                    (title (denote--retrieve-title-or-filename file file-type))
                    (extension (file-name-extension file t))
-                   (new-name (denote-format-file-name
-                              dir id keywords (denote-sluggify title) 
extension signature)))
+                   (new-name (denote-format-file-name dir id keywords 
(denote-sluggify title) extension signature)))
               (denote-rename-file-and-buffer file new-name)
               (when (denote-file-is-writable-and-supported-p new-name)
                 (if (denote--edit-front-matter-p new-name file-type)
                     (denote-rewrite-keywords new-name keywords file-type)
                   (denote--add-front-matter new-name title keywords id 
file-type)))
-              (when ensure-unique-ids
+              (unless no-unique-id-check
                 (setq marks (delete file marks))
                 (push new-name marks))))
           (revert-buffer)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]