(docs): fix examples for .dir-locals.el (#2002)

* (docs): fix examples for .dir-locals.el

Two items:

1. The current example does not work; in order to call a function wihtin
`.dir-locals.el`, you should use `eval`.

  - [StackExchange](https://emacs.stackexchange.com/questions/21955/calling-functions-in-dir-locals-in-emacs)

  - [Working
example buried in an issue](https://github.com/org-roam/org-roam/issues/1527#issuecomment-933674233))

  - `(info "(emacs)Directory Variables")`

2. Add clear instruction to use an absolute path to define `org-roam-directory` in
this context (it's buried in this [issue](https://github.com/org-roam/org-roam/issues/1459#issuecomment-817259656).

* (docs)Fix the `eval` example for subdirectories.

Comment: https://github.com/org-roam/org-roam/pull/2002#issuecomment-991830879

The eval form that uses relative path sets the local variable *relative to the
org file*. This means the eval form woudl need to locate the relevant
`.dir-locals` file by traversing the directory tree upwards from the
file (lightly tested to wrok)

Using absolute path (the first example) should be fine without change (not tested)

* update texi

Co-authored-by: Jethro Kuan <jethrokuan95@gmail.com>
This commit is contained in:
Noboru Ota
2021-12-13 06:12:38 +01:00
committed by GitHub
parent abe63b4360
commit 898295f4a0
2 changed files with 30 additions and 4 deletions

View File

@ -1382,8 +1382,21 @@ variable using directory-local variables. This is what ~.dir-locals.el~ may
contain: contain:
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
((nil . ((org-roam-directory . (expand-file-name ".")) ((nil . ((org-roam-directory . "/path/to/alt/org-roam/dir/org-roam-dir")
(org-roam-db-location . (expand-file-name "./org-roam.db"))))) (org-roam-db-location . "/path/to/alt/org-roam-dir/org-roam.db"))))
#+END_SRC
Note ~org-roam-directory~ and ~org-roam-db-location~ should be an absolute path, not relative.
Alternatively, use ~eval~ if you wish to call functions:
#+BEGIN_SRC emacs-lisp
((nil . ((eval . (setq-local
org-roam-directory (expand-file-name (locate-dominating-file
default-directory ".dir-locals.el"))))
(eval . (setq-local
org-roam-db-location (expand-file-name "org-roam.db"
org-roam-directory))))))
#+END_SRC #+END_SRC
All files within that directory will be treated as their own separate set of All files within that directory will be treated as their own separate set of

View File

@ -1935,8 +1935,21 @@ variable using directory-local variables. This is what @code{.dir-locals.el} may
contain: contain:
@lisp @lisp
((nil . ((org-roam-directory . (expand-file-name ".")) ((nil . ((org-roam-directory . "/path/to/alt/org-roam/dir/org-roam-dir")
(org-roam-db-location . (expand-file-name "./org-roam.db"))))) (org-roam-db-location . "/path/to/alt/org-roam-dir/org-roam.db"))))
@end lisp
Note @code{org-roam-directory} and @code{org-roam-db-location} should be an absolute path, not relative.
Alternatively, use @code{eval} if you wish to call functions:
@lisp
((nil . ((eval . (setq-local
org-roam-directory (expand-file-name (locate-dominating-file
default-directory ".dir-locals.el"))))
(eval . (setq-local
org-roam-db-location (expand-file-name "org-roam.db"
org-roam-directory))))))
@end lisp @end lisp
All files within that directory will be treated as their own separate set of All files within that directory will be treated as their own separate set of