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

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

[elpa] externals/denote 4b4623ec74 1/2: Add helper to return title for r


From: ELPA Syncer
Subject: [elpa] externals/denote 4b4623ec74 1/2: Add helper to return title for renaming
Date: Mon, 15 Aug 2022 04:57:41 -0400 (EDT)

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

    Add helper to return title for renaming
---
 denote.el | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/denote.el b/denote.el
index ac659d9a0b..8578a55452 100644
--- a/denote.el
+++ b/denote.el
@@ -787,6 +787,13 @@ contain the newline."
         (match-string 0 file))
     (error "Cannot find `%s' as a file" file)))
 
+(defun denote--retrieve-filename-title (file)
+  "Extract title from FILE name."
+  (when (file-exists-p file)
+    (progn
+      (string-match denote--title-regexp file)
+      (match-string 1 file))))
+
 (defun denote--retrieve-title-value (file file-type)
   "Return title value from FILE according to FILE-TYPE."
   ;; NOTE 2022-08-11: The `or' is superfluous, but I am keeping it as a
@@ -1414,6 +1421,15 @@ Throw error is FILE is not regular, else return FILE."
              (propertize (file-name-nondirectory old-name) 'face 'error)
              (propertize (file-name-nondirectory new-name) 'face 'success)))))
 
+(defun denote--rename-return-title (file type)
+  "Return appropriate title for FILE given its TYPE."
+  (cond
+   ((denote--only-note-p file)
+    (denote--retrieve-title-value file type))
+   ((denote--file-has-identifier-p file)
+    (denote--retrieve-filename-title file))
+   (t (file-name-base file))))
+
 ;;;###autoload
 (defun denote-rename-file (file title keywords)
   "Rename file and update existing front matter if appropriate.
@@ -1476,7 +1492,7 @@ files)."
      (list
       file
       (denote--title-prompt
-       (or (denote--retrieve-title-value file file-type) (file-name-base 
file)))
+       (denote--rename-return-title file file-type))
       (denote--keywords-prompt))))
   (let* ((dir (file-name-directory file))
          (id (denote--file-name-id file))
@@ -1544,8 +1560,7 @@ The operation does the following:
           (let* ((dir (file-name-directory file))
                  (id (denote--file-name-id file))
                  (file-type (denote--filetype-heuristics file))
-                 (title (or (denote--retrieve-title-value file file-type)
-                            (file-name-base file)))
+                 (title (denote--rename-return-title file file-type))
                  (extension (file-name-extension file t))
                  (new-name (denote--format-file
                             dir id keywords (denote--sluggify title) 
extension)))



reply via email to

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