[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
- [elpa] externals/denote updated (16e67cba93 -> 75cbaaf3a1), ELPA Syncer, 2022/08/12
- [elpa] externals/denote eff882fb09 4/6: Add file-type parameter to denote--add-front-matter, ELPA Syncer, 2022/08/12
- [elpa] externals/denote fe4bd822fd 5/6: Remove the optional key parameter from denote--retrieve-search and related functions, ELPA Syncer, 2022/08/12
- [elpa] externals/denote dbe003bae7 3/6: Use with-temp-buffer instead of with-current-buffer in denote--regexp-in-file-p, ELPA Syncer, 2022/08/12
- [elpa] externals/denote 061c7013eb 2/6: Add denote--title-key-regexp and denote--keywords-key-regexp functions and use them, ELPA Syncer, 2022/08/12
- [elpa] externals/denote 75cbaaf3a1 6/6: Merge pull request #88 from jeanphilippegg/cleanup,
ELPA Syncer <=
- [elpa] externals/denote aeb8905128 1/6: Remove some unused variables and functions, ELPA Syncer, 2022/08/12