Вызывайте эту команду, когда точка находится где-нибудь после первых [[
скобок org-ссылки (или в любом месте на / после гиперссылки org-link).
Ссылка на организацию будет удалена, если она имеет формат [[LINK][DESCRIPTION]]
или находится [[LINK]]
в org-mode
буфере; иначе ничего не случится.
В целях безопасности отбрасываемая ССЫЛКА от org-link сохраняется kill-ring
в том случае, если возникает необходимость использовать эту ссылку в другом месте.
(defun my/org-delete-link ()
"Replace an org link of the format [[LINK][DESCRIPTION]] with DESCRIPTION.
If the link is of the format [[LINK]], delete the whole org link.
In both the cases, save the LINK to the kill-ring.
Execute this command while the point is on or after the hyper-linked org link."
(interactive)
(when (derived-mode-p 'org-mode)
(let ((search-invisible t) start end)
(save-excursion
(when (re-search-backward "\\[\\[" nil :noerror)
(when (re-search-forward "\\[\\[\\(.*?\\)\\(\\]\\[.*?\\)*\\]\\]" nil :noerror)
(setq start (match-beginning 0))
(setq end (match-end 0))
(kill-new (match-string-no-properties 1)) ; Save the link to kill-ring
(replace-regexp "\\[\\[.*?\\(\\]\\[\\(.*?\\)\\)*\\]\\]" "\\2" nil start end)))))))
[[LINK]]
формата org ссылки тоже. Я узналmatch-beginning
иmatch-end
из вашего ответа.