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

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

[elpa] externals/denote e4d070e028 6/9: Merge pull request #293 from jea


From: ELPA Syncer
Subject: [elpa] externals/denote e4d070e028 6/9: Merge pull request #293 from jeanphilippegg/renaming-commands
Date: Mon, 18 Mar 2024 03:57:51 -0400 (EDT)

branch: externals/denote
commit e4d070e028c6941809f6a33ee147b130381e2402
Merge: e94cc50fd4 11396de4c9
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #293 from jeanphilippegg/renaming-commands
    
    Renaming commands
---
 README.org |   6 ----
 denote.el  | 108 +++++++++++++++++++++++++++++--------------------------------
 2 files changed, 51 insertions(+), 63 deletions(-)

diff --git a/README.org b/README.org
index 129e995d5f..71ed68a1e0 100644
--- a/README.org
+++ b/README.org
@@ -1224,12 +1224,6 @@ The command does the same for the =SIGNATURE= prompt, 
subject to
 ~denote-prompts~, by prefilling the minibuffer with the current
 signature of =FILE=, if any.
 
-In interactive use, if =FILE= has a signature, ~denote-rename-file~
-produces a =SIGNATURE= prompt regardless of the value of ~denote-prompts~.
-This way, notes created with the ~denote-signature~ command, or
-equivalent, as a derogation from the norm imposed by ~denote-prompt~,
-do not necessarily lose their signature.
-
 Same principle for the =KEYWORDS= prompt: it converts the keywords in
 the file name into a comma-separated string and prefills the minibuffer
 with it (the =KEYWORDS= prompt accepts more than one keywords, each
diff --git a/denote.el b/denote.el
index 329e288664..c7ddec5df5 100644
--- a/denote.el
+++ b/denote.el
@@ -155,14 +155,14 @@ saved automatically."
   :package-version '(denote . "2.3.0")
   :type 'boolean)
 
-;;;###autoload (put 'denote-known-keywords 'safe-local-variable (lambda (val) 
(or (listp val) (null val))))
+;;;###autoload (put 'denote-known-keywords 'safe-local-variable #'listp)
 (defcustom denote-known-keywords
   '("emacs" "philosophy" "politics" "economics")
   "List of strings with predefined keywords for `denote'.
 Also see user options: `denote-infer-keywords',
 `denote-sort-keywords', `denote-file-name-slug-functions'."
   :group 'denote
-  :safe (lambda (val) (or (listp val) (null val)))
+  :safe #'listp
   :package-version '(denote . "0.1.0")
   :type '(repeat string))
 
@@ -2768,14 +2768,9 @@ minibuffer that consists of the current title of FILE.  
The
 current title is either retrieved from the front matter (such as
 the #+title in Org) or from the file name.
 
-Do the same for the SIGNATURE prompt, subject to `denote-prompts', by
-prefilling the minibuffer with the current signature of FILE, if any.
-
-In interactive use, if FILE has a signature, produce a SIGNATURE prompt
-regardless of the value of `denote-prompts'.  This way, notes created
-with the `denote-signature' command, or equivalent, as a derogation from
-the norm imposed by `denote-prompt', do not necessarily lose their
-signature.
+Do the same for the SIGNATURE prompt, subject to `denote-prompts',
+by prefilling the minibuffer with the current signature of FILE,
+if any.
 
 Same principle for the KEYWORDS prompt: convert the keywords in
 the file name into a comma-separated string and prefill the
@@ -2846,29 +2841,28 @@ one-by-one, use `denote-dired-rename-files'."
    (let* ((file (denote--rename-dired-file-or-prompt))
           (file-type (denote-filetype-heuristics file))
           (file-in-prompt (propertize (file-relative-name file) 'face 
'denote-faces-prompt-current-name))
-          (args (make-vector 4 nil)))
+          (date nil)
+          (title (denote-retrieve-title-or-filename file file-type))
+          (keywords (denote-convert-file-name-keywords-to-crm (or 
(denote-retrieve-filename-keywords file) "")))
+          (signature (or (denote-retrieve-filename-signature file) "")))
      (dolist (prompt denote-prompts)
        (pcase prompt
          ('title
-          (aset args 0 (denote-title-prompt
-                        (denote-retrieve-title-or-filename file file-type)
-                        (format "Rename `%s' with TITLE (empty to remove)" 
file-in-prompt))))
+          (setq title (denote-title-prompt
+                       title
+                       (format "Rename `%s' with TITLE (empty to remove)" 
file-in-prompt))))
          ('keywords
-          (aset args 1 (denote-keywords-prompt
-                        (format "Rename `%s' with KEYWORDS (empty to remove)" 
file-in-prompt)
-                        (denote-convert-file-name-keywords-to-crm (or 
(denote-retrieve-filename-keywords file) "")))))
+          (setq keywords (denote-keywords-prompt
+                          (format "Rename `%s' with KEYWORDS (empty to 
remove)" file-in-prompt)
+                          keywords)))
          ('signature
-          (aset args 2 (denote-signature-prompt
-                        (or (denote-retrieve-filename-signature file) "")
-                        (format "Rename `%s' with SIGNATURE (empty to remove)" 
file-in-prompt))))
+          (setq signature (denote-signature-prompt
+                           signature
+                           (format "Rename `%s' with SIGNATURE (empty to 
remove)" file-in-prompt))))
          ('date
           (unless (denote-file-has-identifier-p file)
-            (aset args 3 (denote-date-prompt))))))
-     (when (denote-file-has-signature-p file)
-       (aset args 2 (denote-signature-prompt
-                     (or (denote-retrieve-filename-signature file) "")
-                     (format "Rename `%s' with SIGNATURE (empty to remove)" 
file-in-prompt))))
-     (append (vector file) args nil)))
+            (setq date (denote-date-prompt))))))
+     (list file title keywords signature date)))
   (let* ((dir (file-name-directory file))
          (id (or (denote-retrieve-filename-identifier file)
                  (denote-create-unique-file-identifier file 
(denote--get-all-used-ids) date)))
@@ -2901,42 +2895,42 @@ setting `denote-rename-no-confirm' to a non-nil value)."
   (interactive nil dired-mode)
   (if-let ((marks (dired-get-marked-files)))
       (let ((used-ids (unless (seq-every-p #'denote-file-has-identifier-p 
marks)
-                        (denote--get-all-used-ids)))
-            (date-p (memq 'date denote-prompts))
-            (title-p (memq 'title denote-prompts))
-            (keywords-p (memq 'keywords denote-prompts))
-            (signature-p (memq 'signature denote-prompts)))
+                        (denote--get-all-used-ids))))
         (dolist (file marks)
           (let* ((file-type (denote-filetype-heuristics file))
                  (file-in-prompt (propertize (file-relative-name file) 'face 
'denote-faces-prompt-current-name))
                  (dir (file-name-directory file))
-                 (id (or (when date-p
-                           (denote-prompt-for-date-return-id))
-                         (denote-retrieve-filename-identifier file)
+                 (id (or (denote-retrieve-filename-identifier file)
                          (denote-create-unique-file-identifier file used-ids)))
-                 (title (when title-p
-                          (denote-title-prompt
-                           (denote-retrieve-title-or-filename file file-type)
-                           (format "Rename `%s' with TITLE (empty to remove)" 
file-in-prompt))))
-                 (keywords (when keywords-p
-                             (denote-keywords-sort
-                              (denote-keywords-prompt
-                               (format "Rename `%s' with KEYWORDS (empty to 
remove)" file-in-prompt)
-                               (denote-convert-file-name-keywords-to-crm (or 
(denote-retrieve-filename-keywords file) ""))))))
-                 (signature (when (or signature-p (denote-file-has-signature-p 
file))
-                              (denote-signature-prompt
-                               (or (denote-retrieve-filename-signature file) 
"")
-                               (format "Rename `%s' with SIGNATURE (empty to 
remove)" file-in-prompt))))
-                 (extension (denote-get-file-extension file))
-                 (new-name (denote-format-file-name dir id keywords 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-front-matter new-name title keywords 
file-type :no-confirm)
-                (denote--add-front-matter new-name title keywords id file-type 
:save-buffer)))
-            (run-hooks 'denote-after-rename-file-hook)
-            (when used-ids
-              (puthash id t used-ids))))
+                 (title (denote-retrieve-title-or-filename file file-type))
+                 (keywords (denote-convert-file-name-keywords-to-crm (or 
(denote-retrieve-filename-keywords file) "")))
+                 (signature (or (denote-retrieve-filename-signature file) ""))
+                 (extension (denote-get-file-extension file)))
+            (dolist (prompt denote-prompts)
+              (pcase prompt
+                ('title
+                 (setq title (denote-title-prompt
+                              title
+                              (format "Rename `%s' with TITLE (empty to 
remove)" file-in-prompt))))
+                ('keywords
+                 (setq keywords (denote-keywords-prompt
+                                 (format "Rename `%s' with KEYWORDS (empty to 
remove)" file-in-prompt)
+                                 keywords)))
+                ('signature
+                 (setq signature (denote-signature-prompt
+                                  signature
+                                  (format "Rename `%s' with SIGNATURE (empty 
to remove)" file-in-prompt))))
+                ('date
+                 (setq id (denote-prompt-for-date-return-id)))))
+            (let ((new-name (denote-format-file-name dir id keywords 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-front-matter new-name title keywords 
file-type :no-confirm)
+                  (denote--add-front-matter new-name title keywords id 
file-type :save-buffer)))
+              (run-hooks 'denote-after-rename-file-hook)
+              (when used-ids
+                (puthash id t used-ids)))))
         (denote-update-dired-buffers))
     (user-error "No marked files; aborting")))
 



reply via email to

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