Commit Graph

113 Commits

Author SHA1 Message Date
Jethro Kuan
44960f189f fix lints 2021-05-02 17:08:02 +08:00
Jethro Kuan
f8f3870cf0 ensure binary when loading org-roam-db 2021-05-02 16:59:33 +08:00
Jethro Kuan
1bdfc25f80 remove NOTE on foreign key 2021-05-02 16:43:50 +08:00
Jethro Kuan
f8dd345bd1 emacsql-sqlite3 -> emacsql-sqlite
Revert from emacsql-sqlite3 to emacsql-sqlite for foreign key support.
This makes it slightly harder to get Org-roam up and running for
Windows, but not impossible, but foreign keys makes database operations
faster and keeps the code clean.

Also, fix schemata for foreign keys on various tables, and add indices
where joins are common (org-roam-db--table-indices).
2021-05-02 16:30:43 +08:00
Bill Burdick
0a7d365e22 speed up org-roam-db-sync by wrapping db activity in a transaction (#1495)
In my case of testing with 8253 zettels (available on request if
anyone wants to test with them), this improves cleanup speed by 6x
and update speed by 2x.

Improvements will be smaller for smaller batches as this really just
removes the transaction overhead.
2021-04-30 12:51:29 +08:00
Jethro Kuan
389bf3c7e2 Add properties and olp to db 2021-04-29 14:02:14 +08:00
Jethro Kuan
ca1b02829b title: replace link with description on db-build 2021-04-28 13:54:12 +08:00
Jethro Kuan
697c686390 remove roam_tags
See #1492. Primary reason really is that I do want tags to be exactly
like Org tags, so we can reuse some of Org's cool features related to
tags.
2021-04-27 22:51:21 +08:00
Jethro Kuan
fd23360100 Add back ROAM_TAGS to top-level nodes 2021-04-27 13:04:24 +08:00
Jethro Kuan
9da45b54f3 remove s 2021-04-24 04:18:16 +08:00
Jethro Kuan
c866275086 move things around 2021-04-23 18:00:41 +08:00
Jethro Kuan
3f31ff2cd9 catch duplicate IDs during DB insertion 2021-04-23 15:06:41 +08:00
Jethro Kuan
d53f0e60bf org-roam-db-sync: support emacs 26.1
don't use dolist with progress report if it does not exist. results in
slightly degraded experience, but at least it works.
2021-04-22 00:37:19 +08:00
Jethro Kuan
d465ea0d72 fix: update org-file-tags before org-roam-db ops
addresses #1470
2021-04-19 17:48:32 +08:00
Jethro Kuan
597d3c6241 allow point 0 headings
Check if outline level is 0 at point-min before inserting file-level
info. Fixes #1475
2021-04-17 16:09:59 +08:00
Jethro Kuan
517f18afb4 minor docs 2021-04-14 02:34:34 +08:00
Jethro Kuan
f883c3270f add missing requires 2021-04-02 14:20:16 +08:00
Jethro Kuan
490901957e fix some byte-compile errors 2021-03-29 00:34:30 +08:00
Jethro Kuan
f681c51630 fix 2021-03-28 23:58:43 +08:00
Jethro Kuan
ae5a0c15ba fix lints 2021-03-28 23:54:01 +08:00
Noboru Ota
486f3cac3d fix: V2. #1455 replace let with let* (#1456) 2021-03-26 14:46:35 +08:00
Jethro Kuan
e62cf7f8aa add persistent org-roam-buffer 2021-03-25 20:37:28 +08:00
Jethro Kuan
6ac3a84057 default title to file-relative-name for file-nodes if title is empty 2021-03-25 13:21:35 +08:00
Jethro Kuan
6bcf164036 fix org-roam--org-roam-file-p
fixes tests
2021-03-24 17:16:08 +08:00
Jethro Kuan
2f77ae709d fix id retrieval resulting in infinite loop
Use custom `org-roam-up-heading-or-point-min` to prevent infinite
looping during ID retrieval. Fixes #1452.
2021-03-24 13:54:57 +08:00
Jethro Kuan
843eacb80b remove atime mtime tracking
It's no longer useful to track atime and mtime at the file level, we
care about properties at the node level.
2021-03-19 11:20:19 +08:00
Jethro Kuan
d1dd75e3b2 simplify 2021-03-19 11:20:19 +08:00
Jethro Kuan
25c41a079a cleanup tests 2021-03-19 11:20:18 +08:00
Jethro Kuan
53dcf687ef org-roam v2 2021-03-19 11:20:18 +08:00
Jethro Kuan
ab34dd138d (fix): fix rename file corrupting database (#1308)
The rename file advice is passed relative file names: e.g. "foo.org" ->
"bar.org". This was not accounted for, and paths in the Org-roam
database are supposed to be absolute paths. This caused the storing of
relative paths in the Org-roam database, which were then never purged.

Fixes #1304
2020-11-19 22:26:59 +08:00
Jethro Kuan
b17cc3b1e3 (internal): org-roam-db--update-maybe -> org-roam-db--upgrade-maybe (#1307) 2020-11-19 21:55:07 +08:00
Jethro Kuan
f9b1e53894 (fix): do not display buffer if it is not processed in db (#1302)
Finding an Org-roam file that does not exist yet triggers the find-file
hook, resulting in an Org-roam buffer update, attempting to show the
file. However, if the file does not yet exist, attempts to show the file
will not work, since the database does not contain the relevant
information yet.

This bug has always been present, but was only recently made visible by
the code cleanups in #1284.

Now, we ensure that the file has been processed by the database before
attempting to re-display the buffer.

Fixes #1297
2020-11-18 20:24:21 +08:00
Jürgen Hötzel
060a29c91d (fix): use correct type for org-roam-db-update-method (#1295)
Fixes #1294.
2020-11-18 18:17:00 +08:00
Natnael Kahssay
61e01430e0 (perf): improve database update on 'immediate (#1285) 2020-11-16 21:27:23 +08:00
Jethro Kuan
face683e00 (internal): remove org-roam--get-title-or-slug function (#1284)
Every file has a title when saved into the database, so this function is
redundant in most cases (e.g. in org-roam-buffer, where backlinks are
fetched from the database).
2020-11-15 19:44:36 +08:00
Jethro Kuan
cc01cf346e (release): v1.2.3 (#1269) 2020-11-13 14:22:18 +08:00
Jethro Kuan
bc12d1cf04 (feat): add org-roam-db-update-method (#1264)
* (feat): add `org-roam-db-update-method`

Add `org-roam-db-update-method`, which can be one of two choices:

1. `immediate`: the cache is updated upon file changes
2. `idle-timer`: Marks the org-roam database as dirty. If Emacs idles
for some seconds, the Org-roam cache is updated. This is the default,
and current behaviour.

The idle method makes for a smoother editing experience, but some
inconsistencies can be faced.

* org-roam-update-db-idle-seconds -> org-roam-db-update-idle-seconds
2020-11-12 19:48:40 +08:00
Kisaragi Hiu
c6797cbd75 (feat): Allow one file to have multiple roam_key statements (#1215) 2020-11-07 15:33:31 +08:00
Kisaragi Hiu
56c47fbff8 (internal): make sure there are no byte-comp warnings... (#1220)
...about undefined functions or unused lexical variables.

Undefined functions: for example, s.el and org-element should be
`require`'d when their functions are used.

Unused lexical variables: if Org isn't loaded yet, dynamic variables
defined in org.el would be treated as lexical and byte-comp would emit
this warning. This is especially important in the future as
native-comp / gccemacs will optimize away unused lexical variables,
and we cannot rely on Org having been implicitly loaded before our
modules are compiled.

Explicitly stating in our modules that the variables are dynamic
prevents that.
2020-10-30 14:23:53 +08:00
Herbert Jones
cffa0bd201 (fix): support multidir with dirty db flag (#1216) 2020-10-26 11:22:40 +08:00
Jethro Kuan
bd8b5587f5 (internal): rename link columns (#1213)
from -> source
to -> dest

"from" is a reserved keyword in sqlite, so we avoid it.
2020-10-25 22:33:43 +08:00
Jethro Kuan
b937bc9655 (internal): simplify db update operations (#1212)
Instead of maintaining a file queue to process for updating the Org-roam
database, we instead simply call `org-roam-db-build-cache` to rebuild
the db. `org-roam-db-build-cache` feels Fast Enough(TM), and basically
runs instantly if no files are modified. This greatly simplifies the
code, basically allowing to maintaining a single code path for db
operations.

This PR should also address the slowness wrt to ID links. Org-roam now
builds the headline information first, so there is no need to read the
file to check if the headline is there. The downside to this is that
this only works for IDs in Org-roam files.
2020-10-25 16:35:05 +08:00
Jethro Kuan
a7cf48ea89 (fix): org-roam-db-build-cache: fix order of processing (#1201)
* (fix): org-roam-db-build-cache: fix order of processing

Org-roam used to perform the removal of deleted files towards the end.
This can cause some issues with db rebuilds. Consider this scenario:

1. Create a file `foo.org` with `id:abc`
2. Run `org-roam-db-build-cache`
3. Delete `foo.org`
4. Create a file `bar.org` with `id:abc`
5. Run `org-roam-db-build-cache`

Here Org-roam will complain that the id `abc` is a duplicate, and error
out, because the data for `foo.org` has not yet been cleared from the
database. This PR reorders the db creation steps the following way:

1. Figure out which files no longer exist, and which files are modified
2. Clear the database for these files, leaving only files that are
unmodified in the database
3. Insert new data from modified files into the database
2020-10-19 22:12:34 +08:00
Jethro Kuan
66cd5b6226 (internal): simplify internal db cache update api (#1186) 2020-10-12 21:55:32 +08:00
Jethro Kuan
0cce9d1165 (release): Org-roam v1.2.2 (#1168) 2020-10-06 03:02:41 +08:00
Jethro Kuan
32bf91077e (internal): move org-roam.db default location (#1164)
Move the default location of `org-roam.db` to the user's Emacs
directory. This is a more sensible default: those who sync their
Org files would not have the database synced over as well.
2020-10-05 18:56:28 +08:00
Jethro Kuan
d973e8f6e0 (feat): support file-level IDs (#1163)
Additionally cache IDs at outline-level 0, now that property drawers are supported in Org 9.4.

Update org-roam--format-link to prefer ID links wherever possible. That is, when a file has an ID, use an id link instead of file link.
2020-10-05 16:57:54 +08:00
Jethro Kuan
93d8c477fe (feat): remove file store-link function override (#1155)
Previously we had overwritten the Org's store link function for files,
to create IDs if the point was under the headline. This has several
issues:

1. It becomes impossible to store a link to the file using `org-store-link`
2. This override is global across Org, although we had a guard in
`org-roam-store-link`
3. IDs are created during an org-capture, because org-capture calls `org-store-link`

This is unnecessary. Org provides `org-id-store-link` instead for this
purpose. Instead, we advice `org-id-new`, to queue the file for a DB
update if an ID was created.
2020-09-30 15:27:25 +08:00
Natnael Kahssay
19c5e9b0f3 (fix): pass file name to extract-headlines. (#1153)
Another location where filename needs to be passed down as per #1150.
2020-09-30 11:57:07 +08:00
Jürgen Hötzel
3ec2ed8874 (perf): disable org-agenda while building the cache (#1147)
`org-mode` builds the org-agenda-files menu entry for every file
visited. This functionality isn't required and useful when building
the cache in temporary org buffers.
2020-09-29 15:51:12 +08:00