summaryrefslogtreecommitdiff
path: root/org-roam-ui.el
AgeCommit message (Collapse)Author
2021-08-06feature: warning when people are not using proper org-roamThomas F. K. Jorna
2021-08-06features!: context menu, better ui, and smoother updatesThomas F. K. Jorna
2021-08-05fix: update notes smoothlyThomas F. K. Jorna
2021-08-05feature: context menu and slightly less jumpy graphThomas F. K. Jorna
2021-08-04Add the ability to retitle reference notes with bibliographyBrian Lester
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.
2021-08-04Allow user styling of citation nodes via templates.Brian Lester
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.
2021-08-04feature: changed title format & default settingThomas F. K. Jorna
2021-08-03Use `org-roam-bibtex` to find titles for node-less cite nodes.Brian Lester
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)
2021-08-02Process org-roam-bibtex citations links differently depending on if theyBrian Lester
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.
2021-08-02feature: tag filtering lotic and uiThomas F. K. Jorna
2021-08-02build: citelinksThomas F. K. Jorna
2021-08-02feature: citation optionsThomas F. K. Jorna
2021-08-02feature: open org-roam-ui by defaultThomas F. K. Jorna
2021-08-01Convert cite links with an associated node into id linksBrian Lester
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.
2021-08-01made .el MELPA compatibleThomas F. K. Jorna
2021-08-01better docstring and readme for custom themeThomas F. K. Jorna
2021-07-31removed weird function callThomas F. K. Jorna
2021-07-31added clicking without org-protocolThomas F. K. Jorna
2021-07-31maed on save configurableThomas F. K. Jorna
2021-07-31fixed root directiory being set incorrectlyThomas F. K. Jorna
2021-07-31dotted all the ts and crossed the isThomas F. K. Jorna
2021-07-31tried to add expanding follow, and failedThomas F. K. Jorna
2021-07-31added customization for follow behavior'Thomas F. K. Jorna
2021-07-30lots of label customization + fixesThomas F. K. Jorna
2021-07-30Update graph on file saveKirill Rogovoy
2021-07-30Fix node following breaking on minibufferKirill Rogovoy
2021-07-29emacsnode for mlordThomas F. K. Jorna
2021-07-29added proper toggle for followingThomas F. K. Jorna
2021-07-29new functions which do thingsThomas F. K. Jorna
2021-07-29made websocket automatically reconnectThomas F. K. Jorna
2021-07-29added websocket checks and 3d labelsThomas F. K. Jorna
2021-07-29buffer NAMEThomas F. K. Jorna
2021-07-29added minibuf checkThomas F. K. Jorna
2021-07-28added some more tweaksThomas F. K. Jorna
2021-07-28changed theme sync to websocketsThomas F. K. Jorna
2021-07-28added websocket implementationThomas F. K. Jorna
2021-07-27added build files to repoThomas F. K. Jorna
2021-07-27added autoload cookiesThomas F. K. Jorna
2021-07-26minor cleanupsThomas F. K. Jorna
2021-07-26added custom theme for allThomas F. K. Jorna
2021-07-26file viewer, prettier thingsThomas F. K. Jorna
2021-07-25readded theme servletThomas F. K. Jorna
2021-07-25Remove org-roam-ui-link-children-parentsKirill Rogovoy
2021-07-25added parent node viewing toggleThomas F. K. Jorna
2021-07-24added filter and orphan toggleThomas F. K. Jorna
2021-07-24smoother animation + select animation algoThomas F. K. Jorna
2021-07-23Add production buildKirill Rogovoy
2021-07-23Add README and upload production buildKirill Rogovoy
2021-07-23resolving merge conflictsThomas F. K. Jorna
2021-07-23added theme trackingThomas F. K. Jorna