mirror of
https://github.com/org-roam/org-roam
synced 2025-08-01 12:17:21 -05:00
(doc): remove top-level TOC (#1260)
This commit is contained in:
245
doc/org-roam.org
245
doc/org-roam.org
@ -1,22 +1,19 @@
|
||||
#+title: Org-roam User Manual
|
||||
:PREAMBLE:
|
||||
#+author: Jethro Kuan
|
||||
#+email: jethrokuan95@gmail.com
|
||||
#+date: 2020-2020
|
||||
#+language: en
|
||||
|
||||
|
||||
#+texinfo_deffn: t
|
||||
#+texinfo_dir_category: Emacs
|
||||
#+texinfo_dir_title: Org-roam: (org-roam).
|
||||
#+texinfo_dir_desc: Rudimentary Roam Replica for Emacs.
|
||||
#+subtitle: for version 1.2.2
|
||||
|
||||
#+options: H:4 num:3 toc:2 creator:t ':t
|
||||
#+options: H:4 num:3 toc:nil creator:t ':t
|
||||
#+property: header-args :eval never
|
||||
#+texinfo: @noindent
|
||||
|
||||
#+texinfo: @noindent
|
||||
This manual is for Org-roam version 1.2.2.
|
||||
|
||||
#+BEGIN_QUOTE
|
||||
@ -32,8 +29,6 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
#+END_QUOTE
|
||||
|
||||
:END:
|
||||
|
||||
* Introduction
|
||||
|
||||
Org-roam is a [[https://roamresearch.com/][Roam Research]] replica built around the
|
||||
@ -53,11 +48,23 @@ to further introduce features enabled by the Emacs ecosystem.
|
||||
|
||||
Org-roam provides several benefits over other tooling:
|
||||
|
||||
- Privacy and Security :: Edit your personal wiki completely offline, entirely in your control. Encrypt your notes with GPG.
|
||||
- Longevity of Plain Text :: Unlike web solutions like Roam research, the notes are first and foremost plain Org-mode files -- Org-roam simply builds up an auxilliary database to give the personal wiki superpowers. Having your notes in plain-text is crucial for the longevity of your wiki. Never have to worry about proprietary web solutions being taken down. Edit your plain-text notes in notepad if all other editors cease to exist
|
||||
- Free and Open Source :: Org-roam is free and open-source, which means that if you feel unhappy with any part of Org-roam, you may choose to extend Org-roam, or open a PR.
|
||||
- Leverages the Org-mode ecosystem :: Over the years, Emacs and Org-mode has developed into a mature system for plain-text organization. Building upon Org-mode already puts Org-roam light-years ahead of many other solutions.
|
||||
- Built on Emacs :: Emacs is also a fantastic interface for editing text, and we can inherit many of the powerful text-navigation and editing packages available to Emacs.
|
||||
- Privacy and Security :: Edit your personal wiki completely offline, entirely
|
||||
in your control. Encrypt your notes with GPG.
|
||||
- Longevity of Plain Text :: Unlike web solutions like Roam research, the notes
|
||||
are first and foremost plain Org-mode files -- Org-roam simply builds up an
|
||||
auxilliary database to give the personal wiki superpowers. Having your notes
|
||||
in plain-text is crucial for the longevity of your wiki. Never have to worry
|
||||
about proprietary web solutions being taken down. Edit your plain-text notes
|
||||
in notepad if all other editors cease to exist
|
||||
- Free and Open Source :: Org-roam is free and open-source, which means that if
|
||||
you feel unhappy with any part of Org-roam, you may choose to extend Org-roam,
|
||||
or open a PR.
|
||||
- Leverages the Org-mode ecosystem :: Over the years, Emacs and Org-mode has
|
||||
developed into a mature system for plain-text organization. Building upon
|
||||
Org-mode already puts Org-roam light-years ahead of many other solutions.
|
||||
- Built on Emacs :: Emacs is also a fantastic interface for editing text, and we
|
||||
can inherit many of the powerful text-navigation and editing packages
|
||||
available to Emacs.
|
||||
|
||||
* Target Audience
|
||||
|
||||
@ -204,9 +211,16 @@ Org-roam will then be autoloaded into Emacs.
|
||||
|
||||
** Installing from the Git Repository
|
||||
|
||||
You may install Org-roam directly from the repository on [[https://github.com/org-roam/org-roam][GitHub]] if you like. This will give you access to the latest version hours or days before it appears on MELPA, and months (or more) before it is added to the Debian or Ubuntu repositories. This will also give you access to various developmental branches that may be available.
|
||||
You may install Org-roam directly from the repository on [[https://github.com/org-roam/org-roam][GitHub]] if you like.
|
||||
This will give you access to the latest version hours or days before it appears
|
||||
on MELPA, and months (or more) before it is added to the Debian or Ubuntu
|
||||
repositories. This will also give you access to various developmental branches
|
||||
that may be available.
|
||||
|
||||
Note, however, that development version, and especially any feature branches, may not always be in working order. You'll need to be prepared to do some debugging, or to manually roll-back to working versions, if you install from GitHub.
|
||||
Note, however, that development version, and especially any feature branches,
|
||||
may not always be in working order. You'll need to be prepared to do some
|
||||
debugging, or to manually roll-back to working versions, if you install from
|
||||
GitHub.
|
||||
|
||||
Installing from GitHub requires that you clone the repository:
|
||||
|
||||
@ -216,14 +230,16 @@ git clone https://github.com/org-roam/org-roam.git /path/to/org/roam
|
||||
|
||||
where ~./path/to/org/roam~ is the location you will store your copy of the code.
|
||||
|
||||
Next, you need to add this location to your load path, and ~require~ the Org-roam library. Add the following code to your ~.emacs~:
|
||||
Next, you need to add this location to your load path, and ~require~ the
|
||||
Org-roam library. Add the following code to your ~.emacs~:
|
||||
|
||||
#+begin_src elisp
|
||||
(add-to-list 'load-path "/path/to/org/roam")
|
||||
(require 'org-roam)
|
||||
#+end_src
|
||||
|
||||
You now have Org-roam installed. However, you don't necessarily have the dependencies that it requires. These include:
|
||||
You now have Org-roam installed. However, you don't necessarily have the
|
||||
dependencies that it requires. These include:
|
||||
|
||||
- dash
|
||||
- f
|
||||
@ -232,17 +248,25 @@ You now have Org-roam installed. However, you don't necessarily have the depende
|
||||
- emacsql
|
||||
- emacsql-sqlite3
|
||||
|
||||
You can install this manually as well, or get the latest version from MELPA. You may wish to use [[https://github.com/jwiegley/use-package][use-package]], [[https://github.com/raxod502/straight.el][straight.el]], or some other tool or tools to help manage this.
|
||||
You can install this manually as well, or get the latest version from MELPA. You
|
||||
may wish to use [[https://github.com/jwiegley/use-package][use-package]], [[https://github.com/raxod502/straight.el][straight.el]], or some other tool or tools to help
|
||||
manage this.
|
||||
|
||||
If you would like to install the manual for access from Emacs' built-in Info system, you'll need to compile the .texi source file, and install it in an appropriate location.
|
||||
If you would like to install the manual for access from Emacs' built-in Info
|
||||
system, you'll need to compile the .texi source file, and install it in an
|
||||
appropriate location.
|
||||
|
||||
To compile the .texi source file, from a terminal navigate to the ~/doc~ subdirectory of the Org-roam repository, and run the following:
|
||||
To compile the .texi source file, from a terminal navigate to the ~/doc~
|
||||
subdirectory of the Org-roam repository, and run the following:
|
||||
|
||||
#+begin_src bash
|
||||
make infodir=/path/to/my/info/files install-info
|
||||
#+end_src
|
||||
|
||||
Where ~/path/to/my/info/files~ is the location where you keep info files. This target directory needs to be stored in the variable `Info-default-directory-list`. If you aren't using one of the default info locations, you can configure this with the following in your ~.emacs~ file:
|
||||
Where ~/path/to/my/info/files~ is the location where you keep info files. This
|
||||
target directory needs to be stored in the variable
|
||||
`Info-default-directory-list`. If you aren't using one of the default info
|
||||
locations, you can configure this with the following in your ~.emacs~ file:
|
||||
|
||||
#+begin_src elisp
|
||||
(require 'info)
|
||||
@ -256,9 +280,11 @@ You can also use one of the default locations, such as:
|
||||
- /usr/share/info/
|
||||
- /usr/local/share/info/
|
||||
|
||||
If you do this, you'll need to make sure you have write-access to that location, or run the above ~make~ command as root.
|
||||
If you do this, you'll need to make sure you have write-access to that location,
|
||||
or run the above ~make~ command as root.
|
||||
|
||||
Now that the info file is ready, you need to add it to the corresponding ~dir~ file:
|
||||
Now that the info file is ready, you need to add it to the corresponding ~dir~
|
||||
file:
|
||||
|
||||
#+begin_src bash
|
||||
install-info /path/to/my/info/files/org-roam.info /path/to/my/info/files/dir
|
||||
@ -405,13 +431,15 @@ If you wish to add your own title extraction method, you may push a symbol
|
||||
|
||||
Tags are used as meta-data for files: they facilitate interactions with notes
|
||||
where titles are insufficient. For example, tags allow for categorization of
|
||||
notes: differentiating between bibliographical and structure notes during interactive commands.
|
||||
notes: differentiating between bibliographical and structure notes during
|
||||
interactive commands.
|
||||
|
||||
Org-roam calls ~org-roam--extract-tags~ to extract tags from files. It uses the
|
||||
variable ~org-roam-tag-sources~, to control how tags are extracted. The tag
|
||||
extraction methods supported are:
|
||||
|
||||
1. ~'prop~: This extracts tags from the ~#+roam_tags~ property. Tags are space delimited, and can be multi-word using double quotes.
|
||||
1. ~'prop~: This extracts tags from the ~#+roam_tags~ property. Tags are space
|
||||
delimited, and can be multi-word using double quotes.
|
||||
2. ~'all-directories~: All sub-directories relative to ~org-roam-directory~ are
|
||||
extracted as tags. That is, if a file is located at relative path
|
||||
~foo/bar/file.org~, the file will have tags ~foo~ and ~bar~.
|
||||
@ -436,19 +464,20 @@ accepts the absolute file path as its argument. See
|
||||
|
||||
** File Refs
|
||||
|
||||
Refs are unique identifiers for files. For example, a note for a website may contain a ref:
|
||||
Refs are unique identifiers for files. For example, a note for a website may
|
||||
contain a ref:
|
||||
|
||||
#+BEGIN_SRC org
|
||||
#+title: Google
|
||||
#+roam_key: https://www.google.com/
|
||||
#+END_SRC
|
||||
|
||||
These keys allow references to the key to show up in the backlinks buffer. For instance,
|
||||
with the example above, if another file then links to https://www.google.com, that will
|
||||
show up as a “Ref Backlink”.
|
||||
These keys allow references to the key to show up in the backlinks buffer. For
|
||||
instance, with the example above, if another file then links to
|
||||
https://www.google.com, that will show up as a “Ref Backlink”.
|
||||
|
||||
These keys also come in useful for when taking website notes, using the ~roam-ref~ protocol
|
||||
(see [[*Roam Protocol][Roam Protocol]]).
|
||||
These keys also come in useful for when taking website notes, using the
|
||||
~roam-ref~ protocol (see [[*Roam Protocol][Roam Protocol]]).
|
||||
|
||||
[[https://github.com/jkitchin/org-ref][org-ref]] citation keys can also be used as refs:
|
||||
|
||||
@ -460,9 +489,9 @@ These keys also come in useful for when taking website notes, using the ~roam-re
|
||||
#+CAPTION: org-ref-citelink
|
||||
[[file:images/org-ref-citelink.png]]
|
||||
|
||||
You may assign multiple refs to a single file, for example when you want multiple papers
|
||||
in a series to share the same note, or an article has a citation key and a URL at the same
|
||||
time.
|
||||
You may assign multiple refs to a single file, for example when you want
|
||||
multiple papers in a series to share the same note, or an article has a citation
|
||||
key and a URL at the same time.
|
||||
* The Templating System
|
||||
|
||||
Rather than creating blank files on ~org-roam-insert~ and ~org-roam-find-file~,
|
||||
@ -500,15 +529,14 @@ the default template, reproduced below.
|
||||
:unnarrowed t)
|
||||
#+END_SRC
|
||||
|
||||
1. The template has short key ~"d"~. If you have only one template,
|
||||
org-roam automatically chooses this template for you.
|
||||
1. The template has short key ~"d"~. If you have only one template, org-roam
|
||||
automatically chooses this template for you.
|
||||
2. The template is given a description of ~"default"~.
|
||||
3. ~plain~ text is inserted. Other options include Org headings via
|
||||
~entry~.
|
||||
4. ~(function org-roam--capture-get-point)~ should not be changed.
|
||||
5. ~"%?"~ is the template inserted on each call to ~org-roam-capture--capture~.
|
||||
This template means don't insert any content, but place the cursor
|
||||
here.
|
||||
This template means don't insert any content, but place the cursor here.
|
||||
6. ~:file-name~ is the file-name template for a new note, if it doesn't yet
|
||||
exist. This creates a file at path that looks like
|
||||
~/path/to/org-roam-directory/20200213032037-foo.org~. This template also
|
||||
@ -537,9 +565,9 @@ provided title. ~${title}~ is then expanded into the provided title during the
|
||||
org-capture process. Any variables that do not contain strings, are prompted for
|
||||
values using ~completing-read~.
|
||||
|
||||
After doing this expansion, the org-capture's template expansion system
|
||||
is used to fill up the rest of the template. You may read up more on
|
||||
this on [[https://orgmode.org/manual/Template-expansion.html#Template-expansion][org-capture's documentation page]].
|
||||
After doing this expansion, the org-capture's template expansion system is used
|
||||
to fill up the rest of the template. You may read up more on this on
|
||||
[[https://orgmode.org/manual/Template-expansion.html#Template-expansion][org-capture's documentation page]].
|
||||
|
||||
To illustrate this dual expansion process, take for example the template string:
|
||||
~"%<%Y%m%d%H%M%S>-${title}"~, with the title ~"Foo"~. The template is first
|
||||
@ -560,12 +588,12 @@ directly to provide its third argument to specify UTC.
|
||||
#+END_SRC
|
||||
|
||||
* Concepts and Configuration
|
||||
The number of configuration options is deliberately kept small, to keep
|
||||
the Org-roam codebase manageable. However, we attempt to accommodate as
|
||||
many usage styles as possible.
|
||||
The number of configuration options is deliberately kept small, to keep the
|
||||
Org-roam codebase manageable. However, we attempt to accommodate as many usage
|
||||
styles as possible.
|
||||
|
||||
All of Org-roam's customization options can be viewed via
|
||||
~M-x customize-group org-roam~.
|
||||
All of Org-roam's customization options can be viewed via ~M-x customize-group
|
||||
org-roam~.
|
||||
|
||||
** Directories and Files
|
||||
|
||||
@ -661,14 +689,17 @@ An alternative mode of insertion is using Org-roam's ~roam~ links. Org-roam
|
||||
registers this link type, and interprets the path as follows:
|
||||
|
||||
- ~[[roam:title]]~ :: links to an Org-roam file with title or alias "title"
|
||||
- ~[[roam:*headline]]~ :: links to the headline "headline" in the current Org-roam file
|
||||
- ~[[roam:title*headline]]~ :: links to the headline "headline" in the Org-roam file with title or alias "title"
|
||||
- ~[[roam:*headline]]~ :: links to the headline "headline" in the current
|
||||
Org-roam file
|
||||
- ~[[roam:title*headline]]~ :: links to the headline "headline" in the Org-roam
|
||||
file with title or alias "title"
|
||||
|
||||
~roam~ links support auto-completion via ~completion-at-point~: simply call
|
||||
~completion-at-point~ within a roam link. Users of ~company-mode~ may want to
|
||||
prepend ~company-capf~ to the beginning of variable ~company-backends~.
|
||||
|
||||
To easily insert ~roam~ links, one may wish to use a package like [[https://github.com/emacsorphanage/key-chord/][key-chord]]. In the following example, typing "[[" will insert a stub ~roam~ link:
|
||||
To easily insert ~roam~ links, one may wish to use a package like [[https://github.com/emacsorphanage/key-chord/][key-chord]]. In
|
||||
the following example, typing "[[" will insert a stub ~roam~ link:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(key-chord-define org-mode-map "[[" #'my/insert-roam-link)
|
||||
@ -731,13 +762,14 @@ GPG), which can be enabled for all new files by setting ~org-roam-encrypt-files~
|
||||
to ~t~. When enabled, new files are created with the ~.org.gpg~ extension and
|
||||
decryption are handled automatically by EasyPG.
|
||||
|
||||
Note that Emacs will prompt for a password for encrypted files during
|
||||
cache updates if it requires reading the encrypted file. To reduce the
|
||||
number of password prompts, you may wish to cache the password.
|
||||
Note that Emacs will prompt for a password for encrypted files during cache
|
||||
updates if it requires reading the encrypted file. To reduce the number of
|
||||
password prompts, you may wish to cache the password.
|
||||
|
||||
- User Option: org-roam-encrypt-files
|
||||
|
||||
Whether to encrypt new files. If true, create files with .org.gpg extension.
|
||||
Whether to encrypt new files. If true, create files with .org.gpg extension.
|
||||
|
||||
* Graphing
|
||||
|
||||
Org-roam provides graphing capabilities to explore interconnections between
|
||||
@ -761,21 +793,24 @@ The entry point to graph creation is ~org-roam-graph~.
|
||||
|
||||
- User Option: org-roam-graph-executable
|
||||
|
||||
Path to the graphing executable (in this case, Graphviz). Set this if Org-roam is unable to find the Graphviz executable on your system.
|
||||
Path to the graphing executable (in this case, Graphviz). Set this if Org-roam
|
||||
is unable to find the Graphviz executable on your system.
|
||||
|
||||
You may also choose to use ~neato~ in place of ~dot~, which generates a more
|
||||
compact graph layout.
|
||||
|
||||
- User Option: org-roam-graph-viewer
|
||||
|
||||
Org-roam defaults to using Firefox (located on PATH) to view the SVG, but you may choose to set it to:
|
||||
Org-roam defaults to using Firefox (located on PATH) to view the SVG, but you
|
||||
may choose to set it to:
|
||||
|
||||
1. A string, which is a path to the program used
|
||||
2. a function accepting a single argument: the graph file path.
|
||||
|
||||
~nil~ uses ~view-file~ to view the graph.
|
||||
|
||||
If you are using WSL2 and would like to open the graph in Windows, you can use the second option to set the browser and network file path:
|
||||
If you are using WSL2 and would like to open the graph in Windows, you can use
|
||||
the second option to set the browser and network file path:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq org-roam-graph-viewer
|
||||
@ -786,7 +821,9 @@ The entry point to graph creation is ~org-roam-graph~.
|
||||
|
||||
** Graph Options
|
||||
|
||||
Graphviz provides many options for customizing the graph output, and Org-roam supports some of them. See https://graphviz.gitlab.io/_pages/doc/info/attrs.html for customizable options.
|
||||
Graphviz provides many options for customizing the graph output, and Org-roam
|
||||
supports some of them. See https://graphviz.gitlab.io/_pages/doc/info/attrs.html
|
||||
for customizable options.
|
||||
|
||||
- User Option: org-roam-graph-extra-config
|
||||
|
||||
@ -852,12 +889,13 @@ Other options include ~'ido~, and ~'ivy~.
|
||||
|
||||
* Roam Protocol
|
||||
|
||||
Org-roam extends ~org-protocol~ with 2 protocols: the ~roam-file~
|
||||
and ~roam-ref~ protocols.
|
||||
Org-roam extends ~org-protocol~ with 2 protocols: the ~roam-file~ and ~roam-ref~
|
||||
protocols.
|
||||
|
||||
** Installation
|
||||
|
||||
To enable Org-roam's protocol extensions, you have to add the following to your init file:
|
||||
To enable Org-roam's protocol extensions, you have to add the following to your
|
||||
init file:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(require 'org-roam-protocol)
|
||||
@ -868,7 +906,8 @@ The instructions for setting up ~org-protocol~ are reproduced below.
|
||||
We will also need to create a desktop application for ~emacsclient~. The
|
||||
instructions for various platforms are shown below.
|
||||
|
||||
For Linux users, create a desktop application in ~~/.local/share/applications/org-protocol.desktop~:
|
||||
For Linux users, create a desktop application in
|
||||
~~/.local/share/applications/org-protocol.desktop~:
|
||||
|
||||
#+begin_example
|
||||
[Desktop Entry]
|
||||
@ -887,9 +926,9 @@ running in your shell:
|
||||
xdg-mime default org-protocol.desktop x-scheme-handler/org-protocol
|
||||
#+END_SRC
|
||||
|
||||
To disable the "confirm" prompt in Chrome, you can also make Chrome
|
||||
show a checkbox to tick, so that the ~Org-Protocol Client~ app will be used
|
||||
without confirmation. To do this, run in a shell:
|
||||
To disable the "confirm" prompt in Chrome, you can also make Chrome show a
|
||||
checkbox to tick, so that the ~Org-Protocol Client~ app will be used without
|
||||
confirmation. To do this, run in a shell:
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
sudo mkdir -p /etc/opt/chrome/policies/managed/
|
||||
@ -981,13 +1020,15 @@ REGEDIT4
|
||||
@="\"C:\\Windows\\System32\\wsl.exe\" emacsclient \"%1\""
|
||||
#+END_SRC
|
||||
|
||||
The above will forward the protocol to WSL. If you run Emacs natively on Windows, replace the last line with:
|
||||
The above will forward the protocol to WSL. If you run Emacs natively on
|
||||
Windows, replace the last line with:
|
||||
|
||||
#+BEGIN_SRC text
|
||||
@="\"c:\\path\\to\\emacs\\bin\\emacsclientw.exe\" \"%1\""
|
||||
#+END_SRC
|
||||
|
||||
After executing the .reg file, the protocol is registered and you can delete the file.
|
||||
After executing the .reg file, the protocol is registered and you can delete the
|
||||
file.
|
||||
|
||||
** The roam-file protocol
|
||||
|
||||
@ -1055,8 +1096,8 @@ Here is a sane default configuration:
|
||||
#+end_src
|
||||
|
||||
Make sure that ~org-roam-dailies-directory~ appears in ~:file-name~ for your
|
||||
notes to be recognized as daily-notes. You can have different templates
|
||||
placing their notes in different directories, but the one in
|
||||
notes to be recognized as daily-notes. You can have different templates placing
|
||||
their notes in different directories, but the one in
|
||||
~org-roam-dailies-directory~ will be considered as the main one in commands.
|
||||
|
||||
See [[*The Templating System][The Templating System]] for creating new
|
||||
@ -1081,7 +1122,7 @@ specifying the outline-path to a heading:
|
||||
#+end_src
|
||||
|
||||
The template ~l~ will put its notes under the heading ‘Lab notes’, and the
|
||||
template ~j~ will put its notes under the heading ‘Journal’. When you use
|
||||
template ~j~ will put its notes under the heading ‘Journal’. When you use
|
||||
~:olp~, make sure that the headings are present in ~:head~.
|
||||
|
||||
** Capturing and finding daily-notes
|
||||
@ -1153,10 +1194,11 @@ org-roam-doctor~, but note that this may take some time.
|
||||
Perform a check on Org-roam files to ensure cleanliness. If THIS-BUFFER, run
|
||||
the check only for the current buffer.
|
||||
|
||||
The checks run are defined in ~org-roam-doctor--checkers~. By default, there are checkers for broken links and invalid =#+roam_*= properties.
|
||||
The checks run are defined in ~org-roam-doctor--checkers~. By default, there are
|
||||
checkers for broken links and invalid =#+roam_*= properties.
|
||||
|
||||
Each checker is an instance of ~org-roam-doctor-checker~. To define a checker, use
|
||||
~make-org-roam-doctor-checker~. Here is a sample definition:
|
||||
Each checker is an instance of ~org-roam-doctor-checker~. To define a checker,
|
||||
use ~make-org-roam-doctor-checker~. Here is a sample definition:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(make-org-roam-doctor-checker
|
||||
@ -1168,10 +1210,10 @@ Each checker is an instance of ~org-roam-doctor-checker~. To define a checker, u
|
||||
#+END_SRC
|
||||
|
||||
The ~:name~ property is the name of the function run. The function takes in the
|
||||
Org parse tree, and returns a list of ~(point error-message)~. ~:description~ is a
|
||||
short description of what the checker does. ~:actions~ is an alist containing
|
||||
elements of the form ~(char . (prompt . function))~. These actions are defined per
|
||||
checker, to perform autofixes for the errors. For each error detected,
|
||||
Org parse tree, and returns a list of ~(point error-message)~. ~:description~ is
|
||||
a short description of what the checker does. ~:actions~ is an alist containing
|
||||
elements of the form ~(char . (prompt . function))~. These actions are defined
|
||||
per checker, to perform autofixes for the errors. For each error detected,
|
||||
~org-roam-doctor~ will move the point to the current error, and pop-up a help
|
||||
window displaying the error message, as well as the list of actions that can be
|
||||
taken provided in ~:actions~.
|
||||
@ -1199,7 +1241,9 @@ unlinked references within encrypted files.
|
||||
** Garbage Collection
|
||||
|
||||
During the cache-build process, Org-roam generates a lot of in-memory
|
||||
data-structures (such as the Org file's AST), which are discarded after use. These structures are garbage collected at regular intervals (see [[info:elisp#Garbage Collection][info:elisp#Garbage Collection]]).
|
||||
data-structures (such as the Org file's AST), which are discarded after use.
|
||||
These structures are garbage collected at regular intervals (see [[info:elisp#Garbage
|
||||
Collection][info:elisp#Garbage Collection]]).
|
||||
|
||||
Org-roam provides the option ~org-roam-db-gc-threshold~ to temporarily change
|
||||
the threshold value for GC to be triggered during these memory-intensive
|
||||
@ -1247,9 +1291,14 @@ General Public License for more details.
|
||||
|
||||
*** Browsing History with winner-mode
|
||||
|
||||
~winner-mode~ is a global minor mode that allows one to undo and redo changes in the window configuration. It is included with GNU Emacs since version 20.
|
||||
~winner-mode~ is a global minor mode that allows one to undo and redo changes in
|
||||
the window configuration. It is included with GNU Emacs since version 20.
|
||||
|
||||
~winner-mode~ can be used as a simple version of browser history for Org-roam. Each click through org-roam links (from both Org files and the backlinks buffer) causes changes in window configuration, which can be undone and redone using ~winner-mode~. To use ~winner-mode~, simply enable it, and bind the appropriate interactive functions:
|
||||
~winner-mode~ can be used as a simple version of browser history for Org-roam.
|
||||
Each click through org-roam links (from both Org files and the backlinks buffer)
|
||||
causes changes in window configuration, which can be undone and redone using
|
||||
~winner-mode~. To use ~winner-mode~, simply enable it, and bind the appropriate
|
||||
interactive functions:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(winner-mode +1)
|
||||
@ -1287,10 +1336,9 @@ versions of a tracked Org-roam note.
|
||||
(deft-directory "/path/to/org-roam-files/"))
|
||||
#+END_SRC
|
||||
|
||||
If the title of the Org file is not the first line, you might not get
|
||||
nice titles. You may choose to patch this to use ~org-roam~'s
|
||||
functionality. Here I'm using
|
||||
[[https://github.com/raxod502/el-patch][el-patch]]:
|
||||
If the title of the Org file is not the first line, you might not get nice
|
||||
titles. You may choose to patch this to use ~org-roam~'s functionality. Here I'm
|
||||
using [[https://github.com/raxod502/el-patch][el-patch]]:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package el-patch
|
||||
@ -1318,20 +1366,18 @@ functionality. Here I'm using
|
||||
(org-roam--get-title-or-slug file))))
|
||||
#+END_SRC
|
||||
|
||||
The Deft interface can slow down quickly when the number of files get
|
||||
huge. [[https://github.com/hasu/notdeft][Notdeft]] is a fork of Deft
|
||||
that uses an external search engine and indexer.
|
||||
The Deft interface can slow down quickly when the number of files get huge.
|
||||
[[https://github.com/hasu/notdeft][Notdeft]] is a fork of Deft that uses an external search engine and indexer.
|
||||
|
||||
*** Org-journal
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: org-journal
|
||||
:END:
|
||||
|
||||
[[https://github.com/bastibe/org-journal][Org-journal]] provides journaling
|
||||
capabilities to Org-mode. A lot of its functionalities have been incorporated
|
||||
into Org-roam under the name [[*Daily-notes][~org-roam-dailies~]]. It remains
|
||||
a good tool if you want to isolate your verbose journal entries from the ideas
|
||||
you would write on a scratchpad.
|
||||
[[https://github.com/bastibe/org-journal][Org-journal]] provides journaling capabilities to Org-mode. A lot of its
|
||||
functionalities have been incorporated into Org-roam under the name
|
||||
[[*Daily-notes][~org-roam-dailies~]]. It remains a good tool if you want to isolate your verbose
|
||||
journal entries from the ideas you would write on a scratchpad.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package org-journal
|
||||
@ -1411,7 +1457,9 @@ tight integration between
|
||||
~org-roam~. This helps you manage your bibliographic notes under
|
||||
~org-roam~.
|
||||
|
||||
For example, though helm-bibtex provides the ability to visit notes for bibliographic entries, org-roam-bibtex extends it with the ability to visit the file with the right =#+roam_key=.
|
||||
For example, though helm-bibtex provides the ability to visit notes for
|
||||
bibliographic entries, org-roam-bibtex extends it with the ability to visit the
|
||||
file with the right =#+roam_key=.
|
||||
|
||||
**** Spaced Repetition
|
||||
:PROPERTIES:
|
||||
@ -1437,13 +1485,15 @@ contain:
|
||||
(org-roam-db-location . "./org-roam.db"))))
|
||||
#+END_SRC
|
||||
|
||||
All files within that directory will be treated as their own separate
|
||||
set of Org-roam files. Remember to run ~org-roam-db-build-cache~ from a
|
||||
file within that directory, at least once.
|
||||
All files within that directory will be treated as their own separate set of
|
||||
Org-roam files. Remember to run ~org-roam-db-build-cache~ from a file within
|
||||
that directory, at least once.
|
||||
|
||||
** How do I migrate from Roam Research?
|
||||
|
||||
Fabio has produced a command-line tool that converts markdown files exported from Roam Research into Org-roam compatible markdown. More instructions are provided [[https://github.com/fabioberger/roam-migration][in the repository]].
|
||||
Fabio has produced a command-line tool that converts markdown files exported
|
||||
from Roam Research into Org-roam compatible markdown. More instructions are
|
||||
provided [[https://github.com/fabioberger/roam-migration][in the repository]].
|
||||
|
||||
** How do I create a note whose title already matches one of the candidates?
|
||||
|
||||
@ -1453,8 +1503,10 @@ This situation arises when, for example, one would like to create a note titled
|
||||
The solution is dependent on the mini-buffer completion framework in use. Here
|
||||
are the solutions:
|
||||
|
||||
- Ivy :: call ~ivy-immediate-done~, typically bound to ~C-M-j~. Alternatively, set ~ivy-use-selectable-prompt~ to ~t~, so that "bar" is now selectable.
|
||||
- Helm :: Org-roam should provide a selectable "[?] bar" candidate at the top of the candidate list.
|
||||
- Ivy :: call ~ivy-immediate-done~, typically bound to ~C-M-j~. Alternatively,
|
||||
set ~ivy-use-selectable-prompt~ to ~t~, so that "bar" is now selectable.
|
||||
- Helm :: Org-roam should provide a selectable "[?] bar" candidate at the top of
|
||||
the candidate list.
|
||||
|
||||
* Keystroke Index
|
||||
:PROPERTIES:
|
||||
@ -1482,6 +1534,7 @@ are the solutions:
|
||||
# Local Variables:
|
||||
# eval: (require 'ol-info)
|
||||
# eval: (require 'ox-texinfo+ nil t)
|
||||
# eval: (auto-fill-mode +1)
|
||||
# before-save-hook: org-make-toc
|
||||
# after-save-hook: (lambda nil (progn (require 'ox-texinfo nil t) (org-texinfo-export-to-info)))
|
||||
# indent-tabs-mode: nil
|
||||
|
@ -38,15 +38,12 @@ General Public License for more details.
|
||||
@insertcopying
|
||||
@end titlepage
|
||||
|
||||
@contents
|
||||
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top Org-roam User Manual
|
||||
|
||||
@noindent
|
||||
|
||||
@noindent
|
||||
This manual is for Org-roam version 1.2.2.
|
||||
|
||||
@quotation
|
||||
@ -162,6 +159,13 @@ Ecosystem
|
||||
* Org-journal::
|
||||
* Note-taking Add-ons::
|
||||
|
||||
Note-taking Add-ons
|
||||
|
||||
* Org-download::
|
||||
* mathpix.el: mathpixel.
|
||||
* Org-noter / Interleave::
|
||||
* Bibliography::
|
||||
* Spaced Repetition::
|
||||
|
||||
FAQ
|
||||
|
||||
@ -194,19 +198,31 @@ Org-roam provides several benefits over other tooling:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
Privacy and SecurityEdit your personal wiki completely offline, entirely in your control. Encrypt your notes with GPG@.
|
||||
Privacy and SecurityEdit your personal wiki completely offline, entirely
|
||||
in your control. Encrypt your notes with GPG@.
|
||||
|
||||
@item
|
||||
Longevity of Plain TextUnlike web solutions like Roam research, the notes are first and foremost plain Org-mode files -- Org-roam simply builds up an auxilliary database to give the personal wiki superpowers. Having your notes in plain-text is crucial for the longevity of your wiki. Never have to worry about proprietary web solutions being taken down. Edit your plain-text notes in notepad if all other editors cease to exist
|
||||
Longevity of Plain TextUnlike web solutions like Roam research, the notes
|
||||
are first and foremost plain Org-mode files -- Org-roam simply builds up an
|
||||
auxilliary database to give the personal wiki superpowers. Having your notes
|
||||
in plain-text is crucial for the longevity of your wiki. Never have to worry
|
||||
about proprietary web solutions being taken down. Edit your plain-text notes
|
||||
in notepad if all other editors cease to exist
|
||||
|
||||
@item
|
||||
Free and Open SourceOrg-roam is free and open-source, which means that if you feel unhappy with any part of Org-roam, you may choose to extend Org-roam, or open a PR@.
|
||||
Free and Open SourceOrg-roam is free and open-source, which means that if
|
||||
you feel unhappy with any part of Org-roam, you may choose to extend Org-roam,
|
||||
or open a PR@.
|
||||
|
||||
@item
|
||||
Leverages the Org-mode ecosystemOver the years, Emacs and Org-mode has developed into a mature system for plain-text organization. Building upon Org-mode already puts Org-roam light-years ahead of many other solutions.
|
||||
Leverages the Org-mode ecosystemOver the years, Emacs and Org-mode has
|
||||
developed into a mature system for plain-text organization. Building upon
|
||||
Org-mode already puts Org-roam light-years ahead of many other solutions.
|
||||
|
||||
@item
|
||||
Built on EmacsEmacs is also a fantastic interface for editing text, and we can inherit many of the powerful text-navigation and editing packages available to Emacs.
|
||||
Built on EmacsEmacs is also a fantastic interface for editing text, and we
|
||||
can inherit many of the powerful text-navigation and editing packages
|
||||
available to Emacs.
|
||||
@end itemize
|
||||
|
||||
@node Target Audience
|
||||
@ -381,9 +397,16 @@ Org-roam will then be autoloaded into Emacs.
|
||||
@node Installing from the Git Repository
|
||||
@section Installing from the Git Repository
|
||||
|
||||
You may install Org-roam directly from the repository on @uref{https://github.com/org-roam/org-roam, GitHub} if you like. This will give you access to the latest version hours or days before it appears on MELPA, and months (or more) before it is added to the Debian or Ubuntu repositories. This will also give you access to various developmental branches that may be available.
|
||||
You may install Org-roam directly from the repository on @uref{https://github.com/org-roam/org-roam, GitHub} if you like.
|
||||
This will give you access to the latest version hours or days before it appears
|
||||
on MELPA, and months (or more) before it is added to the Debian or Ubuntu
|
||||
repositories. This will also give you access to various developmental branches
|
||||
that may be available.
|
||||
|
||||
Note, however, that development version, and especially any feature branches, may not always be in working order. You'll need to be prepared to do some debugging, or to manually roll-back to working versions, if you install from GitHub.
|
||||
Note, however, that development version, and especially any feature branches,
|
||||
may not always be in working order. You'll need to be prepared to do some
|
||||
debugging, or to manually roll-back to working versions, if you install from
|
||||
GitHub.
|
||||
|
||||
Installing from GitHub requires that you clone the repository:
|
||||
|
||||
@ -393,14 +416,16 @@ git clone https://github.com/org-roam/org-roam.git /path/to/org/roam
|
||||
|
||||
where @code{./path/to/org/roam} is the location you will store your copy of the code.
|
||||
|
||||
Next, you need to add this location to your load path, and @code{require} the Org-roam library. Add the following code to your @code{.emacs}:
|
||||
Next, you need to add this location to your load path, and @code{require} the
|
||||
Org-roam library. Add the following code to your @code{.emacs}:
|
||||
|
||||
@lisp
|
||||
(add-to-list 'load-path "/path/to/org/roam")
|
||||
(require 'org-roam)
|
||||
@end lisp
|
||||
|
||||
You now have Org-roam installed. However, you don't necessarily have the dependencies that it requires. These include:
|
||||
You now have Org-roam installed. However, you don't necessarily have the
|
||||
dependencies that it requires. These include:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
@ -422,17 +447,25 @@ emacsql
|
||||
emacsql-sqlite3
|
||||
@end itemize
|
||||
|
||||
You can install this manually as well, or get the latest version from MELPA@. You may wish to use @uref{https://github.com/jwiegley/use-package, use-package}, @uref{https://github.com/raxod502/straight.el, straight.el}, or some other tool or tools to help manage this.
|
||||
You can install this manually as well, or get the latest version from MELPA@. You
|
||||
may wish to use @uref{https://github.com/jwiegley/use-package, use-package}, @uref{https://github.com/raxod502/straight.el, straight.el}, or some other tool or tools to help
|
||||
manage this.
|
||||
|
||||
If you would like to install the manual for access from Emacs' built-in Info system, you'll need to compile the .texi source file, and install it in an appropriate location.
|
||||
If you would like to install the manual for access from Emacs' built-in Info
|
||||
system, you'll need to compile the .texi source file, and install it in an
|
||||
appropriate location.
|
||||
|
||||
To compile the .texi source file, from a terminal navigate to the @code{/doc} subdirectory of the Org-roam repository, and run the following:
|
||||
To compile the .texi source file, from a terminal navigate to the @code{/doc}
|
||||
subdirectory of the Org-roam repository, and run the following:
|
||||
|
||||
@example
|
||||
make infodir=/path/to/my/info/files install-info
|
||||
@end example
|
||||
|
||||
Where @code{/path/to/my/info/files} is the location where you keep info files. This target directory needs to be stored in the variable `Info-default-directory-list`. If you aren't using one of the default info locations, you can configure this with the following in your @code{.emacs} file:
|
||||
Where @code{/path/to/my/info/files} is the location where you keep info files. This
|
||||
target directory needs to be stored in the variable
|
||||
`Info-default-directory-list`. If you aren't using one of the default info
|
||||
locations, you can configure this with the following in your @code{.emacs} file:
|
||||
|
||||
@lisp
|
||||
(require 'info)
|
||||
@ -453,9 +486,11 @@ You can also use one of the default locations, such as:
|
||||
@emph{usr/local/share/info}
|
||||
@end itemize
|
||||
|
||||
If you do this, you'll need to make sure you have write-access to that location, or run the above @code{make} command as root.
|
||||
If you do this, you'll need to make sure you have write-access to that location,
|
||||
or run the above @code{make} command as root.
|
||||
|
||||
Now that the info file is ready, you need to add it to the corresponding @code{dir} file:
|
||||
Now that the info file is ready, you need to add it to the corresponding @code{dir}
|
||||
file:
|
||||
|
||||
@example
|
||||
install-info /path/to/my/info/files/org-roam.info /path/to/my/info/files/dir
|
||||
@ -625,7 +660,8 @@ If you wish to add your own title extraction method, you may push a symbol
|
||||
|
||||
Tags are used as meta-data for files: they facilitate interactions with notes
|
||||
where titles are insufficient. For example, tags allow for categorization of
|
||||
notes: differentiating between bibliographical and structure notes during interactive commands.
|
||||
notes: differentiating between bibliographical and structure notes during
|
||||
interactive commands.
|
||||
|
||||
Org-roam calls @code{org-roam--extract-tags} to extract tags from files. It uses the
|
||||
variable @code{org-roam-tag-sources}, to control how tags are extracted. The tag
|
||||
@ -633,7 +669,8 @@ extraction methods supported are:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
@code{'prop}: This extracts tags from the @code{#+roam_tags} property. Tags are space delimited, and can be multi-word using double quotes.
|
||||
@code{'prop}: This extracts tags from the @code{#+roam_tags} property. Tags are space
|
||||
delimited, and can be multi-word using double quotes.
|
||||
|
||||
@item
|
||||
@code{'all-directories}: All sub-directories relative to @code{org-roam-directory} are
|
||||
@ -666,19 +703,20 @@ accepts the absolute file path as its argument. See
|
||||
@node File Refs
|
||||
@section File Refs
|
||||
|
||||
Refs are unique identifiers for files. For example, a note for a website may contain a ref:
|
||||
Refs are unique identifiers for files. For example, a note for a website may
|
||||
contain a ref:
|
||||
|
||||
@example
|
||||
#+title: Google
|
||||
#+roam_key: https://www.google.com/
|
||||
@end example
|
||||
|
||||
These keys allow references to the key to show up in the backlinks buffer. For instance,
|
||||
with the example above, if another file then links to @uref{https://www.google.com}, that will
|
||||
show up as a “Ref Backlink”.
|
||||
These keys allow references to the key to show up in the backlinks buffer. For
|
||||
instance, with the example above, if another file then links to
|
||||
@uref{https://www.google.com}, that will show up as a “Ref Backlink”.
|
||||
|
||||
These keys also come in useful for when taking website notes, using the @code{roam-ref} protocol
|
||||
(see @ref{Roam Protocol}).
|
||||
These keys also come in useful for when taking website notes, using the
|
||||
@code{roam-ref} protocol (see @ref{Roam Protocol}).
|
||||
|
||||
@uref{https://github.com/jkitchin/org-ref, org-ref} citation keys can also be used as refs:
|
||||
|
||||
@ -692,9 +730,9 @@ These keys also come in useful for when taking website notes, using the @code{ro
|
||||
@caption{org-ref-citelink}
|
||||
@end float
|
||||
|
||||
You may assign multiple refs to a single file, for example when you want multiple papers
|
||||
in a series to share the same note, or an article has a citation key and a URL at the same
|
||||
time.
|
||||
You may assign multiple refs to a single file, for example when you want
|
||||
multiple papers in a series to share the same note, or an article has a citation
|
||||
key and a URL at the same time.
|
||||
|
||||
@node The Templating System
|
||||
@chapter The Templating System
|
||||
@ -751,8 +789,8 @@ the default template, reproduced below.
|
||||
|
||||
@itemize
|
||||
@item
|
||||
The template has short key @code{"d"}. If you have only one template,
|
||||
org-roam automatically chooses this template for you.
|
||||
The template has short key @code{"d"}. If you have only one template, org-roam
|
||||
automatically chooses this template for you.
|
||||
|
||||
@item
|
||||
The template is given a description of @code{"default"}.
|
||||
@ -766,8 +804,7 @@ The template is given a description of @code{"default"}.
|
||||
|
||||
@item
|
||||
@code{"%?"} is the template inserted on each call to @code{org-roam-capture--capture}.
|
||||
This template means don't insert any content, but place the cursor
|
||||
here.
|
||||
This template means don't insert any content, but place the cursor here.
|
||||
|
||||
@item
|
||||
@code{:file-name} is the file-name template for a new note, if it doesn't yet
|
||||
@ -804,9 +841,9 @@ provided title. @code{$@{title@}} is then expanded into the provided title durin
|
||||
org-capture process. Any variables that do not contain strings, are prompted for
|
||||
values using @code{completing-read}.
|
||||
|
||||
After doing this expansion, the org-capture's template expansion system
|
||||
is used to fill up the rest of the template. You may read up more on
|
||||
this on @uref{https://orgmode.org/manual/Template-expansion.html#Template-expansion, org-capture's documentation page}.
|
||||
After doing this expansion, the org-capture's template expansion system is used
|
||||
to fill up the rest of the template. You may read up more on this on
|
||||
@uref{https://orgmode.org/manual/Template-expansion.html#Template-expansion, org-capture's documentation page}.
|
||||
|
||||
To illustrate this dual expansion process, take for example the template string:
|
||||
@code{"%<%Y%m%d%H%M%S>-$@{title@}"}, with the title @code{"Foo"}. The template is first
|
||||
@ -829,12 +866,12 @@ directly to provide its third argument to specify UTC@.
|
||||
@node Concepts and Configuration
|
||||
@chapter Concepts and Configuration
|
||||
|
||||
The number of configuration options is deliberately kept small, to keep
|
||||
the Org-roam codebase manageable. However, we attempt to accommodate as
|
||||
many usage styles as possible.
|
||||
The number of configuration options is deliberately kept small, to keep the
|
||||
Org-roam codebase manageable. However, we attempt to accommodate as many usage
|
||||
styles as possible.
|
||||
|
||||
All of Org-roam's customization options can be viewed via
|
||||
@code{M-x customize-group org-roam}.
|
||||
All of Org-roam's customization options can be viewed via @code{M-x customize-group
|
||||
org-roam}.
|
||||
|
||||
@menu
|
||||
* Directories and Files::
|
||||
@ -955,17 +992,20 @@ registers this link type, and interprets the path as follows:
|
||||
@code{[[roam:title]]}links to an Org-roam file with title or alias ``title''
|
||||
|
||||
@item
|
||||
@code{[[roam:*headline]]}links to the headline ``headline'' in the current Org-roam file
|
||||
@code{[[roam:*headline]]}links to the headline ``headline'' in the current
|
||||
Org-roam file
|
||||
|
||||
@item
|
||||
@code{[[roam:title*headline]]}links to the headline ``headline'' in the Org-roam file with title or alias ``title''
|
||||
@code{[[roam:title*headline]]}links to the headline ``headline'' in the Org-roam
|
||||
file with title or alias ``title''
|
||||
@end itemize
|
||||
|
||||
@code{roam} links support auto-completion via @code{completion-at-point}: simply call
|
||||
@code{completion-at-point} within a roam link. Users of @code{company-mode} may want to
|
||||
prepend @code{company-capf} to the beginning of variable @code{company-backends}.
|
||||
|
||||
To easily insert @code{roam} links, one may wish to use a package like @uref{https://github.com/emacsorphanage/key-chord/, key-chord}. In the following example, typing ``[['' will insert a stub @code{roam} link:
|
||||
To easily insert @code{roam} links, one may wish to use a package like @uref{https://github.com/emacsorphanage/key-chord/, key-chord}. In
|
||||
the following example, typing ``[['' will insert a stub @code{roam} link:
|
||||
|
||||
@lisp
|
||||
(key-chord-define org-mode-map "[[" #'my/insert-roam-link)
|
||||
@ -1041,13 +1081,13 @@ GPG), which can be enabled for all new files by setting @code{org-roam-encrypt-f
|
||||
to @code{t}. When enabled, new files are created with the @code{.org.gpg} extension and
|
||||
decryption are handled automatically by EasyPG@.
|
||||
|
||||
Note that Emacs will prompt for a password for encrypted files during
|
||||
cache updates if it requires reading the encrypted file. To reduce the
|
||||
number of password prompts, you may wish to cache the password.
|
||||
Note that Emacs will prompt for a password for encrypted files during cache
|
||||
updates if it requires reading the encrypted file. To reduce the number of
|
||||
password prompts, you may wish to cache the password.
|
||||
|
||||
@defopt org-roam-encrypt-files
|
||||
|
||||
Whether to encrypt new files. If true, create files with .org.gpg extension.
|
||||
Whether to encrypt new files. If true, create files with .org.gpg extension.
|
||||
@end defopt
|
||||
|
||||
@node Graphing
|
||||
@ -1088,7 +1128,8 @@ ARG may be any of the following values:
|
||||
|
||||
@defopt org-roam-graph-executable
|
||||
|
||||
Path to the graphing executable (in this case, Graphviz). Set this if Org-roam is unable to find the Graphviz executable on your system.
|
||||
Path to the graphing executable (in this case, Graphviz). Set this if Org-roam
|
||||
is unable to find the Graphviz executable on your system.
|
||||
|
||||
You may also choose to use @code{neato} in place of @code{dot}, which generates a more
|
||||
compact graph layout.
|
||||
@ -1096,7 +1137,8 @@ compact graph layout.
|
||||
|
||||
@defopt org-roam-graph-viewer
|
||||
|
||||
Org-roam defaults to using Firefox (located on PATH) to view the SVG, but you may choose to set it to:
|
||||
Org-roam defaults to using Firefox (located on PATH) to view the SVG, but you
|
||||
may choose to set it to:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
@ -1108,7 +1150,8 @@ a function accepting a single argument: the graph file path.
|
||||
|
||||
@code{nil} uses @code{view-file} to view the graph.
|
||||
|
||||
If you are using WSL2 and would like to open the graph in Windows, you can use the second option to set the browser and network file path:
|
||||
If you are using WSL2 and would like to open the graph in Windows, you can use
|
||||
the second option to set the browser and network file path:
|
||||
|
||||
@lisp
|
||||
(setq org-roam-graph-viewer
|
||||
@ -1126,7 +1169,9 @@ If you are using WSL2 and would like to open the graph in Windows, you can use t
|
||||
@node Graph Options
|
||||
@section Graph Options
|
||||
|
||||
Graphviz provides many options for customizing the graph output, and Org-roam supports some of them. See @uref{https://graphviz.gitlab.io/_pages/doc/info/attrs.html} for customizable options.
|
||||
Graphviz provides many options for customizing the graph output, and Org-roam
|
||||
supports some of them. See @uref{https://graphviz.gitlab.io/_pages/doc/info/attrs.html}
|
||||
for customizable options.
|
||||
|
||||
@defopt org-roam-graph-extra-config
|
||||
|
||||
@ -1200,8 +1245,8 @@ Other options include @code{'ido}, and @code{'ivy}.
|
||||
@node Roam Protocol
|
||||
@chapter Roam Protocol
|
||||
|
||||
Org-roam extends @code{org-protocol} with 2 protocols: the @code{roam-file}
|
||||
and @code{roam-ref} protocols.
|
||||
Org-roam extends @code{org-protocol} with 2 protocols: the @code{roam-file} and @code{roam-ref}
|
||||
protocols.
|
||||
|
||||
@menu
|
||||
* Installation: Installation (1).
|
||||
@ -1212,7 +1257,8 @@ and @code{roam-ref} protocols.
|
||||
@node Installation (1)
|
||||
@section Installation
|
||||
|
||||
To enable Org-roam's protocol extensions, you have to add the following to your init file:
|
||||
To enable Org-roam's protocol extensions, you have to add the following to your
|
||||
init file:
|
||||
|
||||
@lisp
|
||||
(require 'org-roam-protocol)
|
||||
@ -1223,7 +1269,8 @@ The instructions for setting up @code{org-protocol} are reproduced below.
|
||||
We will also need to create a desktop application for @code{emacsclient}. The
|
||||
instructions for various platforms are shown below.
|
||||
|
||||
For Linux users, create a desktop application in @code{~/.local/share/applications/org-protocol.desktop}:
|
||||
For Linux users, create a desktop application in
|
||||
@code{~/.local/share/applications/org-protocol.desktop}:
|
||||
|
||||
@example
|
||||
[Desktop Entry]
|
||||
@ -1242,9 +1289,9 @@ running in your shell:
|
||||
xdg-mime default org-protocol.desktop x-scheme-handler/org-protocol
|
||||
@end example
|
||||
|
||||
To disable the ``confirm'' prompt in Chrome, you can also make Chrome
|
||||
show a checkbox to tick, so that the @code{Org-Protocol Client} app will be used
|
||||
without confirmation. To do this, run in a shell:
|
||||
To disable the ``confirm'' prompt in Chrome, you can also make Chrome show a
|
||||
checkbox to tick, so that the @code{Org-Protocol Client} app will be used without
|
||||
confirmation. To do this, run in a shell:
|
||||
|
||||
@example
|
||||
sudo mkdir -p /etc/opt/chrome/policies/managed/
|
||||
@ -1345,13 +1392,15 @@ REGEDIT4
|
||||
@@="\"C:\\Windows\\System32\\wsl.exe\" emacsclient \"%1\""
|
||||
@end example
|
||||
|
||||
The above will forward the protocol to WSL@. If you run Emacs natively on Windows, replace the last line with:
|
||||
The above will forward the protocol to WSL@. If you run Emacs natively on
|
||||
Windows, replace the last line with:
|
||||
|
||||
@example
|
||||
@@="\"c:\\path\\to\\emacs\\bin\\emacsclientw.exe\" \"%1\""
|
||||
@end example
|
||||
|
||||
After executing the .reg file, the protocol is registered and you can delete the file.
|
||||
After executing the .reg file, the protocol is registered and you can delete the
|
||||
file.
|
||||
|
||||
@node The roam-file protocol
|
||||
@section The roam-file protocol
|
||||
@ -1431,8 +1480,8 @@ Here is a sane default configuration:
|
||||
@end lisp
|
||||
|
||||
Make sure that @code{org-roam-dailies-directory} appears in @code{:file-name} for your
|
||||
notes to be recognized as daily-notes. You can have different templates
|
||||
placing their notes in different directories, but the one in
|
||||
notes to be recognized as daily-notes. You can have different templates placing
|
||||
their notes in different directories, but the one in
|
||||
@code{org-roam-dailies-directory} will be considered as the main one in commands.
|
||||
|
||||
See @ref{The Templating System} for creating new
|
||||
@ -1457,7 +1506,7 @@ specifying the outline-path to a heading:
|
||||
@end lisp
|
||||
|
||||
The template @code{l} will put its notes under the heading ‘Lab notes’, and the
|
||||
template @code{j} will put its notes under the heading ‘Journal’. When you use
|
||||
template @code{j} will put its notes under the heading ‘Journal’. When you use
|
||||
@code{:olp}, make sure that the headings are present in @code{:head}.
|
||||
|
||||
@node Capturing and finding daily-notes
|
||||
@ -1542,10 +1591,11 @@ Perform a check on Org-roam files to ensure cleanliness. If THIS-BUFFER, run
|
||||
the check only for the current buffer.
|
||||
@end defun
|
||||
|
||||
The checks run are defined in @code{org-roam-doctor--checkers}. By default, there are checkers for broken links and invalid @samp{#+roam_*} properties.
|
||||
The checks run are defined in @code{org-roam-doctor--checkers}. By default, there are
|
||||
checkers for broken links and invalid @samp{#+roam_*} properties.
|
||||
|
||||
Each checker is an instance of @code{org-roam-doctor-checker}. To define a checker, use
|
||||
@code{make-org-roam-doctor-checker}. Here is a sample definition:
|
||||
Each checker is an instance of @code{org-roam-doctor-checker}. To define a checker,
|
||||
use @code{make-org-roam-doctor-checker}. Here is a sample definition:
|
||||
|
||||
@lisp
|
||||
(make-org-roam-doctor-checker
|
||||
@ -1557,10 +1607,10 @@ Each checker is an instance of @code{org-roam-doctor-checker}. To define a check
|
||||
@end lisp
|
||||
|
||||
The @code{:name} property is the name of the function run. The function takes in the
|
||||
Org parse tree, and returns a list of @code{(point error-message)}. @code{:description} is a
|
||||
short description of what the checker does. @code{:actions} is an alist containing
|
||||
elements of the form @code{(char . (prompt . function))}. These actions are defined per
|
||||
checker, to perform autofixes for the errors. For each error detected,
|
||||
Org parse tree, and returns a list of @code{(point error-message)}. @code{:description} is
|
||||
a short description of what the checker does. @code{:actions} is an alist containing
|
||||
elements of the form @code{(char . (prompt . function))}. These actions are defined
|
||||
per checker, to perform autofixes for the errors. For each error detected,
|
||||
@code{org-roam-doctor} will move the point to the current error, and pop-up a help
|
||||
window displaying the error message, as well as the list of actions that can be
|
||||
taken provided in @code{:actions}.
|
||||
@ -1600,7 +1650,8 @@ unlinked references within encrypted files.
|
||||
@section Garbage Collection
|
||||
|
||||
During the cache-build process, Org-roam generates a lot of in-memory
|
||||
data-structures (such as the Org file's AST), which are discarded after use. These structures are garbage collected at regular intervals (see @ref{Garbage Collection,info:elisp#Garbage Collection,,elisp,}).
|
||||
data-structures (such as the Org file's AST), which are discarded after use.
|
||||
These structures are garbage collected at regular intervals (see @ref{Garbage Collection,info:elisp#Garbage Collection,,elisp,}).
|
||||
|
||||
Org-roam provides the option @code{org-roam-db-gc-threshold} to temporarily change
|
||||
the threshold value for GC to be triggered during these memory-intensive
|
||||
@ -1674,9 +1725,14 @@ operations. To reduce the number of garbage collection processes, one may set
|
||||
@node Browsing History with winner-mode
|
||||
@subsection Browsing History with winner-mode
|
||||
|
||||
@code{winner-mode} is a global minor mode that allows one to undo and redo changes in the window configuration. It is included with GNU Emacs since version 20.
|
||||
@code{winner-mode} is a global minor mode that allows one to undo and redo changes in
|
||||
the window configuration. It is included with GNU Emacs since version 20.
|
||||
|
||||
@code{winner-mode} can be used as a simple version of browser history for Org-roam. Each click through org-roam links (from both Org files and the backlinks buffer) causes changes in window configuration, which can be undone and redone using @code{winner-mode}. To use @code{winner-mode}, simply enable it, and bind the appropriate interactive functions:
|
||||
@code{winner-mode} can be used as a simple version of browser history for Org-roam.
|
||||
Each click through org-roam links (from both Org files and the backlinks buffer)
|
||||
causes changes in window configuration, which can be undone and redone using
|
||||
@code{winner-mode}. To use @code{winner-mode}, simply enable it, and bind the appropriate
|
||||
interactive functions:
|
||||
|
||||
@lisp
|
||||
(winner-mode +1)
|
||||
@ -1714,10 +1770,9 @@ versions of a tracked Org-roam note.
|
||||
(deft-directory "/path/to/org-roam-files/"))
|
||||
@end lisp
|
||||
|
||||
If the title of the Org file is not the first line, you might not get
|
||||
nice titles. You may choose to patch this to use @code{org-roam}'s
|
||||
functionality. Here I'm using
|
||||
@uref{https://github.com/raxod502/el-patch, el-patch}:
|
||||
If the title of the Org file is not the first line, you might not get nice
|
||||
titles. You may choose to patch this to use @code{org-roam}'s functionality. Here I'm
|
||||
using @uref{https://github.com/raxod502/el-patch, el-patch}:
|
||||
|
||||
@lisp
|
||||
(use-package el-patch
|
||||
@ -1745,18 +1800,16 @@ used as title."
|
||||
(org-roam--get-title-or-slug file))))
|
||||
@end lisp
|
||||
|
||||
The Deft interface can slow down quickly when the number of files get
|
||||
huge. @uref{https://github.com/hasu/notdeft, Notdeft} is a fork of Deft
|
||||
that uses an external search engine and indexer.
|
||||
The Deft interface can slow down quickly when the number of files get huge.
|
||||
@uref{https://github.com/hasu/notdeft, Notdeft} is a fork of Deft that uses an external search engine and indexer.
|
||||
|
||||
@node Org-journal
|
||||
@subsection Org-journal
|
||||
|
||||
@uref{https://github.com/bastibe/org-journal, Org-journal} provides journaling
|
||||
capabilities to Org-mode. A lot of its functionalities have been incorporated
|
||||
into Org-roam under the name @ref{Daily-notes, , @code{org-roam-dailies}}. It remains
|
||||
a good tool if you want to isolate your verbose journal entries from the ideas
|
||||
you would write on a scratchpad.
|
||||
@uref{https://github.com/bastibe/org-journal, Org-journal} provides journaling capabilities to Org-mode. A lot of its
|
||||
functionalities have been incorporated into Org-roam under the name
|
||||
@ref{Daily-notes, , @code{org-roam-dailies}}. It remains a good tool if you want to isolate your verbose
|
||||
journal entries from the ideas you would write on a scratchpad.
|
||||
|
||||
@lisp
|
||||
(use-package org-journal
|
||||
@ -1838,7 +1891,9 @@ tight integration between
|
||||
@code{org-roam}. This helps you manage your bibliographic notes under
|
||||
@code{org-roam}.
|
||||
|
||||
For example, though helm-bibtex provides the ability to visit notes for bibliographic entries, org-roam-bibtex extends it with the ability to visit the file with the right @samp{#+roam_key}.
|
||||
For example, though helm-bibtex provides the ability to visit notes for
|
||||
bibliographic entries, org-roam-bibtex extends it with the ability to visit the
|
||||
file with the right @samp{#+roam_key}.
|
||||
|
||||
@node Spaced Repetition
|
||||
@unnumberedsubsubsec Spaced Repetition
|
||||
@ -1871,14 +1926,16 @@ contain:
|
||||
(org-roam-db-location . "./org-roam.db"))))
|
||||
@end lisp
|
||||
|
||||
All files within that directory will be treated as their own separate
|
||||
set of Org-roam files. Remember to run @code{org-roam-db-build-cache} from a
|
||||
file within that directory, at least once.
|
||||
All files within that directory will be treated as their own separate set of
|
||||
Org-roam files. Remember to run @code{org-roam-db-build-cache} from a file within
|
||||
that directory, at least once.
|
||||
|
||||
@node How do I migrate from Roam Research?
|
||||
@section How do I migrate from Roam Research?
|
||||
|
||||
Fabio has produced a command-line tool that converts markdown files exported from Roam Research into Org-roam compatible markdown. More instructions are provided @uref{https://github.com/fabioberger/roam-migration, in the repository}.
|
||||
Fabio has produced a command-line tool that converts markdown files exported
|
||||
from Roam Research into Org-roam compatible markdown. More instructions are
|
||||
provided @uref{https://github.com/fabioberger/roam-migration, in the repository}.
|
||||
|
||||
@node How do I create a note whose title already matches one of the candidates?
|
||||
@section How do I create a note whose title already matches one of the candidates?
|
||||
@ -1891,10 +1948,12 @@ are the solutions:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
Ivycall @code{ivy-immediate-done}, typically bound to @code{C-M-j}. Alternatively, set @code{ivy-use-selectable-prompt} to @code{t}, so that ``bar'' is now selectable.
|
||||
Ivycall @code{ivy-immediate-done}, typically bound to @code{C-M-j}. Alternatively,
|
||||
set @code{ivy-use-selectable-prompt} to @code{t}, so that ``bar'' is now selectable.
|
||||
|
||||
@item
|
||||
HelmOrg-roam should provide a selectable ``[?] bar'' candidate at the top of the candidate list.
|
||||
HelmOrg-roam should provide a selectable ``[?] bar'' candidate at the top of
|
||||
the candidate list.
|
||||
@end itemize
|
||||
|
||||
@node Keystroke Index
|
||||
|
Reference in New Issue
Block a user