Derek Chen-Becker <de...@chen-becker.org> writes: > 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)))
This looks right, yes. > 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? I can think of two scenarios: 1. indirect Org buffer, as you pointed 2. a new Org buffer not yet associated with file. Even base buffer will then have buffer-file-name returning nil May we have a special function? If it is going to be used 339 times, definitely yes ;) Although, I'd prefer more telling name like `org-base-buffer-file-name' (akin the existing `org-with-base-buffer' macro) -- Ihor Radchenko // yantar92, Org mode maintainer, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>