Fixes#1082, #1077, #1074
When reverting link extraction to using the `org-element` api, the
preview content (org-element-at-point) was incorrectly extracted,
causing incorrect preview content and cryptic messages.
org-element-at-point doesn't just determine the closest element -- if
it's "within blank lines at the beginning of buffer", it returns nil.
;; Within blank lines at the beginning of buffer, return nil.
((bobp) nil)
Skip whitespace at beginning of buffer to avoid this.
Adds `org-roam-title-change-hook`. This now contains two functions:
1. `org-roam--update-links-on-title-change`: updates the link
description of all files that link to the current file.
2. `org-roam--update-file-name-on-title-change`: updates the current
buffer's filename to reflect the updated title.
Set `org-inhibit-startup` to `t` to reduce the amount of time taken to set up org-mode buffers. For example, this disables latex image generation, and table alignment.
Also introduces `org-roam-doctor-inhibit-startup`, which speeds up `org-roam-doctor` runs.
Previously the rename file advice was responsible for trying to update
the link descriptions as well. This was brittle and didn't work in some
cases.
The rename-file-advice has now been altered to solely deal with breaking
links. We use the before and after-save-hooks to determine whether the
title has changed, and update the link descriptions accordingly.
Fuzzy links were initially detected as anything within double brackets.
This could include code in source blocks.
This PR introduces `(org-roam--fuzzy-link-p)`. This uses an additional
check using the `org-element` API, and ensures that the link type is
fuzzy (not a file: or https: link, for example).
Fixes#1069, and an array of unreported bugs:
1. Link extraction into the database should no longer pick up false
links (in code blocks, for example).
2. Link completion will only truly work within fuzzy links
Case sensitivity for completions is already controlled via
`completion-ignore-case`, so we remove this variable that doesn't
actually do what is expected.
Queue up file updates, to be processed on idle timer. This makes saving files more responsive for large files.
Co-authored-by: Jethro Kuan <jethrokuan95@gmail.com>
Fuzzy links can now be auto-replaced on navigation and on file-save, if
there is already a match. This is now the default behaviour, controlled
via `org-roam-auto-replace-fuzzy-links`.
When using gpg encrypted files it might happen (intended) that on a
certain machine there is no key to decrypt that file. Currently an
error of type 'file-error' will be raised and the cache building
process will be aborted. So in a certain sense org-roam will not
be functional in that case. Furthermore, when the the cache building
process is run from the emacs initialisation it will come to a halt as
well and the user will be left with a halfworking emacs instance.
This patch changes the behaviour to just skipping over offending files
while removing them from the db at the same time. Here an offending
file is any file that cannot be read for indexing. As it stands this
case only works reliably for the case of missing gpg keys.
An error buffer will still show up and be prominently displayed,
besides a log to the message buffer.
Implementation note: This io error will only be caught during the
first part of the cache rebuilding ("files and headlines"). If such
an error would occur during the second part ("rebuild the rest")
another (more severe) cause might be the problem and the user better
be informed the hard way (i.e. the same behaviour as before).