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

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

[elpa] externals/denote 75cbaaf3a1 6/6: Merge pull request #88 from jean


From: ELPA Syncer
Subject: [elpa] externals/denote 75cbaaf3a1 6/6: Merge pull request #88 from jeanphilippegg/cleanup
Date: Fri, 12 Aug 2022 23:57:30 -0400 (EDT)

branch: externals/denote
commit 75cbaaf3a151a714f4ec06dda5b66f3d812f41a7
Merge: 16e67cba93 fe4bd822fd
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #88 from jeanphilippegg/cleanup
    
    Remove some unused variables and functions
---
 denote.el | 190 ++++++++++++++++++++++++++++++++------------------------------
 1 file changed, 99 insertions(+), 91 deletions(-)

diff --git a/denote.el b/denote.el
index cb7b27a779..59ed2ad722 100644
--- a/denote.el
+++ b/denote.el
@@ -562,18 +562,28 @@ output is sorted with `string-lessp'."
 
 ;;;; Front matter or content retrieval functions
 
-(defconst denote--retrieve-id-front-matter-key-regexp
-  "^.?.?\\b\\(?:identifier\\)\\s-*[:=]"
-  "Regular expression for identifier key.")
+(defun denote--title-key-regexp (file-type)
+  "Return the title key regexp associated to FILE-TYPE."
+  (cond ((or (eq file-type 'markdown-yaml) (eq file-type 'text))
+         "^title\\s-*:")
+        ((eq file-type 'org)
+         "^#+title\\s-*:")
+        ((eq file-type 'markdown-toml)
+         "^title\\s-*=")))
+
+(defun denote--keywords-key-regexp (file-type)
+  "Return the keywords key regexp associated to FILE-TYPE."
+  (cond ((or (eq file-type 'markdown-yaml) (eq file-type 'text))
+         "^tags\\s-*:")
+        ((eq file-type 'org)
+         "^#+filetags\\s-*:")
+        ((eq file-type 'markdown-toml)
+         "^tags\\s-*=")))
 
 (defconst denote--retrieve-title-front-matter-key-regexp
   "^\\(?:#\\+\\)?\\(?:title\\)\\s-*[:=]"
   "Regular expression for title key.")
 
-(defconst denote--retrieve-date-front-matter-key-regexp
-  "^\\(?:#\\+\\)?\\(?:date\\)\\s-*[:=]"
-  "Regular expression for date key.")
-
 (defconst denote--retrieve-keywords-front-matter-key-regexp
   "^\\(?:#\\+\\)?\\(?:tags\\|filetags\\)\\s-*[:=]"
   "Regular expression for keywords key.")
@@ -586,9 +596,8 @@ output is sorted with `string-lessp'."
         (match-string 0 file))
     (error "Cannot find `%s' as a file" file)))
 
-(defun denote--retrieve-search (file key-regexp &optional key)
-  "Return value of KEY-REGEXP key in current buffer from FILE.
-If optional KEY is non-nil, return the key instead."
+(defun denote--retrieve-search (file key-regexp)
+  "Return value of KEY-REGEXP key in current buffer from FILE."
   ;; NOTE 2022-08-11: The `or' is superfluous, but I am keeping it as a
   ;; reminder.  See TODO comment above `denote--only-note-p'
   (when (or (denote--writable-and-supported-p file)
@@ -600,36 +609,24 @@ If optional KEY is non-nil, return the key instead."
           (widen)
           (goto-char (point-min))
           (when (re-search-forward key-regexp nil t 1)
-            (if key
-                (match-string-no-properties 0)
-              (let ((trims "[ \t\n\r\"']+"))
-                (string-trim
-                 (buffer-substring-no-properties (point) (point-at-eol))
-                 trims trims)))))))))
-
-(defun denote--retrieve-value-title (file &optional key)
-  "Return title value from FILE.
-If optional KEY is non-nil, return the key instead."
-  (denote--retrieve-search
-   file
-   denote--retrieve-title-front-matter-key-regexp
-   key))
+            (let ((trims "[ \t\n\r\"']+"))
+              (string-trim
+               (buffer-substring-no-properties (point) (point-at-eol))
+               trims trims))))))))
 
