Samuel Wales <samolog...@gmail.com> writes: > link has already been stored is a bug in my case in that i can't just > go to a header, grab it [whether rabbed bfere or not] and then paste > it. i surprise easily when the wrong link gets pasted.
This has been fixed already. > in answer to a q by ihor, indeed puttig previously stored id liks as > descriptions in front of all the prefixes woudl be useful to me, but > idk who is doing the sorting, so idk whether it wold make a difference > but if it dos then gret..] Org is actually not supposed to control sorting. It is to be customized by user via `completions-sort'. What we can do instead is provide grouping metadata. Below, I provide a simple demo on how it looks like. However, the demo will only make a difference starting from Emacs 28 that has the necessary completion API. (defun org--complete-links (string predicate flag) (let* ((links '(:type ("id:" "file:") :path ("/a/a/b" "file.org") :description ("foo" "barr" "baz"))) (all-links (append (plist-get links :type) (plist-get links :path) (plist-get links :description))) matches) (pcase flag (`nil (try-completion string all-links predicate)) (`t (all-completions string all-links predicate)) (`lambda (test-completion string all-links predicate)) (`(boundaries . suffix) (completion-boundaries string all-links predicate suffix)) (`metadata `(metadata (group-function . (lambda (completion transform) (if transform completion (let ((links ',links)) (cond ((member completion (plist-get links :type)) "Link type") ((member completion (plist-get links :path)) "Link path") ((member completion (plist-get links :description)) "Link description"))))))))))) (completing-read "Test: " #'org--complete-links) > it seems org-insert-=inki is overloaded. one use case says insert a > previously stored link. the other says insert a brand new link which > i will now specify. might it be useful to separate those two > functions? I do not see why it is overloaded. The last stored link is used as default completion option, which is a common practice. You can also use C-u 1 C-c C-M-l to insert the last stored link. Or just C-c C-M-l. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>