[BUG] org-babel-load-file, org-babel-tangle-use-relative-file-links and :tangle header [9.6.11 (release_9.6.11 @ /opt/emacs/share/emacs/30.0.50/lisp/org/)]
Hi emacs-orgmode developers, When org-babel-tangle-use-relative-file-links is t (default), org-babel-load-file ignores any source block that does not have `:tangle "yes"' or `:tangle filepath' header. Even if org-babel-default-header-args is changed like (setq org-babel-default-header-args (cons '(:tangle . "yes") (assq-delete-all :noweb org-babel-default-header-args))) , the result is same. When org-babel-tangle-use-relative-file-links is set to nil, it extracts blocks have not :tangle header, in addition to have `:tangle "yes"' or `:tangle filepath', and this is what I expect. It may be too early to remove direcoty part from buffer file name in org-babel-tangle-single-block. test org-mode file: # --start-- #+begin_src emacs-lisp (setq a 1) #+end_src #+begin_src emacs-lisp :tangle (if t "yes" "no") (setq b 2) #+end_src #+begin_src emacs-lisp (setq c 3) #+end_src #+begin_src emacs-lisp :tangle "yes" (setq d 4) #+end_src #+begin_src emacs-lisp (setq e 5) #+end_src # --end-- When invoke `(org-babel-load-file "ABOVEFILE.org")' with org-babel-tangle-use-relative-file-links is t, the result .el file is: # --start-- (setq b 2) (setq d 4) # --end-- With org-babel-tangle-use-relative-file-links is nil, the result is (as expected): # --start-- (setq a 1) (setq b 2) (setq c 3) (setq d 4) (setq e 5) # --end-- Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0) of 2023-11-19 Package: Org mode version 9.6.11 (release_9.6.11 @ /opt/emacs/share/emacs/30.0.50/lisp/org/) -- TAKAHASHI Yoshio
Re: [BUG] org-babel-load-file, org-babel-tangle-use-relative-file-links and :tangle header [9.6.11 (release_9.6.11 @ /opt/emacs/share/emacs/30.0.50/lisp/org/)]
Ihor Radchenko writes: > This is because the default value of `org-babel-default-header-args' > already contains (:tangle . "no"). ... > As internal implementation detail, Org babel prefers the _last_ header > arg value in the above list. Which is why you end up seeing what you are > seeing. > > Not a bug. > Canceled. Your explanation is very clear. Thank you. -- TAKAHASHI Yoshio
Re: [BUG] org-babel-load-file, org-babel-tangle-use-relative-file-links and :tangle header [9.6.11 (release_9.6.11 @ /opt/emacs/share/emacs/30.0.50/lisp/org/)]
TAKAHASHI Yoshio writes: >> This is because the default value of `org-babel-default-header-args' >> already contains (:tangle . "no"). > Your explanation is very clear. Thank you. I did some tests. Please check below transcript. I expect to have the same results in bloth case. tkh:~$ cd /tmp tkh:/tmp$ cat test1.org * test1 #+begin_src emacs-lisp (print "1") #+end_src #+begin_src emacs-lisp :tangle "yes" (print "2") #+end_src #+begin_src emacs-lisp (print "3") #+end_src tkh:/tmp$ cat a.el (require 'ox) (setq org-babel-default-header-args (cons '(:tangle . "yes") (assq-delete-all :tangle org-babel-default-header-args))) (org-babel-tangle-file "/tmp/test1.org" "/tmp/test1.el" "emacs-lisp") tkh:/tmp$ emacs -Q -batch --eval="(setq org-babel-tangle-use-relative-file-links t)" -l a.el Tangled 3 code blocks from test1.org tkh:/tmp$ cat test1.el (print "2") tkh:/tmp$ emacs -Q -batch --eval="(setq org-babel-tangle-use-relative-file-links nil)" -l a.el Tangled 3 code blocks from test1.org tkh:/tmp$ cat test1.el (print "1") (print "2") (print "3") tkh:/tmp$ -- TAKAHASHI Yoshio
Re: [BUG] org-babel-load-file, org-babel-tangle-use-relative-file-links and :tangle header [9.6.11 (release_9.6.11 @ /opt/emacs/share/emacs/30.0.50/lisp/org/)]
Ihor Radchenko writes: > I followed your steps using the latest main. > The results are identical for me. Thank you for test. My current environment is [1], org-mode in emacs master branch. With the latest org-mode main branch as of today, I get identical results, too. I'm happy to know the problem does not exist in org-mode main branch, and will wait for merging them into emacs master branch. Thank you for your time! [1] Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0) of 2023-11-19 Package: Org mode version 9.6.11 (release_9.6.11 @ /opt/emacs/share/emacs/30.0.50/lisp/org/) -- TAKAHASHI Yoshio