Tom Alexander
d443dbd468
Introduce the tab_width setting and give tabs a greater value when counting indentation level.
2023-09-15 21:59:48 -04:00
Tom Alexander
c9ce32c881
Remve redundant org_spaces functions.
...
Turns out the nom space0/space1 parsers accept tab characters already.
2023-09-15 21:28:40 -04:00
Tom Alexander
85454a0a27
Fix footnote reference function label matcher.
...
Previously when a label started with a number but contained other characters, this parser would fail because it would not match the entire label.
2023-09-15 21:14:44 -04:00
Tom Alexander
fdebf6dec5
Delete already solved TODO.
2023-09-15 21:08:52 -04:00
Tom Alexander
444d6758aa
Handle leading blank lines in greater blocks.
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
rust-foreign-document-test Build rust-foreign-document-test has failed
Details
2023-09-15 21:03:35 -04:00
Tom Alexander
bfe67b1f75
Parse plain list item checkboxes.
2023-09-15 16:09:57 -04:00
Tom Alexander
fd41ad9c29
Pretend dos line endings do not exist.
2023-09-15 14:13:17 -04:00
Tom Alexander
7f751d4f28
Allow no digit in repeater in timestamp.
2023-09-15 13:12:54 -04:00
Tom Alexander
52a4dab67c
Use the timestamp parser in planning.
...
Previously we did not support inactive timestamps in planning. This fixes that.
2023-09-15 12:45:19 -04:00
Tom Alexander
3d86e75059
Always match the entire entity name.
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
rust-foreign-document-test Build rust-foreign-document-test has failed
Details
2023-09-14 04:29:50 -04:00
Tom Alexander
ca6fdf1924
Support different cases in radio links.
2023-09-14 04:04:21 -04:00
Tom Alexander
66d16d89ed
Support interchangeable whitespace in re-matching plain text.
2023-09-14 04:00:34 -04:00
Tom Alexander
22681b6a58
Support trailing whitespace in fixed-width areas.
2023-09-14 03:20:44 -04:00
Tom Alexander
876d33239e
Allow any character to be escaped in the path for links.
2023-09-14 03:05:11 -04:00
Tom Alexander
87941271a4
Handle headlines with trailing spaces without tags.
2023-09-14 02:43:40 -04:00
Tom Alexander
32b19d68d0
Support todo keywords with fast access.
2023-09-14 02:24:06 -04:00
Tom Alexander
44e9f708c9
Handle the possibility of a title-less headline.
2023-09-14 02:01:24 -04:00
Tom Alexander
33372429dd
Add a config option for org-list-allow-alphabetical.
...
This fixes an issue where lines in a paragraph were incorrectly getting identified as lists because I had defaulted to assuming alphabetical bullets were allowed.
2023-09-14 00:27:54 -04:00
Tom Alexander
b8a4876779
Disable auto-aligning tables when Emacs loads Org-mode.
...
Emacs will auto-align tables when org-mode is loaded if the document contains "#+STARTUP: align". Since Organic is just a parser, it has no business editing the input it receives so we are disabling this auto-align in Emacs to make the tests work properly.
2023-09-13 21:02:38 -04:00
Tom Alexander
e4c0e32536
Change public interface to return boxed dynamic error instead of String.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
rust-foreign-document-test Build rust-foreign-document-test has succeeded
Details
2023-09-12 15:52:01 -04:00
Tom Alexander
37e85158ea
Reduce the exposed functions when compare feature is enabled.
2023-09-12 15:48:37 -04:00
Tom Alexander
a651b79e77
Move sexp into compare.
2023-09-11 15:37:20 -04:00
Tom Alexander
98de5e4ec5
Remove unused sexp parser entry point.
2023-09-11 15:07:52 -04:00
Tom Alexander
cf383fa394
Only include sexp module if compare feature is enabled.
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
rust-foreign-document-test Build rust-foreign-document-test has succeeded
Details
2023-09-11 14:59:24 -04:00
Tom Alexander
84953c1669
Put back in needed pubs.
2023-09-11 14:59:23 -04:00
Tom Alexander
7650a9edff
Remove all pub.
2023-09-11 13:11:08 -04:00
Tom Alexander
a74319d381
Add TODO.
2023-09-11 13:09:46 -04:00
Tom Alexander
f103d168d5
Update diary sexp parser to match org-mode's behavior.
2023-09-11 12:34:57 -04:00
Tom Alexander
f54081437a
Add detect element functions for all elements that can be reasonably detected more efficiently than just parsing normally.
2023-09-11 12:28:15 -04:00
Tom Alexander
1561e1e580
Update plain list item tag parser to allow double colon as long as its not the last one on that line.
2023-09-11 10:29:15 -04:00
Tom Alexander
1f11bfa2ec
Join the plain list item tag end matchers again.
2023-09-11 10:13:22 -04:00
Tom Alexander
de7ad182b3
Make parse and compare their own binaries.
...
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
rust-foreign-document-test Build rust-foreign-document-test has succeeded
Details
This ensures that both code paths are capable of being parsed by rust-analyzer simultaneously and I think it will be less confusing to newcomers.
2023-09-09 04:21:34 -04:00
Tom Alexander
b75d9f5c91
Remove an outdated comment.
2023-09-09 00:00:12 -04:00
Tom Alexander
5587e19f16
Cleanup.
2023-09-08 23:19:08 -04:00
Tom Alexander
80f7098f9b
Compare table formulas.
2023-09-08 23:05:04 -04:00
Tom Alexander
84d2babda9
Parse table formulas.
2023-09-08 22:47:07 -04:00
Tom Alexander
cc56b79683
Add a test showing we're not handling table formulas.
2023-09-08 22:42:24 -04:00
Tom Alexander
0105b49d0d
Handle empty statistics cookies.
2023-09-08 22:21:49 -04:00
Tom Alexander
7545fb7e1a
Support keywords with colons in the key and without a space between the colon and value.
2023-09-08 22:17:10 -04:00
Tom Alexander
21c60d1036
Do not consume trailing whitespace on the footnote definition's final element.
2023-09-08 21:30:03 -04:00
Tom Alexander
6a1bdd5fee
Support blank lines before content in footnote definitions.
2023-09-08 21:11:47 -04:00
Tom Alexander
a8fbf01124
Handle tabs for plain list descriptions.
...
This bug probably exists in hundreds of places across the code base. I am going to have to write a "fuzzer" that replaces random whitespace with tabs to find them all.
2023-09-08 20:02:49 -04:00
Tom Alexander
ceb722e476
Check exit matcher after each space consumed for object trailing whitespace.
...
Since description list tags need to end with a space unconsumed for " ::", we need to check the exit matcher after each space consumed.
2023-09-08 19:38:49 -04:00
Tom Alexander
494fe5cceb
Handle contentless list items mid-document.
2023-09-08 19:01:46 -04:00
Tom Alexander
0d7a15bfeb
Handle spaces after statistics cookies.
2023-09-08 18:35:33 -04:00
Tom Alexander
669da4073e
Accept the end condition as a parameter to the plain text parser so it can adapt to the context.
2023-09-08 17:54:49 -04:00
Tom Alexander
8780976c15
Consume trailing whitespace after planning.
2023-09-08 16:30:40 -04:00
Tom Alexander
93d3d9471f
Compare priority, archived, and commented in headlines.
2023-09-08 16:00:16 -04:00
Tom Alexander
c7c0deed74
Parse priority cookie and COMMENT from headlines.
2023-09-08 16:00:16 -04:00
Tom Alexander
2e6e6fdd2b
Move sections to their own source file.
2023-09-08 15:08:16 -04:00
Tom Alexander
3cc2294387
Move headlines into their own file.
2023-09-08 15:05:42 -04:00
Tom Alexander
40f22034da
Make the item tag exit matcher a lower class than all all others.
...
This is to allow for " :: " inside a description list item's tag if it is nested inside another object.
2023-09-08 14:37:30 -04:00
Tom Alexander
c2eb1f51c8
Support blank lines between nested headlines.
2023-09-08 12:41:48 -04:00
Tom Alexander
b0930df788
Support zero skipped text in OrgSource slicing.
2023-09-07 04:16:00 -04:00
Tom Alexander
69512f559a
Fix end conditions for subscript and superscript.
2023-09-07 04:16:00 -04:00
Tom Alexander
76a81b73ac
Add a detect object function similar to the detect element function.
2023-09-07 04:16:00 -04:00
Tom Alexander
ba291c6776
Unify two places checking if text was preceded by whitespace.
2023-09-07 04:16:00 -04:00
Tom Alexander
6b82b46e09
Prevent nesting of text markup of the same type.
...
This greatly reduces the amount of detect element calls that are occurring.
2023-09-07 04:15:59 -04:00
Tom Alexander
6676012eb1
Change footnote reference class to Gamma.
2023-09-07 04:15:59 -04:00
Tom Alexander
facbe716e9
Cleanup
2023-09-07 01:23:26 -04:00
Tom Alexander
f8b99ed235
Support counter set in plain list items.
2023-09-06 19:09:20 -04:00
Tom Alexander
6fc607cfe0
Compare node properties.
2023-09-06 18:54:47 -04:00
Tom Alexander
49afcf0db6
Support property nodes with colons in their key.
2023-09-06 18:54:01 -04:00
Tom Alexander
c4d7e646fc
Support spaces after the end of a lesser block.
2023-09-06 18:54:01 -04:00
Tom Alexander
3fc3a5d1ef
Add support for empty lesser blocks.
2023-09-06 18:11:57 -04:00
Tom Alexander
6e2fc362ea
Add support for babel-call keywords.
2023-09-06 18:04:53 -04:00
Tom Alexander
90fa48661c
Prefer the longer version of affiliated keywords.
2023-09-06 17:41:00 -04:00
Tom Alexander
28b2d27054
Consume trailing whitespace after a plain link.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-06 14:39:31 -04:00
Tom Alexander
84edd10864
Change lesser block exit class to Alpha.
...
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
When an example block is nested inside a list, this change allows for the contents of the example block to be on lines less indented than before.
2023-09-06 14:14:02 -04:00
Tom Alexander
728a79f9a4
Handle zero-width space in text markup.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-06 13:56:27 -04:00
Tom Alexander
12cbb89861
Compare todo-type on headlines.
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-06 12:39:03 -04:00
Tom Alexander
7c471ab32e
Compare keyword keys and values.
2023-09-06 12:10:57 -04:00
Tom Alexander
400f53e440
Cleanup.
2023-09-06 11:53:21 -04:00
Tom Alexander
028aeb70aa
Use the global settings todo keywords when parsing headlines.
2023-09-06 11:45:35 -04:00
Tom Alexander
70fafd801e
Apply the TODO keyword settings.
2023-09-06 11:07:57 -04:00
Tom Alexander
bdba495f69
Add a parser for the todo keyword's value.
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-06 09:24:59 -04:00
Tom Alexander
b0392ad6fb
Trim the trailing space off keywords with values.
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-04 22:35:46 -04:00
Tom Alexander
1c142b68c6
Make the parse entry point call the parse_with_settings entry point.
2023-09-04 22:11:56 -04:00
Tom Alexander
9060f9b26d
Only do a single pre-pass on the full document pulling out both setupfile and all other in-buffer settings.
...
rust-test Build rust-test has failed
Details
rust-build Build rust-build has failed
Details
Previously we made a separate pass just to find setupfile and then we pulled the in-buffer settings from everything.
2023-09-04 22:05:59 -04:00
Tom Alexander
d3c733c5ad
Take into account the source directory when parsing org-mode in Organic.
...
Previously only the emacs code was doing this.
2023-09-04 21:46:40 -04:00
Tom Alexander
275b4b53d1
Use a single function for finding all keywords.
2023-09-04 19:19:23 -04:00
Tom Alexander
d38e198258
Add a parse_with_settings function.
2023-09-04 17:44:27 -04:00
Tom Alexander
27cf6c0462
Remove unnecessary map_err from main.rs.
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-04 17:29:50 -04:00
Tom Alexander
c7d5c89a60
Passing the setupfile contents to the document parser.
2023-09-04 17:16:08 -04:00
Tom Alexander
ee02e07717
Read the setup file into memory.
2023-09-04 16:53:02 -04:00
Tom Alexander
a7330e38e4
Enable dynamic access to the file access interface.
2023-09-04 16:29:41 -04:00
Tom Alexander
08eb59acd3
Rename parser_context to context.
2023-09-04 13:26:11 -04:00
Tom Alexander
da1ce2717d
Introduce a file access interface for reading additional files.
2023-09-04 13:00:41 -04:00
Tom Alexander
a8f277efe5
Scan for setupfile at the beginning of a parse.
2023-09-04 12:48:59 -04:00
Tom Alexander
7f6f22717b
Add comment.
2023-09-04 12:31:43 -04:00
Tom Alexander
0ef141d65e
Switch to putting radio targets in the global settings instead of the context tree.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-04 12:28:33 -04:00
Tom Alexander
71180d19fb
Fix reading contents from stdin in parse script.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-04 11:45:10 -04:00
Tom Alexander
33091112a5
Remove OrgSource from the public document parser interface.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-09-04 11:38:12 -04:00
Tom Alexander
2915a81edc
Cleanup.
2023-09-03 16:22:41 -04:00
Tom Alexander
df79cbd0b7
Give global options their own lifetime.
2023-09-03 16:22:40 -04:00
Tom Alexander
a7b9eb9db4
Lifetime issue.
2023-09-03 12:58:46 -04:00
Tom Alexander
d262833f9b
Fixing more errors.
2023-09-03 12:52:09 -04:00
Tom Alexander
0d438a8e0f
Fixing more errors.
2023-09-03 12:45:12 -04:00
Tom Alexander
0b009511ff
Fixing more errors.
2023-09-03 12:28:45 -04:00
Tom Alexander
3bdb24ad88
Fixing more errors.
2023-09-03 12:23:18 -04:00
Tom Alexander
fdf35ba23c
Fixing more errors.
2023-09-03 12:07:51 -04:00
Tom Alexander
cd69e08516
Fixing more errors.
2023-09-03 11:05:34 -04:00
Tom Alexander
b54c6d366c
Fixing more errors.
2023-09-03 00:27:50 -04:00
Tom Alexander
15e8d1ab77
Implement check_exit_matcher.
2023-09-03 00:05:47 -04:00
Tom Alexander
8502a8830d
Fixing some errors.
2023-09-02 23:16:02 -04:00
Tom Alexander
74a6101de7
Update RefContext to three lifetimes.
2023-09-02 22:45:46 -04:00
Tom Alexander
ba57eb16fd
Fix using references for context elements.
2023-09-02 22:44:21 -04:00
Tom Alexander
c309d14776
Fix a reference to RefContext.
2023-09-02 20:52:02 -04:00
Tom Alexander
0d728510d7
Implement iterator for context.
2023-09-02 20:46:17 -04:00
Tom Alexander
22e9bc991f
Fixing up compiler errors.
2023-09-02 19:28:33 -04:00
Tom Alexander
564104f1e8
Switch to RefContext.
2023-09-02 19:16:44 -04:00
Tom Alexander
12ad3b09f0
Fixing imports.
2023-09-02 19:15:47 -04:00
Tom Alexander
eabffe5ecc
Move over the rest of the types.
2023-09-02 19:08:01 -04:00
Tom Alexander
b47029fdbb
Starting to separate the context and parsed tokens into their own modules.
2023-09-02 18:46:45 -04:00
Tom Alexander
25b8c80d4e
Add default constructors.
2023-09-02 18:40:01 -04:00
Tom Alexander
54825538e4
fixup
2023-09-02 18:21:43 -04:00
Tom Alexander
66d10a7a1b
Started switching over to a stack-based context tree with global settings.
...
This change should hopefully allow for matchers to have captured borrowed values, it should eliminate the use of heap-allocated reference counting on the context nodes, and it adds in a global settings struct for passing around values that do not change during parsing.
2023-09-02 18:20:10 -04:00
Tom Alexander
f16a554154
Handle org-mode documents passed as args.
...
We were running into issues where the documents grew too large for being passed as a string to emacs, and we need to handle #+setupfile so we need to start handling org-mode documents as files and not just as anonymous streams of text.
The anonymous stream of text handling will remain because the automated tests use it.
2023-09-02 17:28:22 -04:00
Tom Alexander
80d77ff5d6
Fix handling of unicode in compare tests.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-08-31 20:20:00 -04:00
Tom Alexander
510985e97c
Fix greater blocks by preventing nesting even if they are not the immediate parent.
2023-08-31 19:17:46 -04:00
Tom Alexander
7a903acedc
Support special blocks in compare.
2023-08-31 19:04:44 -04:00
Tom Alexander
5171326d63
Create a test for special blocks.
2023-08-31 19:02:18 -04:00
Tom Alexander
67f79aeb51
Remove context from detect plain list.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-08-31 18:53:28 -04:00
Tom Alexander
b2383d9f93
Fix footnote definition performance.
...
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
We were re-parsing each footnote definition in the footnote definition exit matcher which causes their contents to get re-parsed. This compounds with long lists of footnote definitions.
2023-08-31 18:47:23 -04:00
Tom Alexander
0fcb3f73f9
Move handling of contentless item to handle contentless description item.
2023-08-31 17:25:42 -04:00
Tom Alexander
bfc9e7f58d
When re-parsing last item in list, only disable white space consumption for last element in item.
2023-08-31 17:08:21 -04:00
Tom Alexander
b5f0521b56
Only consume trailing whitespace when not exiting for all objects.
2023-08-31 15:45:31 -04:00
Tom Alexander
2048d8f0b6
Support comments at the end of the line in diary sexp.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-08-31 15:31:54 -04:00
Tom Alexander
466716881e
Fix macros consuming whitespace even when the exit matcher is calling for an exit.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-08-31 15:11:29 -04:00
Tom Alexander
eb9c582fa5
'>' is allowed as a post character in text markup.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-08-29 23:57:15 -04:00
Tom Alexander
214e895d85
Support backslash at the end of a macro.
2023-08-29 23:42:16 -04:00
Tom Alexander
28aca041f7
Publish version 0.1.3.
rustfmt Build rustfmt has failed
Details
rust-test Build rust-test has failed
Details
rust-build Build rust-build has succeeded
Details
2023-08-29 23:05:36 -04:00
Tom Alexander
d471f7178b
Wrap the components of headlines in diff layers.
2023-08-29 22:57:08 -04:00
Tom Alexander
2c5c26c55f
Allow diff layers that are not associated with tokens.
2023-08-29 22:47:40 -04:00
Tom Alexander
7944659802
Compare headline level.
2023-08-29 22:11:56 -04:00
Tom Alexander
58aca53144
Move get_property into util.
2023-08-29 22:07:23 -04:00
Tom Alexander
6f2d90162b
Do not use the plain text parser for property drawers.
...
This additional exit condition was causing property drawers to parse incorrectly.
2023-08-29 22:03:20 -04:00
Tom Alexander
f170a557ed
Use character offsets in diff.
2023-08-29 21:49:16 -04:00
Tom Alexander
eaa38ce772
Include an error message for failed bounds checking.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-08-29 21:27:54 -04:00
Tom Alexander
a6d742a536
Fix handling line breaks after divider in description lists.
2023-08-29 21:27:54 -04:00
Tom Alexander
f6c895319f
Add support for diffing description lists.
2023-08-29 19:35:54 -04:00
Tom Alexander
2682779534
Add support for parsing description lists.
2023-08-29 18:13:55 -04:00
Tom Alexander
b48d472546
Fix build.
rustfmt Build rustfmt has succeeded
Details
rust-test Build rust-test has succeeded
Details
rust-build Build rust-build has succeeded
Details
2023-08-29 18:07:35 -04:00
Tom Alexander
80b55fdd45
Consume trailing whitespace for macro.
2023-08-29 17:42:58 -04:00
Tom Alexander
f426e32798
Do not include trailing punctuation or whitespace in plain links.
2023-08-29 17:35:04 -04:00
Tom Alexander
1bcd1895c0
Allow affiliating keywords with regular keywords.
2023-08-29 17:19:13 -04:00
Tom Alexander
2ba0dc49be
Support export affiliated keywords.
2023-08-29 17:01:35 -04:00
Tom Alexander
9df40fb13f
Only allow specific keywords for affiliated keywords.
2023-08-29 16:56:07 -04:00
Tom Alexander
cc671925db
Support empty sections under headings.
2023-08-29 16:07:43 -04:00
Tom Alexander
950baa9d5d
Only allow a single section under a heading.
2023-08-29 16:03:13 -04:00