Age | Commit message (Collapse) | Author |
|
|
|
Convention appears to be that the name is prefixed by a space, not suffixed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
information.
This change adds the ability to update the title of notes that have a
`:ROAM_REFS:` property and an associated bibtex entry. The new title
will be created by `orb--pre-expand-template` and the
`org-roam-ui-ref-title-template`, just like citation nodes that don't
have associated nodes. This also requires that `org-ref` be loaded,
otherwise it falls back to the original title.
I put this behind another customizable variable in case it gets slow or
a user wants to title reference nodes with the title they actually have
in the node.
Currently the handing of citation links throughout `org-roam` and
`org-roam-bibtex` is rather scatter and seems rather brittle. At version
points, different code processes the `:ROAM_REF:` filed differently, and
it seems mostly because the fact that the default citation format
`cite:%s` is so simple is why it works. For example, when inserting a
ref into the database, org-roam uses the `org-link-plain-re` regex to
normalize the reference. This results in the `cite:` being removed. When
processing a link, it depends on the fact that `org` itself has split
the link to `:type` and `:path`. The `:path` (without the `cite:`) is
then inserted. In `org-roam-bibtex` they use `org-ref-cite-re` to
remove the `cite:`, turning it into a key that is in the bibliography.
In the PR, I followed the `org-roam-bibtex` method, parsing the
`:ROAM_REFS:` property directly. We could also update the db node query
to do a left outer join on the refs table. We then would have a new
`refs` field on the node (we wouldn't need to send this over the wire)
that is already formatted the way the database (and `org-roam-bibtex`)
expect it to be. Then we wouldn't need to worry about our parsing
getting out of sync with the other libraries. We would end up having to
deal with multiple rows for the same node if it has multiple `refs`. I
can look into a solution like this is we want.
Another small thing to note, is that `:ROAM_REFS` doesn't have to
specifically be a citation key for a bibliography. The examples have
things like linking to google.com and then that is a reference where
links to google can send you to your google note. In the UI we just
check if `:ROAM_REFS:` is a there or not to making something a citation.
Eventually we may want to actually include the `type` field from the
`refs` table and make our decision based on that instead.
|
|
This change updates the way that the title field is created for a
citation node without an underlying node.
Instead of manually calling `orb-bib-entry-get-value-function` and
building the title via concatenation, it uses `orb--pre-xpand-template`
to create a title.
The template used can be customized with the
`org-roam-ui-ref-title-template` variable.
|
|
|
|
This change uses `org-roam-bibtex` (if it and it's dependencies are
installed) to look up the cite links that do not have an associated
node in the bibliography. This feature also needs to be enabled by
setting `org-roam-ui-find-ref-title` variable to `'t`.
This uses `fboundp` and `boundp` to check if `org-roam-bibtex` is
installed, this are the same kinds of checks that projectile uses to
decide between backends like helm or ivy, so it seems like a reason
approach.
I currently have only tested on my personal graph which only has around
10 node-less cite links, so I don't know how drastically this would slow
things down. Given that bibliography entries are not updated often it
think it would be safe to cache the titles based on the ref, then only
the initial load of the graph would be slow. Later, adding a cite link
to a new entry would get looked up, but that wouldn't be a huge cost. We
could either roll our own with a hash table or bring in a
[memoization library](https://github.com/skeeto/emacs-memoize)
|
|
have an associated node.
It is easy to imagine how overlapping citations could clue one into
connections about otherwise un-related work and generate insights.
However, `org-roam-ui` currently only shows citation links when the
`target` of the link has an associated node, that is, a node with a
matching `:ROAM_REFS:` property. Often one doesn't have a note for every
single thing they cite, and requiring them to create an empty note is a
bad user experience and something that would often be forgotten. Without
having citations links without associated nodes, connections in a users
notes will most likely be missed.
This change splits the handling of `org-roam-bibtex` citations links into
two categories, a citation link (when the target of the link does not
have an associated node, a node with a matching `:ROAM_REFS:`) and a
reference link (when the target of the link does have a node). Reasoning
for the naming is that a citation in a paper is generally just a link to
it, there is no extra commentary from you when that link if followed,
while a reference sound more like something you would refer to for
information, i.e. the notes you took in the attached node. I am willing
to flip the names if we want though.
Citations and References are customizable separately, with new menu
items for node/link color and dashed links added for Reference links.
A new filter option has also been added, the new switch `Citations
without note files` will remove all Citation nodes (and links to them)
when activated.
On the emacs side, this in implemented by using a new link type keyword,
`"ref"`, for any cite link where the target has an underlying node (a
node with a matching `:ROAM_REFS:` property). Links with this new type
are styled according to the new Ref styles in the UI. Any cite link where
the target does _not_ have an underlying node is left as a `"cite"` link.
Additionally, this set of link targets without associated nodes is used
to create fake nodes. These fake nodes have the `ref` key (the link target)
as their `id`, `file`, `title`, and `.properties.ROAM_REFS`. Their `level`
is set to `0`, and a new property, `FILELESS`, is set to `t`. Their id is
used for actually connecting links in the UI, and the new
`.properties.FILELESS` is used to styling a Citation vs a Reference node.
Theoretically, if we wanted to depend on `org-roam-bibtex`, and pay the
cost of look up citation information in the bibliography, we could use
the citation key to look up an actual title in the bibtex bibliography
during node creation, but that seems like it could get heavy for large
numbers of citations.
|
|
|
|
|
|
|
|
|
|
Currently the `org-roam-ui--send-graphdata` function gets all `id` and
`cite` links from the database. They are all sent over the websocket,
but nothing is done to handle the cite links, they don't appear in the
graph. These are not handled because instead of being an (`id` `id`
`type`) tuple, they are (`id` `ref` `type`).
This change uses a join in the DB to get the `id` of the node that `ref`
is associated with. A map function applied to the list of links converts
any cite link whose `ref` has an associated node into an (`id` `id`
`type`) tuple (changing the `type` from `"cite"` to `"id"`). This new
link is correctly handled and appears in the graph.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|