On 05 March 2022 19:58, Juan Manuel Macías <maciasch...@posteo.net> wrote:
Hello Juan! > Hi all, > > I have written this simple function to move or rename a destination file > in an external link at point. I share it here in case it is useful to > someone. > > Best regards, > > Juan Manuel > > #+begin_src emacs-lisp > (defun my-org-replace-link-file (from to) > (save-excursion > (goto-char (point-min)) > (while (re-search-forward org-bracket-link-regexp nil t) > (when (string-match-p from (match-string 1)) > (replace-match (concat "[[file:" to "]]")))))) > > (defun my-org-rename-link-file-at-point () > "Rename or move a file in an external link at point and > update the link path" > (interactive) > (let* ((curr-dir (abbreviate-file-name default-directory)) > (current-path (org-element-property :path (org-element-context))) > (new-path (read-file-name "Rename file at point to: " current-path))) > (rename-file current-path new-path) > (message (concat "moved to: " new-path)) > (if (directory-name-p new-path) > (setq new-path (concat new-path (file-name-nondirectory current-path))) > (setq new-path new-path)) > (my-org-replace-link-file current-path > (replace-regexp-in-string curr-dir "" new-path)))) > > #+end_src > Thanks for sharing! It'd be great if it worked for attachments as well, but that is a whole can of worms. Cheers, -- João Pedro de Amorim Paula IT undergraduate at Universidade Federal do Rio Grande do Norte (UFRN)