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

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

[elpa] externals/denote 7b0181835e 3/4: Merge denote-retrieve.el into de


From: ELPA Syncer
Subject: [elpa] externals/denote 7b0181835e 3/4: Merge denote-retrieve.el into denote.el
Date: Sat, 30 Jul 2022 00:57:37 -0400 (EDT)

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

    Merge denote-retrieve.el into denote.el
    
    All those are internal changes that should not concern the user.  This
    is a continuation of the work done in commit b284da5 by Jean-Philippe
    Gagné Guay, which was submitted in pull request 66 on the GitHub mirror:
    <https://github.com/protesilaos/denote/pull/66>.
---
 README.org         |   1 -
 denote-dired.el    |  20 ++++-----
 denote-link.el     |  16 +++----
 denote-retrieve.el | 127 -----------------------------------------------------
 denote.el          | 106 ++++++++++++++++++++++++++++++++++++++++----
 5 files changed, 115 insertions(+), 155 deletions(-)

diff --git a/README.org b/README.org
index f2ac83301f..0a566f4bbd 100644
--- a/README.org
+++ b/README.org
@@ -1461,7 +1461,6 @@ Everything is in place to set up the package.
 
 ;; You will not need to `require' all those individually once the
 ;; package is available.
-(require 'denote-retrieve)
 (require 'denote-link)
 
 ;; By default, we fontify backlinks in their bespoke buffer.
diff --git a/denote-dired.el b/denote-dired.el
index c77e184b08..aa04c0e651 100644
--- a/denote-dired.el
+++ b/denote-dired.el
@@ -172,7 +172,7 @@
 
 ;;; Code:
 
-(require 'denote-retrieve)
+(require 'denote)
 (require 'dired)
 
 (defgroup denote-dired ()
@@ -231,7 +231,7 @@ Return t if the file is renamed, nil otherwise."
       response)))
 
 ;; FIXME 2022-07-25: We should make the underlying regular expressions
-;; that `denote-retrieve--value-title' targets more refined, so that we
+;; that `denote--retrieve-value-title' targets more refined, so that we
 ;; capture eveyrhing at once.
 (defun denote-dired--rewrite-front-matter (file title keywords)
   "Rewrite front matter of note after `denote-dired-rename-file'.
@@ -239,8 +239,8 @@ The FILE, TITLE, and KEYWORDS are passed from the renaming
 command and are used to construct new front matter values if
 appropriate."
   (when-let ((denote--edit-front-matter-p file)
-             (old-title (denote-retrieve--value-title file))
-             (old-keywords (denote-retrieve--value-keywords file))
+             (old-title (denote--retrieve-value-title file))
+             (old-keywords (denote--retrieve-value-keywords file))
              (new-title title)
              (new-keywords (denote--file-meta-keywords
                             keywords (denote--filetype-heuristics file))))
@@ -255,11 +255,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--retrieve-title-front-matter-key-regexp 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--retrieve-keywords-front-matter-key-regexp nil t 1)
               (search-forward old-keywords nil t 1)
               (replace-match (concat "\\1" new-keywords) t)))))))
 
