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 On Tue, Dec 10, 2024 at 11:05 AM Ihor Radchenko wrote: > Derek Chen-Becker writes: > > > I would be happy to work with you on this if you're interested in > > collaborating on it. I'm a little concerned with the scope, given that > Ihor > > said: "We should probably fix handling indirect buffers across Org mode". > > I'm not sure how extensive indirect buffer handling is across Org, or if > > it's even consistent across Org right now. I'll probably need some help > > from people more familiar with it to figure out a starting point, but I'm > > excited to take a look :) > > You do not need to address the whole thing at once. Start by trying to > fix the exact bug described: > > 1. Try to reproduce it locally > 2. Find which part of Org code is causing the problem (you can use > edebug, M-x debug-on-entry, or modifying the code with (message ...) > or (debug) statements directly - remember that you can re-define > functions on the fly in Elisp) > 3. Try to fix it > > I wrote about "across Org mode" because my quick debugging revealed that > the problematic code might be a pattern we use in various places in > Org. So, the whole Org code base should be carefully scanned to see if > we can fix the same problem in more places. > > Such scanning usually starts from trying to regexp search code similar > to the problematic piece. In this case, AFAIR, it is simply usage of > `buffer-file-name' or `buffer-file-truename' assuming that it is never > nil. > > It is also good for you that the original bug reporter is around. Having > someone else familiar with the problem might make things easier when you > cooperate together. > > -- > Ihor Radchenko // yantar92, > Org mode maintainer, > Learn more about Org mode at . > Support Org development at , > or support my work at > -- +---------------------------------------------------------------+ | Derek Chen-Becker | | 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 | +---------------------------------------------------------------+