[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/denote e6a4bac215 13/19: Reinstate macro in denote-sort
From: |
ELPA Syncer |
Subject: |
[elpa] externals/denote e6a4bac215 13/19: Reinstate macro in denote-sort.el |
Date: |
Sat, 2 Dec 2023 03:57:53 -0500 (EST) |
branch: externals/denote
commit e6a4bac215d4242531e7699d92163e73e4978897
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>
Reinstate macro in denote-sort.el
All 'denote-retrieve-filename-*' functions now do the same thing,
while the sorting algorithm is refined to account for empty strings.
See commits a44600b, b13d899.
---
denote-sort.el | 59 +++++++++++++++++++---------------------------------------
1 file changed, 19 insertions(+), 40 deletions(-)
diff --git a/denote-sort.el b/denote-sort.el
index 756ccb8c73..413173dfbf 100644
--- a/denote-sort.el
+++ b/denote-sort.el
@@ -48,48 +48,27 @@
(defvar denote-sort-components '(title keywords signature identifier)
"List of sorting keys applicable for `denote-sort-files' and related.")
-(defun denote-sort-title-lessp (file1 file2)
- "Return smallest between FILE1 and FILE2 based on their title.
+(defmacro denote-sort--define-lessp (component)
+ "Define function to sort by COMPONENT."
+ (let ((retrieve-fn (intern (format "denote-retrieve-filename-%s"
component))))
+ `(defun ,(intern (format "denote-sort-%s-lessp" component)) (file1 file2)
+ ,(format
+ "Return smallest between FILE1 and FILE2 based on their %s.
The comparison is done with `denote-sort-comparison-function' between the
two title values."
- (let ((one (denote-retrieve-filename-title file1))
- (two (denote-retrieve-filename-title file2)))
- (cond
- ((string= one (file-name-sans-extension file1))
- file2)
- ((or (string= two (file-name-sans-extension file2))
- (funcall denote-sort-comparison-function one two))
- file1)
- (t nil))))
-
-(defun denote-sort-keywords-lessp (file1 file2)
- "Return smallest between FILE1 and FILE2 based on their keywords.
-The comparison is done with `denote-sort-comparison-function' between the
-two keywords values."
- (let ((one (denote-retrieve-filename-keywords file1))
- (two (denote-retrieve-filename-keywords file2)))
- (cond
- ((and (string-empty-p one) (not (string-empty-p two))) file2)
- ((or (and (not (string-empty-p one)) (string-empty-p two))
- (funcall denote-sort-comparison-function one two))
- file1)
- (t nil))))
-
-(defun denote-sort-signature-lessp (file1 file2)
- "Return smallest between FILE1 and FILE2 based on their signature.
-The comparison is done with `denote-sort-comparison-function' between the
-two signature values."
- (let* ((one (denote-retrieve-filename-signature file1))
- (two (denote-retrieve-filename-signature file2))
- (one-empty-p (string-empty-p one))
- (two-empty-p (string-empty-p two)))
- (cond
- (one-empty-p
- nil)
- ((and (not one-empty-p) two-empty-p)
- one)
- (t
- (funcall denote-sort-comparison-function one two)))))
+ component)
+ (let* ((one (,retrieve-fn file1))
+ (two (,retrieve-fn file2))
+ (one-empty-p (string-empty-p one))
+ (two-empty-p (string-empty-p two)))
+ (cond
+ (one-empty-p nil)
+ ((and (not one-empty-p) two-empty-p) one)
+ (t (funcall denote-sort-comparison-function one two)))))))
+
+(denote-sort--define-lessp title)
+(denote-sort--define-lessp keywords)
+(denote-sort--define-lessp signature)
;;;###autoload
(defun denote-sort-files (files component &optional reverse)
- [elpa] externals/denote updated (529de46e1a -> 8ae30d4db9), ELPA Syncer, 2023/12/02
- [elpa] externals/denote fe870655a3 04/19: Add comment about denote--link-get-description-with-signature link format, ELPA Syncer, 2023/12/02
- [elpa] externals/denote 8ae30d4db9 19/19: Add faces for the files shown in various rename prompts, ELPA Syncer, 2023/12/02
- [elpa] externals/denote 1f3d3b05d6 14/19: Remove reference to obsolete denote-dired-rename-marked-files, ELPA Syncer, 2023/12/02
- [elpa] externals/denote 474c680e32 16/19: Reword a comment in the manual, ELPA Syncer, 2023/12/02
- [elpa] externals/denote e6a4bac215 13/19: Reinstate macro in denote-sort.el,
ELPA Syncer <=
- [elpa] externals/denote 57eb0b4d54 07/19: Declare 'denote-find-link' and 'denote-find-backlink' as interactive only, ELPA Syncer, 2023/12/02
- [elpa] externals/denote e0480c7953 03/19: Always omit current file from Org dynamic blocks, ELPA Syncer, 2023/12/02
- [elpa] externals/denote a44600b4fa 11/19: Refactor denote-retrieve-filename-title, ELPA Syncer, 2023/12/02
- [elpa] externals/denote 8e8cecde65 12/19: Clarify what 'denote-retrieve-filename-signature' fallback return value is, ELPA Syncer, 2023/12/02
- [elpa] externals/denote 13674e8f76 06/19: Expand the interactive spec of Org dynamic blocks to cover org-mode, ELPA Syncer, 2023/12/02
- [elpa] externals/denote 938a761ae8 09/19: Remove trailing space from denote-sort-component-prompt text, ELPA Syncer, 2023/12/02
- [elpa] externals/denote df82fcf176 01/19: Fix nil title error in denote-change-file-type-and-front-matter, ELPA Syncer, 2023/12/02
- [elpa] externals/denote ad644c88e8 02/19: Add 'omit-current' parameter to denote-sort-get-directory-files, ELPA Syncer, 2023/12/02
- [elpa] externals/denote 199609b3f3 08/19: Consolidate font-lock keywords into a single variable, ELPA Syncer, 2023/12/02
- [elpa] externals/denote 89ddd46996 15/19: Add TODOs for denote-org-capture-with-prompts, ELPA Syncer, 2023/12/02