-(defun denote--retrieve-value-date (file &optional key)
-  "Return date value from FILE.
+(defun denote--retrieve-value-title (file file-type)
+  "Return title value from FILE according to FILE-TYPE.
 If optional KEY is non-nil, return the key instead."
   (denote--retrieve-search
    file
-   denote--retrieve-date-front-matter-key-regexp
-   key))
+   (denote--title-key-regexp file-type)))
 
-(defun denote--retrieve-value-keywords (file &optional key)
-  "Return keywords value from FILE.
+(defun denote--retrieve-value-keywords (file file-type)
+  "Return keywords value from FILE according to FILE-TYPE.
 If optional KEY is non-nil, return the key instead."
   (denote--retrieve-search
    file
-   denote--retrieve-keywords-front-matter-key-regexp
-   key))
+   (denote--keywords-key-regexp file-type)))
 
 (defun denote--retrieve-read-file-prompt ()
   "Prompt for regular file in variable `denote-directory'."
@@ -703,10 +700,11 @@ Apply `downcase' to KEYWORDS."
      ((eq type 'org)
       (format ":%s:" (string-join kw ":"))))))
 
-(defun denote--front-matter-keywords-to-list (file)
+(defun denote--front-matter-keywords-to-list (file file-type)
   "Return keywords from front matter of FILE as list of strings.
-This is the reverse operation of `denote--format-front-matter-keywords'."
-  (when-let ((keywords (denote--retrieve-value-keywords file)))
+FILE-TYPE is used to retrieve the keywords. This is the reverse
+operation of `denote--format-front-matter-keywords'."
+  (when-let ((keywords (denote--retrieve-value-keywords file file-type)))
     (split-string keywords "[:,\s]+" t "[][ \"']+")))
 
 ;; TODO 2022-08-10: These are `defvar' and not `defcustom' because
@@ -1109,8 +1107,7 @@ set to \\='(template title keywords)."
   "Return likely file type of FILE.
 The return value is for `denote--format-front-matter'."
   (pcase (file-name-extension file)
-    ("md" (if-let ((title-key (denote--retrieve-value-title file t))
-                   ((string-match-p "title\\s-*=" title-key)))
+    ("md" (if (denote--regexp-in-file-p "^title\\s-*" file)
               'markdown-toml
             'markdown-yaml))
     ("txt" 'text)
@@ -1153,32 +1150,33 @@ Update Dired buffers if the file is renamed."
     (rename-file old-name new-name nil)
     (denote--rename-buffer old-name new-name)))
 
-(defun denote--add-front-matter (file title keywords id)
+(defun denote--add-front-matter (file title keywords id file-type)
   "Prepend front matter to FILE if `denote--only-note-p'.
-The TITLE, KEYWORDS and ID are passed from the renaming
-command and are used to construct a new front matter block if
-appropriate."
+The TITLE, KEYWORDS ID, and FILE-TYPE are passed from the
+renaming command and are used to construct a new front matter
+block if appropriate."
   (when-let* (((denote--only-note-p file))
-              (filetype (denote--filetype-heuristics file))
-              (date (denote--date (date-to-time id) filetype))
-              (new-front-matter (denote--format-front-matter title date 
keywords id filetype)))
+              (date (denote--date (date-to-time id) file-type))
+              (new-front-matter (denote--format-front-matter title date 
keywords id file-type)))
     (with-current-buffer (find-file-noselect file)
       (goto-char (point-min))
       (insert new-front-matter))))
 
 (defun denote--regexp-in-file-p (regexp file)
   "Return t if REGEXP matches in the FILE."
-  (with-current-buffer (find-file-noselect file)
+  (with-temp-buffer
+    (insert-file-contents file)
     (save-excursion
       (save-restriction
         (widen)
         (goto-char (point-min))
         (re-search-forward regexp nil t 1)))))
 
-(defun denote--edit-front-matter-p (file)
+(defun denote--edit-front-matter-p (file file-type)
   "Test if FILE should be subject to front matter rewrite.
-This is relevant for operations that insert or rewrite the front
-matter in a Denote note.
+Use FILE-TYPE to look for the front matter lines. This is
+relevant for operations that insert or rewrite the front matter
+in a Denote note.
 
 For the purposes of this test, FILE is a Denote note when it (i)
 is a regular file, (ii) is writable, (iii) has a supported file
@@ -1188,11 +1186,11 @@ variable `denote-directory'."
        (not (denote--file-empty-p file))
        ;; Heuristic to check if this is one of our notes
        (string-prefix-p (denote-directory) (expand-file-name file)) ; FIXME 
2022-08-11: Why do we need this?
-       (denote--regexp-in-file-p 
denote--retrieve-title-front-matter-key-regexp file)
-       (denote--regexp-in-file-p 
denote--retrieve-keywords-front-matter-key-regexp file)))
+       (denote--regexp-in-file-p (denote--title-key-regexp file-type) file)
+       (denote--regexp-in-file-p (denote--title-key-regexp file-type) file)))
 
-(defun denote--rewrite-keywords (file keywords)
-  "Rewrite KEYWORDS in FILE outright.
+(defun denote--rewrite-keywords (file keywords file-type)
+  "Rewrite KEYWORDS in FILE outright according to FILE-TYPE.
 
 Do the same as `denote--rewrite-front-matter' for keywords,
 but do not ask for confirmation.
@@ -1200,7 +1198,7 @@ but do not ask for confirmation.
 This is for use in `denote-dired-rename-marked-files' or related.
 Those commands ask for confirmation once before performing an
 operation on multiple files."
-  (when-let ((old-keywords (denote--retrieve-value-keywords file))
+  (when-let ((old-keywords (denote--retrieve-value-keywords file file-type))
              (new-keywords (denote--format-front-matter-keywords
                             keywords (denote--filetype-heuristics file))))
     (with-current-buffer (find-file-noselect file)
@@ -1208,20 +1206,20 @@ operation on multiple files."
         (save-restriction
           (widen)
           (goto-char (point-min))
-          (re-search-forward denote--retrieve-keywords-front-matter-key-regexp 
nil t 1)
+          (re-search-forward (denote--keywords-key-regexp file-type) nil t 1)
           (search-forward old-keywords nil t 1)
           (replace-match (concat "\\1" new-keywords) t))))))
 
 ;; FIXME 2022-07-25: We should make the underlying regular expressions
 ;; that `denote--retrieve-value-title' targets more refined, so that we
 ;; capture eveyrhing at once.
-(defun denote--rewrite-front-matter (file title keywords)
+(defun denote--rewrite-front-matter (file title keywords file-type)
   "Rewrite front matter of note after `denote-dired-rename-file'.
-The FILE, TITLE, and KEYWORDS are passed from the renaming
-command and are used to construct new front matter values if
-appropriate."
-  (when-let ((old-title (denote--retrieve-value-title file))
-             (old-keywords (denote--retrieve-value-keywords file))
+The FILE, TITLE, KEYWORDS, and FILE-TYPE are passed from the
+renaming command and are used to construct new front matter
+values if appropriate."
+  (when-let ((old-title (denote--retrieve-value-title file file-type))
+             (old-keywords (denote--retrieve-value-keywords file file-type))
              (new-title title)
              (new-keywords (denote--format-front-matter-keywords
                             keywords (denote--filetype-heuristics file))))
@@ -1236,11 +1234,11 @@ appropriate."
           (save-restriction
             (widen)
             (goto-char (point-min))
-            (re-search-forward denote--retrieve-title-front-matter-key-regexp 
nil t 1)
+            (re-search-forward (denote--title-key-regexp file-type) nil t 1)
             (search-forward old-title nil t 1)
             (replace-match (concat "\\1" new-title) t)
             (goto-char (point-min))
-            (re-search-forward 
denote--retrieve-keywords-front-matter-key-regexp nil t 1)
+            (re-search-forward (denote--keywords-key-regexp file-type) nil t 1)
             (search-forward old-keywords nil t 1)
             (replace-match (concat "\\1" new-keywords) t)))))))
 
@@ -1328,24 +1326,26 @@ since we already have all the requisite mechanisms in
 place (though Denote does not---and will not---manage such
 files)."
   (interactive
-   (let ((file (denote--rename-dired-file-or-prompt)))
+   (let* ((file (denote--rename-dired-file-or-prompt))
+          (file-type (denote--filetype-heuristics file)))
      (list
       file
       (denote--title-prompt
-       (or (denote--retrieve-value-title file) (file-name-base file)))
+       (or (denote--retrieve-value-title file file-type) (file-name-base 
file)))
       (denote--keywords-prompt))))
   (let* ((dir (file-name-directory file))
          (id (denote--file-name-id file))
          (extension (file-name-extension file t))
+         (file-type (denote--filetype-heuristics file))
          (new-name (denote--format-file
                     dir id keywords (denote--sluggify title) extension))
          (max-mini-window-height 0.33)) ; allow minibuffer to be resized
     (when (denote--rename-file-prompt file new-name)
       (denote--rename-file file new-name)
       (denote-update-dired-buffers)
-      (if (denote--edit-front-matter-p new-name)
-          (denote--rewrite-front-matter new-name title keywords)
-        (denote--add-front-matter new-name title keywords id)))))
+      (if (denote--edit-front-matter-p new-name file-type)
+          (denote--rewrite-front-matter new-name title keywords file-type)
+        (denote--add-front-matter new-name title keywords id file-type)))))
 
 (define-obsolete-function-alias
   'denote-dired-rename-file-and-add-front-matter
@@ -1398,15 +1398,16 @@ The operation does the following:
         (dolist (file marks)
           (let* ((dir (file-name-directory file))
                  (id (denote--file-name-id file))
-                 (title (or (denote--retrieve-value-title file)
+                 (file-type (denote--filetype-heuristics file))
+                 (title (or (denote--retrieve-value-title file file-type)
                             (file-name-base file)))
                  (extension (file-name-extension file t))
                  (new-name (denote--format-file
                             dir id keywords (denote--sluggify title) 
extension)))
             (denote--rename-file file new-name)
-            (if (denote--edit-front-matter-p new-name)
-                (denote--rewrite-keywords new-name keywords)
-              (denote--add-front-matter new-name title keywords id))))
+            (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))))
         (revert-buffer))
     (user-error "No marked files; aborting")))
 
