Chame esse comando quando o ponto estiver em qualquer lugar após os primeiros [[
colchetes de um link organizacional (ou em qualquer lugar no / após um link orgânico hiperligado).
Um link organizacional será excluído se estiver no formato [[LINK][DESCRIPTION]]
ou [[LINK]]
em um org-mode
buffer; senão nada vai acontecer.
Por segurança, o LINK descartado do org-link é salvo kill-ring
no caso de surgir a necessidade de usar esse link em outro local.
(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]]
links de formato organizacional também. Eu aprendi sobrematch-beginning
ematch-end
com a sua resposta.