# Documentation of org-roam in org-roam

**URL:** <https://org-roam.discourse.group/t/documentation-of-org-roam-in-org-roam/3812>\
**Category:** Development\
**Created:** [June 6, 2025, 9:28pm UTC](https://org-roam.discourse.group/t/documentation-of-org-roam-in-org-roam/3812 "2025-06-06T21:28:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dmg](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@dmg](https://org-roam.discourse.group/u/dmg)\
**Post date:** [June 6, 2025, 9:28pm UTC](https://org-roam.discourse.group/t/documentation-of-org-roam-in-org-roam/3812/1 "2025-06-06T21:28:31Z")

</div>

I just finished @nobiot 's great intro to org-roam part 2.

I think these are the documents that should be somehow incorporated into org-roam’s documentation.

I have always felt that the documentation for templates is not that great. One idea would be to provide a “Other documentation” that is a link to several web pages that have, over the years, explain how to use org-roam.

---

<div class="post-metadata">

**Author:** ![akashp](https://yyz2.discourse-cdn.com/free1/user_avatar/org-roam.discourse.group/akashp/32/1383_2.png) [@akashp](https://org-roam.discourse.group/u/akashp)\
**Post date:** [June 7, 2025, 12:59pm UTC](https://org-roam.discourse.group/t/documentation-of-org-roam-in-org-roam/3812/2 "2025-06-07T12:59:59Z")

</div>

@dmg

I have also found that many times people expect org-roam templating system should 1-1 be feature parity with org. But since there is a mechanism of delegation there is always some things lost in translation. For example,

> <https://github.com/org-roam/org-roam/issues/2506>
>
> \### Description
> 
> A capture template with \`:time-prompt t\` doesn't actually promp…t for the time, instead just using the current time.
> 
> \#### Steps to Reproduce
> 
> Execute this with emacs -Q:
> 
> \`\`\`elisp
> (setq org-directory "~/testing"
> org-roam-directory org-directory)
> 
> (progn 
> (require 'package)
> (add-to-list 'package-archives
> '("melpa" . "http://melpa.org/packages/") t)
> (package-initialize)
> (package-refresh-contents)
> (package-install 'org-roam))
> 
> (setq org-roam-directory (concat org-directory "/roam")
> org-roam-capture-templates
> '(("m" "Meeting" entry "\* \[#1\] Meeting %T
> %?"
> :target (file+datetree "meetings.org" month)
> :prepend t
> :time-prompt t)))
> 
> (org-roam-capture)
> \`\`\`
> 
> \#### Expected Results
> 
> I expect to get a prompt (\`:time-prompt t\` is set) for the time. This time should then place the entry in the correct datetree, as well as defining the time for the %T element.
> 
> \#### Actual Results
> 
> The current time is used.
> 
> \### Environment
> 
> \- Emacs: GNU Emacs 29.4 (build 1, x86\_64-pc-linux-gnu, GTK+ Version 3.24.43, cairo version 1.18.2)
> \- Framework: N/A
> \- Org: Org mode version 9.6.15 (release\_9.6.15 @ /usr/share/emacs/29.4/lisp/org/)

I remember once you remarked about bridging this parity, do you think it’s possible?

---

<div class="post-metadata">

**Author:** ![dmg](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@dmg](https://org-roam.discourse.group/u/dmg)\
**Post date:** [June 7, 2025, 4:13pm UTC](https://org-roam.discourse.group/t/documentation-of-org-roam-in-org-roam/3812/3 "2025-06-07T16:13:00Z")

</div>

I started revamping the template system some time ago.

The template system of org-roam is a bit weird. It uses the org-template system. Basically, it parses the template request, splits parameters into org-template and org-roam template, and lets org-template do the work.

one of the things that annoyed me was always being asked for a node, when I know already the node exists.

Currently this is what I have:

- added a new boolean parameter: create-file. It false, the node should exists
- added a node destination. If nil, ask user for node, if non-nil, it should exist
- ask for node name only if no node is provided (this includes file targets)
- added extra modifiers to the target that mimic some of the targets in org templates (eg. node+olp, node+headline).
- trying to pass any non-org-roam parameter to org. I think org has been improving a lot since the original templating system of org-roam and only known parameters were passed. Instead, just pass anything unknown and let org deal with it.

lately I have been struggling with the function target.

overall, I think the main problem of org-roam templates is that they are meant to be used for creating new nodes, not to edit current nodes. Perhaps the best was to combine org-templates for nodes already existing and org-roam templates to create new nodes.

My code is dirty at the moment (due to the creation of the function target) but it is here:

> **[Comparing org-roam:main...dmgerman:main · org-roam/org-roam](https://github.com/org-roam/org-roam/compare/main...dmgerman:org-roam:main)**
>
> Rudimentary Roam replica with Org-mode. Contribute to org-roam/org-roam development by creating an account on GitHub.
