org-roam
Замечательное средство для ведения цеттелькастена, из которого я делаю вот этот цифровой сад. Случайные заметки.
Как обсидиан, только в emacs (то есть, в привычной для емаксеров среде работы с текстом) и на основе формата org-mode (тоже язык легкой разметки, как и markdown, и учитывая весьма крутой и интересный org-mode емакса - это много плюшек). :))
- https://github.com/org-roam/org-roam
- https://github.com/kot-behemoth/awesome-org-roam - крутая штука, awesome-список (в смысле, курируемый и коллективно пополняемый список отобранного) всяких полезняшек к org-roam.
- Dailies не зашли. Сделала себе бложилку на основе mpages, но тоже не использую.
- zettelkasten
- https://www.orgroam.com/manual.html
- org-roam-buffer - The
org-roam-buffer
(window on the right) shows backlinks for the active Org-roam buffer (window on the left), as well as the surrounding content in the backlink file. - M-x org-roam-db-sync помогает, если что-то тормозится с обновлением. В бэклинках или графе.
- org-id-track-globally
- Порядок сортировки при org-roam-node-find или -insert. Org-roam’s default sort order is based on file’s modified time. It is set in variable
org-roam-node-default-sort
(the default, file-mtime; that is, files modified time). - Не получится ссылаться на конкретное место/слово в другом файле. Только ID заголовка. Ссылку на конкретное место не хотят делать принципиально, но ссыль в дискурсе об этом я потеряла.
- альтернативы - denote, org-brain, zetteldeft, zettelkasten (такой вот пакет в melpa)
task management with org-roam
На сейчас (2022-09-24) всякие такие штуки не использую. Список файлов для agenda включает в себя и орг-роамные, но добавляю вручную. При этом сама тема создания проектных файлов именно в орг-роаме — на мой взгляд очень правильна.
- https://org-roam.discourse.group/t/agenda-view-from-nearby-notes/371 - agenda из текущей записи и соседних. Глубина поиска настраиваема.
- https://d12frosted.io/posts/2021-05-21-task-management-with-roam-vol7.html
- https://github.com/d12frosted/vulpea - много всяких плюшек для org-roam. Но мне, по ходу, не надо.
- https://gitlab.com/-/snippets/2161956 - как добавлять в agenda нужные файлы из org-roam. От Aragaer. (Дополнительно определен тег agenda – если я его руками поставил, то в агенду, независимо от наличия тудушек).
- https://systemcrafters.net/build-a-second-brain-in-emacs/5-org-roam-hacks/#selecting-from-a-list-of-notes-with-a-specific-tag - занятные идеи, типа отправлять законченные задачи в дейлики.
обработать каким-то образом все орг-роамные файлы
https://org-roam.discourse.group/t/how-to-list-incomplete-entries/2444/3 Здесь - всем добавить тег draft.
(dolist (f (org-roam-list-files)) (progn (interactive) (find-file f) (org-roam-tag-add '("draft")) (save-buffer) (kill-current-buffer)))
Искалочка оргроамного - по тегам, названию, части пути.
Если захочется делать сохранённые поиски.
(org-roam-node-find t "japan" nil)
[[elisp:(org-roam-node-find t "japan" nil)]] - в виде ссылки.
Если это оставить ссылкой, org-roam-graph портится — делает dot, который не конвертируется в svg из-за синтаксической ошибки.
Какой примерно командой можно смотреть, что там пошло не так, подставляя правильное имя файла:
dot -Tpng /tmp/input.dot > output.png
dot -Tsvg /tmp/input.dot > output.svg
Соответственно, png и svg на выходе.
И ещё есть org-roam-db-query.
Переименовывать файл вслед за тайтлом. Мне, по ходу, ненужное.
, примерно как в v1 https://org-roam.discourse.group/t/does-renaming-title-no-longer-renames-the-filename/2018/2
(defun azr/org-roam-modify-title () "Modify title of org-roam current node and update all backlinks in roam database." (interactive) (unless (org-roam-buffer-p) (error "Not in an org-roam buffer.")) (save-some-buffers t) (let* ((old-title (org-roam-get-keyword "title")) (ID (org-entry-get (point) "ID")) (new-title (read-string "Enter new title: " old-title))) (org-roam-set-keyword "title" new-title) (save-buffer) (let* ((new-slug (org-roam-node-slug (org-roam-node-at-point))) (new-file-name (replace-regexp-in-string "-.*\\.org" (format "-%s.org" new-slug) (buffer-file-name))) (new-buffer-name (file-name-nondirectory new-file-name))) (rename-buffer new-buffer-name) (rename-file (buffer-file-name) new-file-name 1) (set-visited-file-name new-file-name)) ; I don't know why this last command is necessary. Getting it from here: https://stackoverflow.com/a/384346/2422698 (save-buffer) ;; Rename backlinks in the rest of the Org-roam database. (let* ((search (format "[[id:%s][%s]]" ID old-title)) (replace (format "[[id:%s][%s]]" ID new-title)) (rg-command (format "rg -t org -lF %s ~/Org/roam/" search)) (file-list (split-string (shell-command-to-string rg-command)))) (dolist (file file-list) (let ((file-open (get-file-buffer file))) (find-file file) (beginning-of-buffer) (while (search-forward search nil t) (replace-match replace)) (save-buffer) (unless file-open (kill-buffer)))))))
Как сделать заголовок с id не узлом графа
Засунуть в PROPERTIES
:ROAM_EXCLUDE: t
Чтобы видеть структуру - org-roam-graph.
- https://graphviz.gitlab.io/doc/info/attrs.html - полезное, из которого можно потом вынуть настройки
- https://gist.github.com/rasendubi/0519d4033b7b838bba86459e26660935 - ценное про исключать узлы.
The entry point to graph creation is org-roam-graph. Прикрутила к кнопочкам C-c n g
Function: org-roam-graph & optional arg file node-query
Build and possibly display a graph for FILE from NODE-QUERY. If FILE is nil, default to current buffer’s file name. ARG may be any of the following values:
- nil show the graph.
- C-u show the graph for FILE.
- C-u N show the graph for FILE limiting nodes to N steps.
- C-u C-u build the graph.
- C-u - build the graph for FILE.
- C-u -N build the graph for FILE limiting nodes to N steps.
- https://lucidmanager.org/data-science/visualise-org-roam/ - теоретицки еще такое можно сделать.
- https://org-roam.discourse.group/t/how-to-prevent-https-links-from-showing-up-in-org-roam-graph/3282/ - возможность исключать типы ссылок прям сильно повышает удобство просмотра графа. У меня ничотак список собрался очень быстро:
(setq org-roam-graph-link-hidden-types '("file" "https" "http" "mpv" "edraw" "custom-id" "ftp" "mailto"))
. 2023-11-20 - https://github.com/chrisbarrett/nursery - полезняшков, как я погляжу.
- https://org-roam.discourse.group/t/how-to-capture-to-org-daily-under-a-specific-heading/2892/5
https://org-roam.discourse.group/t/update-a-field-last-modified-at-save/321/7 - способ обновлять тег Last-modified
(require 'time-stamp) (add-hook 'write-file-functions 'time-stamp)
сохранённый поиск - уже не помню, чем заинтересовало
following query to retrieve the file names of all notes that are related (target of links) to notes that have embedding and change in their file names:
SELECT DISTINCT(source) FROM links WHERE dest LIKE "%embedding%" INTERSECT SELECT DISTINCT(source) FROM links WHERE dest LIKE "%change%" сохраненный поиск https://org-roam.discourse.group/t/how-to-create-a-link-to-a-org-roam-search/85/3
убрать с модлайна org-roam-ui и org-roam-ui-follow моды
(diminish 'org-roam-ui-mode) (diminish 'org-roam-ui-follow-mode)
Ссылки
- https://github.com/ahmed-shariff/org-roam-ql - занятная искалка. 2023-08-15
- https://github.com/aatmunbaxi/org-roam-pygraph - Python library for building graphs out of org-roam collections
- https://github.com/publicimageltd/delve - provides tools to collect, inspect and edit Org Roam Nodes in a separate application buffer. It helps you to quickly establish and maintain a project-specific subset of Org Roam Nodes, e.g. when writing a paper or for collecting information on a particular topic. Those subsets (called ‘collections’) can be stored persistently in separate files. Delve also offers functions to ‘edit’ nodes, e.g. by adding or removing tags without having to open the node’s file itself.
- https://github.com/Vidianos-Giannitsis/zetteldesk.el
- https://github.com/org-roam/org-roam/wiki/Hitchhiker's-Rough-Guide-to-Org-roam-V2 - разное полезное
- https://github.com/org-roam/org-roam-ui It will start a web server on http://127.0.0.1:35901/ and connect to it via a WebSocket for real-time updates. Хорошая штука, но практически не использую.
- https://github.com/nobiot/org-transclusion Кажется, решение к моей давней печали о том, что нет способа заэкспортировать дерево, начиная от конкретного файла. Но не способ экспортировать дерево, начиная от конкретного файла, а способ включать в файл другие файлы или их фрагменты.
- https://commonplace.doubleloop.net/publishing-org-roam-via-gitlab-ci - как публиковать при использовании гитлаба. Кажется, я не очень заинтересована. У меня сейчас org-static-blog и просто напрямую заливать на сайт.
- https://org-roam.discourse.group/t/understanding-file-refs/786 - про refs - предназначены либо для ссылок, либо для bibtex-refs.
- org-roam-extract-subtree - для созидания нового файла из узла, существующего как поддерево. https://org-roam.discourse.group/t/refactoring-items-out-of-a-node/1857/2
- https://github.com/nobiot/emacsql-sqlite.exe - полезное для тех, кто ставит org-roam на виндах
- https://org-roam.discourse.group/t/export-backlinks-on-org-export/1756/22
- https://org-roam.discourse.group/t/reintroduce-org-roam-jump-to-index-in-v2/2050/ - очень тронута тем, как нежно выглядит общение с начинающим прогать человеком на орг-роамном дискурсе
- https://org-roam.discourse.group/t/show-nodes-of-same-tag-in-org-roam-buffer/2270 - показывать файлы с тем же тегом.
- https://org-roam.discourse.group/t/export-backlinks-on-org-export/1756/24 - бэклинки при экспорте. Может, даже начну пользоваться снова - там, кажется, научились фильтровать по тегу в файле, откуда бэклинк. 2022-01-21
- https://org-roam.discourse.group/t/my-expectations-of-unlinked-references-must-be-off/626 - несвязанные упоминания. Вроде как должно находить упоминания карточки без ссылки на карточку.
- https://jethrokuan.github.io/org-roam-guide/ - как ведет свои записи создатель org-roam. Хорошо написано.
https://www.brettwitty.net/exocortex.html - ещё один чел своё описал. Есть полезняшка про случайную заметку, помеченную определённым тегом:
(defun org-roam-is-stub-p (node) "Is this org-roam node a STUB?" (member "STUB" (org-roam-node-tags node)) )
(defun org-roam-random-stub () "Get a random node with the STUB tag. " (org-roam-node-random nil 'org-roam-is-stub-p))
- https://emacs.stackexchange.com/questions/59126/how-to-configure-org-roam-bibtex-properly
- bibtex и окрестности
- https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60872 - emacsql-sqlite ломался. Сказывается в том числе как неработа org-roam. Selecting deleted file чуть что. Лечится - найти в emacsql-sqlite.el
(coding-system-for-write 'utf-8-auto)
, заменить на(coding-system-for-write 'utf-8)
. Думаю, до большинства в принципе не доползёт :) Давно это было :) - https://honnef.co/articles/my-org-roam-workflows-for-taking-notes-and-writing-articles/