@@ -317,7 +317,7 @@ will not---manage such files)."
      (list
       file
       (denote--title-prompt
-       (or (denote-retrieve--value-title file)
+       (or (denote--retrieve-value-title file)
            (file-name-sans-extension (file-name-nondirectory file))))
       (denote--keywords-prompt))))
   (let* ((dir (file-name-directory file))
@@ -353,7 +353,7 @@ matter, refer to the variables:
      (list
       file
       (denote--title-prompt
-       (or (denote-retrieve--value-title file)
+       (or (denote--retrieve-value-title file)
            (file-name-sans-extension (file-name-nondirectory file))))
       (denote--keywords-prompt))))
   (let* ((dir (file-name-directory file))
@@ -405,7 +405,7 @@ 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)
+                   (title (or (denote--retrieve-value-title file)
                               (file-name-sans-extension
                                (file-name-nondirectory file))))
                    (extension (file-name-extension file t))
@@ -440,7 +440,7 @@ doc string)."
         (dolist (file marks)
           (let* ((dir (file-name-directory file))
                  (id (denote--file-name-id file))
-                 (title (or (denote-retrieve--value-title file)
+                 (title (or (denote--retrieve-value-title file)
                             (file-name-sans-extension
                              (file-name-nondirectory file))))
                  (extension (file-name-extension file t))
diff --git a/denote-link.el b/denote-link.el
index 6decc5acbb..1305566e2c 100644
--- a/denote-link.el
+++ b/denote-link.el
@@ -148,7 +148,7 @@
 
 ;;; Code:
 
-(require 'denote-retrieve)
+(require 'denote)
 
 (defgroup denote-link ()
   "Link facility for Denote."
@@ -230,9 +230,9 @@ title."
 
 (defun denote-link--format-link (file pattern)
   "Prepare link to FILE using PATTERN."
-  (let ((file-id (denote-retrieve--filename-identifier file))
+  (let ((file-id (denote--retrieve-filename-identifier file))
         (file-title (unless (string= pattern denote-link--format-id-only)
-                      (denote-retrieve--value-title file))))
+                      (denote--retrieve-value-title file))))
     (format pattern file-id file-title)))
 
 ;;;###autoload
@@ -242,7 +242,7 @@ With optional ID-ONLY, such as a universal prefix
 argument (\\[universal-argument]), insert links with just the
 identifier and no further description.  In this case, the link
 format is always [[denote:IDENTIFIER]]."
-  (interactive (list (denote-retrieve--read-file-prompt) current-prefix-arg))
+  (interactive (list (denote--retrieve-read-file-prompt) current-prefix-arg))
   (let ((beg (point)))
     (insert
      (denote-link--format-link
@@ -423,9 +423,9 @@ default, it will show up below the current window."
   (interactive)
   (let* ((default-directory (denote-directory))
          (file (buffer-file-name))
-         (id (denote-retrieve--filename-identifier file))
-         (title (denote-retrieve--value-title file)))
-    (if-let ((files (denote-retrieve--proces-grep id)))
+         (id (denote--retrieve-filename-identifier file))
+         (title (denote--retrieve-value-title file)))
+    (if-let ((files (denote--retrieve-proces-grep id)))
         (denote-link--prepare-backlinks id files title)
       (user-error "No links to the current note"))))
 
@@ -590,7 +590,7 @@ This lets the user complete a link through the 
`org-insert-link'
 interface by first selecting the `denote:' hyperlink type."
   (concat
    "denote:"
-   (denote-retrieve--filename-identifier (denote-retrieve--read-file-prompt))))
+   (denote--retrieve-filename-identifier (denote--retrieve-read-file-prompt))))
 
 (defun denote-link-ol-export (link description format)
   "Export a `denote:' link from Org files.
diff --git a/denote-retrieve.el b/denote-retrieve.el
deleted file mode 100644
index 0ce9bc2ba5..0000000000
--- a/denote-retrieve.el
+++ /dev/null
@@ -1,127 +0,0 @@
-;;; denote-retrieve.el --- Internal search functions for Denote -*- 
lexical-binding: t -*-
-
-;; Copyright (C) 2022  Free Software Foundation, Inc.
-
-;; Author: Protesilaos Stavrou <info@protesilaos.com>
-;; Maintainer: Denote Development <~protesilaos/denote@lists.sr.ht>
-;; URL: https://git.sr.ht/~protesilaos/denote
-;; Mailing-List: https://lists.sr.ht/~protesilaos/denote
-;; Version: 0.4.0
-;; Package-Requires: ((emacs "27.2"))
-
-;; This file is NOT part of GNU Emacs.
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-;;
-;; Used internally by commands that operate on file contents.
-
-;;; Code:
-
-(require 'denote)
-(require 'xref)
-
-(defconst denote-retrieve--title-front-matter-key-regexp
-  "^\\(?:#\\+\\)?\\(?:title\\)\\s-*[:=]"
-  "Regular expression for title key.")
-
-(defconst denote-retrieve--id-front-matter-key-regexp
-  "^.?.?\\b\\(?:identifier\\)\\s-*[:=]"
-  "Regular expression for identifier key.")
-
-(defconst denote-retrieve--date-front-matter-key-regexp
-  "^\\(?:#\\+\\)?\\(?:date\\)\\s-*[:=]"
-  "Regular expression for date key.")
-
-(defun denote-retrieve--filename-identifier (file)
-  "Extract identifier from FILE name."
-  (if (file-exists-p file)
-      (progn
-        (string-match denote--id-regexp file)
-        (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."
-  (when (denote--only-note-p file)
-    (with-temp-buffer
-      (insert-file-contents file)
-      (save-excursion
-        (save-restriction
-          (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))
-
-(defun denote-retrieve--value-date (file &optional key)
-  "Return date value from FILE.
-If optional KEY is non-nil, return the key instead."
-  (denote-retrieve--search file denote-retrieve--date-front-matter-key-regexp 
key))
-
-(defun denote-retrieve--value-keywords (file &optional key)
-  "Return keywords value from FILE.
-If optional KEY is non-nil, return the key instead."
-  (denote-retrieve--search file 
denote-retrieve--keywords-front-matter-key-regexp key))
-
-(defun denote-retrieve--read-file-prompt ()
-  "Prompt for regular file in variable `denote-directory'."
-  (read-file-name "Select note: " (denote-directory) nil nil nil
-                  (lambda (f) (or (denote--only-note-p f) (file-directory-p 
f)))))
-
-(defun denote-retrieve--files-in-output (files)
-  "Return list of FILES from `find' output."
-  (delq nil (mapcar (lambda (f)
-                      (when (denote--only-note-p f) f))
-                    files)))
-
-(defun denote-retrieve--xrefs (identifier)
-  "Return xrefs of IDENTIFIER in variable `denote-directory'.
-The xrefs are returned as an alist."
-  (xref--alistify
-   (xref-matches-in-files identifier (denote--directory-files :absolute))
-   (lambda (x)
-     (xref-location-group (xref-item-location x)))))
-
-(defun denote-retrieve--files-in-xrefs (xrefs)
-  "Return sorted file names sans directory from XREFS.
-Parse `denote-retrieve--xrefs'."
-  (sort
-   (delete-dups
-    (mapcar (lambda (x)
-              (denote--file-name-relative-to-denote-directory (car x)))
-            xrefs))
-   #'string-lessp))
-
-(defun denote-retrieve--proces-grep (identifier)
-  "Process lines matching IDENTIFIER and return list of files."
-  (let* ((default-directory (denote-directory))
-         (file (denote--file-name-relative-to-denote-directory 
(buffer-file-name))))
-    (denote-retrieve--files-in-output
-     (delete file (denote-retrieve--files-in-xrefs
-                   (denote-retrieve--xrefs identifier))))))
-
-(provide 'denote-retrieve)
-;;; denote-retrieve.el ends here
diff --git a/denote.el b/denote.el
index 238b308a95..f008ed938e 100644
--- a/denote.el
+++ b/denote.el
@@ -96,6 +96,7 @@
 ;;; Code:
 
 (require 'seq)
+(require 'xref)
 (eval-when-compile (require 'subr-x))
 
 (defgroup denote ()
@@ -522,12 +523,102 @@ output is sorted with `string-lessp'."
           (add-to-history 'denote--keyword-history kw))
         (delete-dups keywords)))
 
-;;;; Front matter retrieval functions
+;;;; Front matter or content retrieval functions
 
-(defconst denote-retrieve--keywords-front-matter-key-regexp
+(defconst denote--retrieve-id-front-matter-key-regexp
+  "^.?.?\\b\\(?:identifier\\)\\s-*[:=]"
+  "Regular expression for identifier key.")
+
+(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.")
 
+(defun denote--retrieve-filename-identifier (file)
+  "Extract identifier from FILE name."
+  (if (file-exists-p file)
+      (progn
+        (string-match denote--id-regexp file)
+        (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."
+  (when (denote--only-note-p file)
+    (with-temp-buffer
+      (insert-file-contents file)
+      (save-excursion
+        (save-restriction
+          (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))
+
+(defun denote--retrieve-value-date (file &optional key)
+  "Return date value from FILE.
+If optional KEY is non-nil, return the key instead."
+  (denote--retrieve-search file denote--retrieve-date-front-matter-key-regexp 
key))
+
+(defun denote--retrieve-value-keywords (file &optional key)
+  "Return keywords value from FILE.
+If optional KEY is non-nil, return the key instead."
+  (denote--retrieve-search file 
denote--retrieve-keywords-front-matter-key-regexp key))
+
+(defun denote--retrieve-read-file-prompt ()
+  "Prompt for regular file in variable `denote-directory'."
+  (read-file-name "Select note: " (denote-directory) nil nil nil
+                  (lambda (f) (or (denote--only-note-p f) (file-directory-p 
f)))))
+
+(defun denote--retrieve-files-in-output (files)
+  "Return list of FILES from `find' output."
+  (delq nil (mapcar (lambda (f)
+                      (when (denote--only-note-p f) f))
+                    files)))
+
+(defun denote--retrieve-xrefs (identifier)
+  "Return xrefs of IDENTIFIER in variable `denote-directory'.
+The xrefs are returned as an alist."
+  (xref--alistify
+   (xref-matches-in-files identifier (denote--directory-files :absolute))
+   (lambda (x)
+     (xref-location-group (xref-item-location x)))))
+
+(defun denote--retrieve-files-in-xrefs (xrefs)
+  "Return sorted file names sans directory from XREFS.
+Parse `denote--retrieve-xrefs'."
+  (sort
+   (delete-dups
+    (mapcar (lambda (x)
+              (denote--file-name-relative-to-denote-directory (car x)))
+            xrefs))
+   #'string-lessp))
+
+(defun denote--retrieve-proces-grep (identifier)
+  "Process lines matching IDENTIFIER and return list of files."
+  (let* ((default-directory (denote-directory))
+         (file (denote--file-name-relative-to-denote-directory 
(buffer-file-name))))
+    (denote--retrieve-files-in-output
+     (delete file (denote--retrieve-files-in-xrefs
+                   (denote--retrieve-xrefs identifier))))))
+
 ;;;; New note
 
 ;;;;; Common helpers for new notes
@@ -587,7 +678,7 @@ treatment)."
 (defun denote--extract-keywords-from-front-matter (file &optional type)
   "Extract keywords from front matter of FILE with TYPE.
 This is the reverse operation of `denote--file-meta-keywords'."
-  (let ((fm-keywords (denote-retrieve--value-keywords file)))
+  (let ((fm-keywords (denote--retrieve-value-keywords file)))
     (if (or (eq type 'markdown-toml) (eq type 'markdown-yaml) (eq type 'md))
         (split-string
          (string-trim-right (string-trim-left fm-keywords "\\[") "\\]")
@@ -969,14 +1060,11 @@ This is equivalent to calling `denote' when 
`denote-prompts' is set to
 
 ;;;;; Common helpers for note modifications
 
-(declare-function denote-retrieve--value-title "denote-retrieve" (file 
&optional key))
-(declare-function denote-retrieve--value-keywords "denote-retrieve" (file 
&optional key))
-
 (defun denote--filetype-heuristics (file)
   "Return likely file type of FILE.
 The return value is for `denote--file-meta-header'."
   (pcase (file-name-extension file)
-    ("md" (if-let ((title-key (denote-retrieve--value-title file t))
+    ("md" (if-let ((title-key (denote--retrieve-value-title file t))
                    ((string-match-p "title\\s-*=" title-key)))
               'markdown-toml
             'markdown-yaml))
@@ -1058,7 +1146,7 @@ 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 ((denote--edit-front-matter-p file)
-             (old-keywords (denote-retrieve--value-keywords file))
+             (old-keywords (denote--retrieve-value-keywords file))
              (new-keywords (denote--file-meta-keywords
                             keywords (denote--filetype-heuristics file))))
     (with-current-buffer (find-file-noselect file)
@@ -1066,7 +1154,7 @@ 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--retrieve-keywords-front-matter-key-regexp 
nil t 1)
           (search-forward old-keywords nil t 1)
           (replace-match (concat "\\1" new-keywords) t))))))
 



reply via email to

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