> > ,---- > | #+name: project-root > | #+header: :var buf-file=(buffer-file-name) > | #+begin_src emacs-lisp > | (file-name-directory > | (directory-file-name > | (file-name-directory buf-file))) > | #+end_src > `---- > > #+results: project-root > : /home/tj/News/drafts/ > > ,---- > | #+name: project-name > | #+header: :exports none > | #+header: :var root-dir=project-root(buf-file=(buffer-file-name)) > | #+begin_src emacs-lisp > | (mapconcat > | 'capitalize > | (split-string > | (file-name-nondirectory root-dir) > | "-" 'OMIT-NULLS) > | " ") > | #+end_src > `---- > > #+results: project-name > > Wrong usage of :var or limitations of header arguments? This is to be expected. The two blocks above compose to something like #+begin_src emacs-lisp (file-name-nondirectory (file-name-directory (directory-file-name (file-name-directory (buffer-file-name))))) #+end_src Calling `file-name-nondirectory' on the results of `file-name-directory' seems like it should give you an empty string. Best, -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D (see https://u.fsf.org/yw)