On Mon, Aug 05, 2024 at 02:03:50PM +0000, Ihor Radchenko wrote: > That's because capture buffer is an indirect buffer and indirect buffers > are technically not associated with any file. > > We should probably fix handling indirect buffers across Org mode. > > Confirmed. > OK, after some debugging it looks like the primary culprit is the assignment of source-file from buffer-file-name. A quick patch seems to fix it, but I can definitely see a pattern here if org functions are trying to get the filename of the current buffer (I can submit an official patch if this looks right): modified lisp/ob-tangle.el @@ -269,7 +269,7 @@ matching a regular expression." (or (cdr (assq :tangle (nth 2 (org-babel-get-src-block-info 'no-eval)))) (user-error "Point is not in a source code block")))) path-collector - (source-file buffer-file-name)) + (source-file (buffer-file-name (buffer-base-buffer)))) (mapc ;; map over file-names (lambda (by-fn) (let ((file-name (car by-fn))) There are 339 uses of buffer-file-name that I can find, but most are just bare (buffer-file-name). Are there any other cases besides indirect buffers that we would need to handle? Would it be worth creating a new function "org-buffer-file-name" that could properly handle indirect buffers and any other special cases, or is it just a search and replace throughout? Cheers, Derek -- +---------------------------------------------------------------+ | Derek Chen-Becker | | http://chen-becker.org | | | | GPG Key available at https://keybase.io/dchenbecker and | | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | +---------------------------------------------------------------+