diff --git a/lisp/org-id.el b/lisp/org-id.el index be8c0bd33..a2c452b44 100644 --- a/lisp/org-id.el +++ b/lisp/org-id.el @@ -675,16 +675,23 @@ optional argument MARKERP, return the position as a new marker." ((not (file-exists-p file)) nil) (t (let* ((visiting (find-buffer-visiting file)) - (buffer (or visiting (find-file-noselect file)))) + (buffer (or visiting + (if markerp (find-file-noselect file) + (get-buffer-create " *Org ID temp*" t))))) (unwind-protect (with-current-buffer buffer + (unless (derived-mode-p 'org-mode) (org-mode)) + (unless (or visiting markerp) + (buffer-disable-undo) + (insert-file-contents file nil nil nil 'replace)) (let ((pos (org-find-entry-with-id id))) (cond ((null pos) nil) (markerp (move-marker (make-marker) pos buffer)) (t (cons file pos))))) - ;; Remove opened buffer in the process. - (unless (or visiting markerp) (kill-buffer buffer))))))) + ;; Clean temporarily buffer if we don't need to keep it. + (unless (or visiting markerp) + (with-current-buffer buffer (erase-buffer)))))))) ;; id link type