You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I like [[https://github.com/org-roam/org-roam][org-roam]] but found it too slow, so I made [[https://github.com/meedstrom/quickroam][quickroam]]. And that idea spun off into this package, a standalone thing. It may also be easier to pick up than org-roam.
@@ -82,8 +81,8 @@ A comparison of three systems that all permit relying on org-id and don't lock y
82
81
83
82
Go to the manual and close this tab.
84
83
85
-
- in Emacs: [[info:org-node]]
86
84
- in a web browser: [[https://github.com/meedstrom/org-node/blob/main/org-node.org]]
85
+
- or in Emacs after installation: [[info:org-node]]
87
86
88
87
* Advice: Start with a paper Zettelkasten
89
88
@@ -102,4 +101,4 @@ If you are currently in the EU, you can order the pictured paper slips and box h
102
101
103
102
Once these products arrive, take them and a pen with you to the local cafe, if it's a quiet noontime hour (otherwise a library, better in the afternoon).
104
103
105
-
Have a warm coffee, lean back, and read https://zettelkasten.de/introduction/.
104
+
Then have a warm coffee, lean back, and read https://zettelkasten.de/introduction/.
- [ ] (Rewrite =org-node-grep= so it does not need Consult)
21
37
- [ ] Subroutine for *identifying a node by a grep result*, which could be used to insert/extract/capture/refile while only ever completing against grep results
22
-
- [ ] See that issue about untitled notes https://github.com/meedstrom/org-node/issues XXX
38
+
- [ ] See that issue about untitled notes https://github.com/meedstrom/org-node/issues/112
39
+
23
40
Figure out the helper commands you'd want for embedding human-generated IDs in headings/titles.
See at the end of this readme: [[#appendix-ii-how-to-rollback][How to rollback]]
58
58
59
59
60
-
* Quick start
60
+
** Quick start
61
61
62
62
If you're new to these concepts, fear not. The main things for day-to-day operation are two commands:
63
63
@@ -72,108 +72,113 @@ To see a list of all commands, enter an Org buffer and type ~M-o n <f1>~.
72
72
73
73
To browse config options, type ~M-x customize-group RET org-node RET~ (or ~M-o n x o~).
74
74
75
-
* Backlinks
75
+
** Backlinks
76
76
77
77
Backlinks are the butter on the bread that is your notes. If you've ever seen a "What links here" section on some webpage, that's exactly what it is.
78
78
79
79
You do not have to create backlinks yourself, they are autogenerated. The following sections outline two basic ways this can work.
80
80
81
-
** Backlink solution 1: displayed in a separate window
82
-
*** Option 1A: Reuse the org-roam buffer
81
+
*** Backlink solution 1: displayed in a separate window
82
+
- Solution 1A: Reuse the org-roam buffer ::
83
83
84
-
You can use the org-roam buffer without the rest of org-roam! Enable the following mode, then to learn how to invoke the buffer, see [[info:org-roam#The Org-roam Buffer]] or [[https://www.orgroam.com/manual.html#The-Org_002droam-Buffer][online website]].
84
+
You can use the org-roam buffer without the rest of org-roam! Enable the following mode.
85
85
86
-
#+begin_src elisp
87
-
(org-node-roam-accelerator-mode)
88
-
#+end_src
86
+
Then to learn how to invoke the buffer, see their documentation at [[info:org-roam#The Org-roam Buffer]] or [[https://www.orgroam.com/manual.html#The-Org_002droam-Buffer][online website]].
89
87
90
-
*** Option 1B: Use the org-node-context buffer
88
+
#+begin_src elisp
89
+
(org-node-roam-accelerator-mode)
90
+
#+end_src
91
91
92
-
Org-node ships a rewrite of the org-roam buffer, in the included extension org-node-context.el.
93
92
94
-
Try the command =org-node-context-dwim= (~M-o n b~).
93
+
- Solution 1B: Use the org-node-context buffer ::
95
94
96
-
If you like it, consider binding it to an easily typed key, such as =M-o M-b=. Or you can let it keep itself updated, reflecting where point is at all times, by enabling this mode:
95
+
Org-node ships a rewrite of the org-roam buffer, in the included extension org-node-context.el.
96
+
97
+
Try the command =org-node-context-dwim= (~M-o n b~).
98
+
99
+
If you like it, consider binding it to an easily typed key, such as =M-o M-b=. Or you can let it keep itself updated, reflecting where point is at all times, by enabling this mode:
100
+
101
+
#+begin_src elisp
102
+
;; Tip: if you're like org-node's author and constantly lose your window
103
+
;; configuration, the Emacs 30 command `toggle-window-dedicated' (C-x w d)
104
+
;; can help, or simply invoking `org-node-context-dwim' a lot.
105
+
;; The latter strategy tends to make this mode superfluous.
106
+
(org-node-context-follow-mode)
107
+
#+end_src
97
108
98
-
#+begin_src elisp
99
-
;; Tip: if you're like org-node's author and constantly lose your window
100
-
;; configuration, the Emacs 30 command `toggle-window-dedicated' (C-x w d)
101
-
;; can help, or simply invoking `org-node-context-dwim' a lot.
102
-
;; The latter strategy tends to make this mode superfluous.
103
-
(org-node-context-follow-mode)
104
-
#+end_src
105
109
106
-
** Backlink solution 2: Print inside the file
110
+
*** Backlink solution 2: Print inside the file
107
111
I rarely have the screen space to display a backlink buffer. Because it needs my active involvement to keep visible, I go long periods seeing no backlinks.
108
112
109
113
A complementary solution, which can also stand alone, is to have the backlinks /written into/ the file, on an Org property line or in a drawer.
110
114
111
-
The included extension org-node-backlink.el helps you with that.
115
+
To be clear, this solution never generates new IDs (and neither would Solution 1). That's your own business. This only adds/edits =:BACKLINKS:= properties or drawers.
112
116
113
-
NOTE: To be clear, this global minor mode never generates new IDs (and neither would Option 1). That's your own business. This only adds/edits =:BACKLINKS:= properties or drawers, and only gives it backlinks corresponding to links where the original site already has or inherits some ID.
117
+
#+BEGIN_QUOTE
118
+
[!NOTE]
119
+
A difference between org-node-context (solution 1) and org-node-backlink-mode (solution 2) is that the latter only shows backlinks corresponding to links where the original site /already has or inherits some ID/. The former additionally shows backlinks to places that have no ID at all (since v3.14).
120
+
#+END_QUOTE
114
121
115
-
Contrast with org-node-context buffers, which since v3.14 additionally show backlinks to places where the origin has no ID at all. That is not possible for org-node-backlink-mode.
122
+
- Solution 2A: Automatic =:BACKLINKS:= property line ::
116
123
117
-
*** Option 2A: Automatic =:BACKLINKS:= property line
124
+
Add to initfiles:
118
125
119
-
Add to initfiles:
126
+
#+begin_src elisp
127
+
(setq org-node-backlink-do-drawers nil)
128
+
(org-node-backlink-mode)
129
+
#+end_src
120
130
121
-
#+begin_src elisp
122
-
(setq org-node-backlink-do-drawers nil)
123
-
(org-node-backlink-mode)
124
-
#+end_src
131
+
For a first-time run, type ~M-x org-node-backlink-mass-update-props~. (Don't worry if you change your mind; undo with ~M-x org-node-backlink-mass-delete-props~.)
125
132
126
-
For a first-time run, type ~M-x org-node-backlink-mass-update-props~. (Don't worry if you change your mind; undo with ~M-x org-node-backlink-mass-delete-props~.)
For a first-time run, type ~M-x org-node-backlink-mass-update-drawers~. (Don't worry if you change your mind; undo with ~M-x org-node-mass-delete-drawers~.)
145
+
For a first-time run, type ~M-x org-node-backlink-mass-update-drawers~. (Don't worry if you change your mind; undo with ~M-x org-node-mass-delete-drawers~.)
If you were previously using [[https://github.com/toshism/org-super-links][org-super-links]], you can continue letting it manage its drawers, and leave org-node out of the matter.
150
+
If you were previously using [[https://github.com/toshism/org-super-links][org-super-links]], you can continue letting it manage its drawers, and leave org-node out of the matter.
145
151
146
-
Do not enable `org-node-backlink-mode` at all, just add to initfiles:
152
+
Do not enable `org-node-backlink-mode` at all, just add to initfiles:
147
153
148
-
#+begin_src elisp
149
-
(add-hook 'org-node-insert-link-hook
150
-
#'org-super-links-convert-link-to-super)
151
-
#+end_src
154
+
#+begin_src elisp
155
+
(add-hook 'org-node-insert-link-hook
156
+
#'org-super-links-convert-link-to-super)
157
+
#+end_src
152
158
153
-
You may find these tools useful:
159
+
You may find these tools useful:
154
160
155
-
- 1. You can list any dead forward-links to fix them manually:
161
+
- 1. You can list any dead forward-links to fix them manually:
156
162
157
-
~M-x org-node-list-dead-links~
163
+
~M-x org-node-list-dead-links~
158
164
159
-
- 2. You can add all missing backlinks in bulk:
165
+
- 2. You can add all missing backlinks in bulk:
160
166
161
-
~M-x org-node-backlink-mass-update-drawers~
167
+
~M-x org-node-backlink-mass-update-drawers~
162
168
163
-
The second command may be useful as a starting point if you're new to org-super-links, pre-populating the notes you already have.
169
+
The second command may be useful as a starting point if you're new to org-super-links, pre-populating the notes you already have.
164
170
165
-
However, when you have pre-existing drawers... *make a full backup* before trying it!
171
+
However, when you have pre-existing drawers... *make a full backup* before trying it!
166
172
167
-
Org-node has a different usage in mind than org-super-links. You may be accustomed to having old manually formatted and sorted drawers.
173
+
Org-node has a different usage in mind than org-super-links. You may be accustomed to having old manually formatted and sorted drawers.
168
174
169
-
Running aforementioned command *may re-sort your backlinks and re-format their appearance into something you don't want*; double-check the following options:
175
+
Running aforementioned command *may re-sort your backlinks and re-format their appearance into something you don't want*; double-check the following options:
170
176
171
-
- =org-node-backlink-drawer-sorter=
172
-
- =org-node-backlink-drawer-formatter=
177
+
- =org-node-backlink-drawer-sorter=
178
+
- =org-node-backlink-drawer-formatter=
173
179
174
-
Finally, lines that contain no Org link such as =[[id:1234][Title]]= are *deleted*, which would mean *destroying any other info within.* Same if a backlink is stale and no longer valid.
180
+
Finally, lines that contain no Org link such as =[[id:1234][Title]]= are *deleted*, which would mean *destroying any other info within.* Same if a backlink is stale and no longer valid.
175
181
176
-
* Misc
177
182
** Org-capture
178
183
179
184
You may have heard that org-roam has a set of meta-capture templates: the =org-roam-capture-templates=.
@@ -461,8 +466,8 @@ You don't need software for that basic idea, only to make it extra convenient to
461
466
462
467
Thus, fundamentally, any "journal" or "dailies" software are just operating on a sorted series to navigate through. A node sequence. You could have sequences for, let's say, historical events, Star Trek episodes, your school curriculum...
463
468
464
-
* Appendix
465
-
** Appendix I: Rosetta stone
469
+
** Appendix
470
+
*** Appendix I: Rosetta stone
466
471
467
472
API cheatsheet between org-roam and org-node.
468
473
@@ -498,7 +503,7 @@ API cheatsheet between org-roam and org-node.
498
503
| Get =ROAM_EXCLUDE= | | =(org-mem-entry-property "ROAM_EXCLUDE" NODE)= |
499
504
| Ensure fresh data | =(org-roam-db-sync)= | =(org-node-cache-ensure t t)= |
500
505
501
-
** Appendix II: How to rollback
506
+
*** Appendix II: How to rollback
502
507
:PROPERTIES:
503
508
:CUSTOM_ID: appendix-ii-how-to-rollback
504
509
:END:
@@ -549,15 +554,15 @@ With [[https://github.com/radian-software/straight.el][Straight]]:
Org-roam shipped the optional =(require 'org-roam-export)=, a patch to fix =id:= links in HTML export.
555
560
556
561
Good news, upstream fixed the root of the issue in 5e9953fa0! Update Org to 9.7+ (comes with Emacs 30), then set this.
557
562
558
563
: (setq org-html-prefer-user-labels t)
559
564
560
-
** Appendix IV: What are =ROAM_REFS=?
565
+
*** Appendix IV: What are =ROAM_REFS=?
561
566
:PROPERTIES:
562
567
:CUSTOM_ID: appendix-iv-what-are-roam_refs
563
568
:END:
@@ -587,10 +592,10 @@ For performance reasons, not just any string of text is accepted -- it must have
587
592
588
593
Org-roam calls such backlinks /reflinks/. In my view, adding a new word for such a similar concept just increases the air of mystery. That's why in org-node's context buffer, they're just called "ref backlinks" -- as opposed to "ID backlinks".
589
594
590
-
*** What's it actually used for?
595
+
**** What's it actually used for?
591
596
592
597
People often use it to write notes about a specific web-page or PDF file, and call it a ref-node for that resource.
593
598
594
-
*** Citations
599
+
**** Citations
595
600
596
601
As a special case, citation keys such as "@ioannidis2005" also work in =ROAM_REFS=, corresponding to Org citations like =[cite:@ioannidis2005]=.
0 commit comments