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

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

[elpa] externals/org c0dbcf361e: org-store-link: Move already stored lin


From: ELPA Syncer
Subject: [elpa] externals/org c0dbcf361e: org-store-link: Move already stored link to front by default
Date: Sat, 15 Jul 2023 09:58:55 -0400 (EDT)

branch: externals/org
commit c0dbcf361ee317795355db4d6ad279a3f53b04e4
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>

    org-store-link: Move already stored link to front by default
    
    * lisp/ol.el (org-link-store-existing): New customization controlling
    how to deal with already stored links.
    (org-store-link): Respect the new customization, allowing duplicates
    to (1) be added anyway; (2) be ignored; (3) be moved to front of
    `org-stored-links'.  The default is (3).
    * etc/ORG-NEWS (~org-store-link~ now moves an already stored link to
    front of the ~org-stored-links~): Document the breaking change.
    
    Reported-by: Samuel Wales <samologist@gmail.com>
    Link: 
https://list.orgmode.org/orgmode/CAJcAo8sjD3_FX5pFQ4git9wRDNM3bMqTgP-R5mM8zcf1B3mjPg@mail.gmail.com/
---
 etc/ORG-NEWS | 15 +++++++++++++++
 lisp/ol.el   | 36 +++++++++++++++++++++++++++++-------
 2 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index a4725ae8c7..d75efdeda1 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -13,6 +13,21 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
 
 * Version 9.7 (not released yet)
 ** Important announcements and breaking changes
+*** ~org-store-link~ now moves an already stored link to front of the 
~org-stored-links~
+
+Previously, when the link to be stored were stored already,
+~org-store-link~ displayed a message and did nothing.
+
+Now, ~org-store-link~ moves the stored link to front of the list of
+stored links.  This way, the link will show up first in the completion
+and when inserting all the stored links with ~org-insert-all-links~.
+
+The new behavior is controlled by new customization ~org-link-store-existing~.
+
+Users can set ~org-link-store-existing~ to nil to revert previous
+defaults.  The value of =store-duplicate= will force duplicate links
+in ~org-stored-links~.  The default value is =move-to-front=.
+
 *** Major changes and additions to Org API
 **** New term: "syntax node"
 
diff --git a/lisp/ol.el b/lisp/ol.el
index 6dd7e0fa1d..3a8ca5f390 100644
--- a/lisp/ol.el
+++ b/lisp/ol.el
@@ -509,6 +509,20 @@ links more efficient."
   :type 'boolean
   :safe #'booleanp)
 
+(defcustom org-link-store-existing 'move-to-front
+  "Variable controlling how to deal with already stored links.
+When nil, ignore store request for an already stored link.
+When symbol `move-to-front', move the stored link to the front of
+`org-stored-links'.
+When symbol `store-duplicate', add a duplicate in front."
+  :group 'org-link-store
+  :type '(choice
+          (const :tag "Do no store duplicate" nil)
+          (const :tag "Move stored duplicate to front" move-to-front)
+          (const :tag "Store duplicate" store-duplicate))
+  :safe #'symbolp
+  :package-version '(Org . "9.7"))
+
 ;;; Public variables
 
 (defconst org-target-regexp (let ((border "[^<>\n\r \t]"))
@@ -1749,16 +1763,24 @@ non-nil."
       ;; Store and return the link
       (if (not (and interactive? link))
          (or agenda-link (and link (org-link-make-string link desc)))
-       (if (member (list link desc) org-stored-links)
-           (message "This link has already been stored")
-         (push (list link desc) org-stored-links)
-         (message "Stored: %s" (or desc link))
+        (dotimes (_ (if custom-id 2 1)) ; Store 2 links when CUSTOM-ID is 
non-nil.
+          (pcase org-link-store-existing
+            ((or `store-duplicate
+                 (guard (not (member (list link desc) org-stored-links))))
+             (push (list link desc) org-stored-links)
+            (message "Stored: %s" (or desc link)))
+            ((or`nil (guard (equal (list link desc) (car org-stored-links))))
+             (message "This link has already been stored"))
+            (`move-to-front
+             (setq org-stored-links
+                   (delete (list link desc) org-stored-links))
+             (push (list link desc) org-stored-links)
+             (message "Link moved to front: %s" (or desc link))))
          (when custom-id
            (setq link (concat "file:"
                               (abbreviate-file-name
-                               (buffer-file-name (buffer-base-buffer)))
-                              "::#" custom-id))
-           (push (list link desc) org-stored-links)))
+                               (buffer-file-name (buffer-base-buffer)))
+                              "::#" custom-id))))
        (car org-stored-links)))))
 
 ;;;###autoload



reply via email to

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