@@ -1434,8 +1435,9 @@ typos and the like."
   (interactive (list (buffer-file-name)))
   (when (buffer-modified-p)
     (user-error "Save buffer before proceeding"))
-  (if-let* ((title (denote--retrieve-value-title file))
-            (keywords (denote--front-matter-keywords-to-list file))
+  (if-let* ((file-type (denote--filetype-heuristics file))
+            (title (denote--retrieve-value-title file file-type))
+            (keywords (denote--front-matter-keywords-to-list file file-type))
             (extension (file-name-extension file t))
             (id (denote--file-name-id file))
             (dir (file-name-directory file))
@@ -1485,8 +1487,9 @@ their respective front matter."
         (dolist (file marks)
           (let* ((dir (file-name-directory file))
                  (id (denote--file-name-id file))
-                 (title (denote--retrieve-value-title file))
-                 (keywords (denote--front-matter-keywords-to-list file))
+                 (file-type (denote--filetype-heuristics file))
+                 (title (denote--retrieve-value-title file file-type))
+                 (keywords (denote--front-matter-keywords-to-list file 
file-type))
                  (extension (file-name-extension file t))
                  (new-name (denote--format-file
                             dir id keywords (denote--sluggify title) 
extension)))
@@ -1530,7 +1533,8 @@ relevant front matter."
     (buffer-file-name)
     (denote--title-prompt)
     (denote--keywords-prompt)))
-  (denote--add-front-matter file title keywords (denote--file-name-id file)))
+  (denote--add-front-matter file title keywords (denote--file-name-id file)
+                            (denote--filetype-heuristics file)))
 
 ;;;; The Denote faces
 
@@ -1765,9 +1769,10 @@ title."
 
 (defun denote-link--format-link (file pattern)
   "Prepare link to FILE using PATTERN."
-  (let ((file-id (denote--retrieve-filename-identifier file))
-        (file-title (unless (string= pattern denote-link--format-id-only)
-                      (denote--retrieve-value-title file))))
+  (let* ((file-id (denote--retrieve-filename-identifier file))
+         (file-type (denote--filetype-heuristics file))
+         (file-title (unless (string= pattern denote-link--format-id-only)
+                       (denote--retrieve-value-title file file-type))))
     (format pattern file-id file-title)))
 
 ;;;###autoload
@@ -1975,7 +1980,8 @@ default, it will show up below the current window."
   (interactive)
   (let* ((file (buffer-file-name))
          (id (denote--retrieve-filename-identifier file))
-         (title (denote--retrieve-value-title file)))
+         (file-type (denote--filetype-heuristics file))
+         (title (denote--retrieve-value-title file file-type)))
     (if-let ((files (denote--retrieve-process-grep id)))
         (denote-link--prepare-backlinks id files title)
       (user-error "No links to the current note"))))
@@ -2241,13 +2247,15 @@ Consult the manual for template samples."
 
 ;;;; For the migration of old Org filetags
 
-(defun denote--migrate-type-files (type)
+(defun denote--migrate-type-files (type file-type)
   "Return list of TYPE files in variable `denote-directory'.
-TYPE is a string which matches the `file-name-extension'."
+TYPE is a string which matches the `file-name-extension'.
+FILE-TYPE is the symbol file-type."
   (delq nil
         (mapcar
          (lambda (file)
-           (when-let* ((value (denote--retrieve-value-keywords file))
+           (when-let* ((value (denote--retrieve-value-keywords
+                               file file-type))
                        ((string-match-p "\s\s" value)))
              file))
          (seq-remove
@@ -2283,11 +2291,11 @@ shall be deprecated and eventually removed from future 
versions
 of Denote.  Written on 2022-08-10 for version 0.5.0."
   (interactive)
   (when-let (((yes-or-no-p "Rewrite filetags in Org files to use colons 
(buffers are NOT saved)?"))
-             (files (denote--migrate-type-files "org")))
+             (files (denote--migrate-type-files "org" 'org)))
     (dolist (file files)
-      (when-let* ((kw (denote--front-matter-keywords-to-list file))
-                  ((denote--edit-front-matter-p file)))
-        (denote--rewrite-keywords file kw)))))
+      (when-let* ((kw (denote--front-matter-keywords-to-list file 'org))
+                  ((denote--edit-front-matter-p file 'org)))
+        (denote--rewrite-keywords file kw 'org)))))
 
 ;;;###autoload
 (defun denote-migrate-old-markdown-yaml-tags ()
@@ -2314,11 +2322,11 @@ shall be deprecated and eventually removed from future 
versions
 of Denote.  Written on 2022-08-10 for version 0.5.0."
   (interactive)
   (when-let (((yes-or-no-p "Rewrite filetags in Org files to use colons 
(buffers are NOT saved)?"))
-             (files (denote--migrate-type-files "md")))
+             (files (denote--migrate-type-files "md" 'markdown-yaml)))
     (dolist (file files)
-      (when-let* ((kw (denote--front-matter-keywords-to-list file))
-                  ((denote--edit-front-matter-p file)))
-        (denote--rewrite-keywords file kw)))))
+      (when-let* ((kw (denote--front-matter-keywords-to-list file 
'markdown-yaml))
+                  ((denote--edit-front-matter-p file 'markdown-yaml)))
+        (denote--rewrite-keywords file kw 'markdown-yaml)))))
 
 (provide 'denote)
 ;;; denote.el ends here



reply via email to

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