Wilfred Hughes
059fc824ff
Add Kotlin support
...
Closes #220
2022-04-14 00:21:29 +07:00
Wilfred Hughes
1830d286e0
Ensure unchanged MatchedPos have the same number on LHS and RHS
...
Fixes #246
2022-04-09 21:12:31 +07:00
Wilfred Hughes
1c9ae2fbc6
Fix parsing of built-in Zig identifiers
...
Fixes #248
2022-04-09 19:38:07 +07:00
Wilfred Hughes
053de5acbe
Update to Clojure parser with separate symbol positions
...
See discussion in https://github.com/sogaiu/tree-sitter-clojure/issues/21
2022-04-09 12:41:49 +07:00
Wilfred Hughes
838ad0c048
Add regression test for #181
2022-04-09 12:18:51 +07:00
Wilfred Hughes
1c416733ef
Fix nested sliders in C-like languages
...
Improves #165
2022-04-08 09:41:56 +07:00
Wilfred Hughes
bdb68cd676
Support @boolean and @character highlighting queries
2022-04-03 22:36:15 +07:00
Wilfred Hughes
10a0e2dba9
Improve YAML handling
...
Fix atom handling and add syntax highlighting
2022-04-03 22:26:33 +07:00
Wilfred Hughes
9245aada8f
Merge remote-tracking branch 'alexmanno/add_yaml_support'
...
Closes #208
2022-04-03 22:08:44 +07:00
Alex Perkins
f5ab6e7e86
add newline to module exports
2022-04-03 21:37:17 +07:00
Alex Perkins
d6e9afd3d6
add support for Elm
2022-04-03 20:18:33 +07:00
Wilfred Hughes
01678f8556
Don't pad the right column in side-by-side display
...
Helps with #209 too.
2022-04-03 11:30:19 +07:00
Wilfred Hughes
81db99e51e
Update regression test for Gleam
2022-04-03 10:50:54 +07:00
Wilfred Hughes
28c6e35943
Merge #205
2022-04-02 17:18:59 +07:00
Jacob Rothstein
9945270f4b
add gleam
...
# Conflicts:
# CHANGELOG.md
# README.md
2022-03-31 14:08:05 +07:00
Andrew Gutekanst
6c2504a34f
Add expected Zig diff results for CI check
2022-03-31 12:38:17 +07:00
Andrew Gutekanst
7f2efa1af9
Add Zig support
2022-03-30 23:32:48 +07:00
Alessandro Manno
b2dd6c5aa8
fixed compare.expected
2022-03-30 19:36:27 +07:00
Alessandro Manno
ffddaa645e
Added yaml support
2022-03-30 12:43:01 +07:00
Wilfred Hughes
ecdf993ff1
Add support for Nix
...
Closes #196
2022-03-29 22:46:09 +07:00
Jafar
eb29b824c3
Merge branch 'master' into pr-add_lua_parser
2022-03-30 06:23:20 +07:00
JafarAbdi
b850d41fa5
Add lua support
2022-03-30 06:21:10 +07:00
sogaiu
e1e735752d
Add sample files and update compare.expected
2022-03-29 14:53:10 +07:00
Wilfred Hughes
f26ca24df7
Discard '\n' nodes in C and C++
...
These are from the preprocessor grammar rules, but they're not useful
for difftastic.
Reported upstream: https://github.com/tree-sitter/tree-sitter-c/issues/97
Closes #180
2022-03-27 23:37:23 +07:00
Wilfred Hughes
ec2b72bff2
Update regression tests for previous commit
2022-03-26 23:50:33 +07:00
Wilfred Hughes
1d7324c2dc
Clarify wording when a parsed file has no changes at all
2022-03-26 23:31:12 +07:00
Wilfred Hughes
92b9680ecd
Define a scala.scm of highlighting queries
2022-03-26 23:26:21 +07:00
Wilfred Hughes
5b1bc62ac6
Don't show hunk numbers when there's only one hunk
...
Related: #60
2022-03-26 22:52:04 +07:00
Wilfred Hughes
2b36a755f0
Ensure that blank lines in multiline strings are shown as changed
...
Fixes #121
2022-03-23 22:47:17 +07:00
Wilfred Hughes
f15ec6d637
Lower the default node limit for tree diffing
...
Fixes #176
2022-03-22 21:15:54 +07:00
Wilfred Hughes
4647112e93
Define a highlighting file for Clojure
...
This isn't provided upstream, and the parse tree doesn't have a lot of
information, but we can at least handle string literals and keywords.
2022-03-22 21:08:46 +07:00
Wilfred Hughes
9e32e2e08e
Ensure matched lines includes blanks at the ends of the file
...
Fixes #163
2022-03-20 22:31:32 +07:00
Wilfred Hughes
a18dce036a
Handle novel MatchedPos values that have unchanged values on the same line
...
Fixes #169
2022-03-20 15:03:22 +07:00
Wilfred Hughes
29050f00ce
Configure language and fix highlighting for dart
2022-03-20 11:36:12 +07:00
Ömer Sinan Ağacan
fb73c84960
Add a Dart sample
2022-03-20 11:07:39 +07:00
Wilfred Hughes
e38d14a144
Prefer aligning blank lines in display
...
After we've aligned lines based on diff results, we have intermediate
lines that we need to align somehow. Previously, we'd just take them
in order, aligning the first on the LHS with the first on the RHS and
so on.
If the intermediate lines start or end with a sequence of blank lines,
prefer aligning the blank lines. If we have both, arbitrarily choose
the ending blank lines.
This has produced better results in many of the sample files, although
in the case of slow_before.rs we've just changed from a leading blank
line alignment to a trailing blank line alignment.
2022-03-17 22:16:45 +07:00
Wilfred Hughes
6d58247465
Preserve the outer delimiter when shrinking
...
Previously, we'd always discard the outer delimiter if it matched on
both sides. This prevented the tree diff finding optimal diffs.
Fixes #124
2022-03-16 23:38:05 +07:00
Wilfred Hughes
40d3ccd06c
Fix confusion between byte length and codepoint length in styling
...
We should split lines based on their codepoint length, so all our
lengths are on codepoint boundaries. We can then safely index by byte position.
All the positions are measured in bytes, not code points. Tweak
function names to make this explicit.
Fixes #149
2022-03-15 09:50:13 +07:00
Wilfred Hughes
b2229d66a8
Always display all lines in a hunk
...
Previously we were assuming that the first/last line pairs in a hunk
contained the earliest/latest lines on both sides. This isn't true
when there are no common items between the lines.
This fixes some display issues in load_before/after.js, but include a
new integration test that is smaller and easier to eyeball.
Fixes #133
2022-03-15 00:11:30 +07:00
Wilfred Hughes
c0d1faae63
Keep exploring the graph even when we find matched delimiters
...
Previously we'd get tripped up by cases where choosing equal
delimiters would be be considered the same as entering each delimiter
separately, making diffs worse.
Fixes #147
2022-03-13 15:41:54 +07:00
Wilfred Hughes
2f8ccd94da
Add sample file showing slow perf large adjacent lists
...
Part of #156 .
2022-03-12 11:28:28 +07:00
Wilfred Hughes
17ff2bc07e
< and > are delimiters in Rust and C++
2022-03-08 20:42:57 +07:00
Wilfred Hughes
88ae00bd88
Use depth difference as a heuristic when comparing equal nodes
...
This reverts commit 7544874a55 . It turns
out there are cases where this is still necessary (see new sample
file). It's also performance neutral.
This bug became more obvious with the recent 'skip unchanged'
optimisations. The optimisation changed the number of preceeding nodes and
exposed this bug more often.
2022-03-08 09:44:55 +07:00
Wilfred Hughes
6f65bbbbb0
Merge branch 'delim_type'
...
Introduce a new type EnteredDelimiter that tracks entering/leaving
list nodes. The PopEither and PopBoth cases reflect the choices more
accurately than a 2-tuple of options.
This is a performance hit (slow_before.rs runtime has increased by
49%) but it's important for diff correctness.
Fixes #147
2022-03-06 21:39:15 +07:00
Wilfred Hughes
e134257f78
Fix syntax error in clojure example program
2022-03-05 16:31:47 +07:00
Wilfred Hughes
44b2f6b6ec
Update regression tests for empty atom change in previous commit
2022-03-05 16:31:30 +07:00
Wilfred Hughes
f82cace9bd
Atom content equality should ignore highlighting
...
Improves several cases in #147
2022-03-05 11:37:10 +07:00
Wilfred Hughes
25433a0c3d
Only consider novel trees at the top level
...
Helps with #148 . On my machine this changes slow_after.rs from 4.4 to
3.4 seconds, but only reduced instruction count from 12.8B to 10.4B.
The one changed case in sample_files/ is more granular and more
readable.
2022-03-02 22:55:22 +07:00
Wilfred Hughes
0905fb74c3
Simplify usage of regression test suite
2022-02-24 20:35:36 +07:00
Wilfred Hughes
f1063bd1e7
Ensure we consider all unchanged nodes for calculating alignment
...
Fixes #141
2022-02-20 22:41:29 +07:00
Wilfred Hughes
8d050f9588
Set locale to try to fix glob order on GitHub actions
2022-02-20 21:42:47 +07:00
Wilfred Hughes
54fd04a7e2
Ensure regression test always uses the same width
2022-02-20 20:28:06 +07:00
Wilfred Hughes
ca55c7ee2c
Update integration test expectation following 7544874a5
2022-02-20 20:25:49 +07:00
Wilfred Hughes
82890923cd
Track entering/leaving parents explicitly
...
This produces significantly better diffs, and fixes some cases that
were outright wrong before.
Fixes #30
2022-02-20 12:43:52 +07:00
Wilfred Hughes
692f08f1f1
Merge hunks when lines are adjacent
2022-02-19 16:12:04 +07:00
Wilfred Hughes
395f6663e6
Usage notes on regression test script
2022-02-13 17:25:58 +07:00
Wilfred Hughes
d8cc1168b1
Make sample files naming consistent so they're all used in regression test
2022-02-13 17:21:20 +07:00
Wilfred Hughes
f4b0d2f584
Rename JS sample file
2022-02-13 17:18:39 +07:00
Wilfred Hughes
469fc6b470
Don't log difftastic compile time when comparing
2022-02-13 17:16:45 +07:00
Wilfred Hughes
66f41c7053
Add reference file for current output hashes
2022-02-13 17:15:41 +07:00
Wilfred Hughes
3986bae12e
Helper script for regression testing on sample files
2022-02-13 17:06:11 +07:00
Wilfred Hughes
ef5ae1ad8d
Add files from #134 to sample file collection
2022-02-12 11:10:23 +07:00
Wilfred Hughes
d0f8b49df1
Add basic syntax highlighting for Hack
2022-02-02 23:39:00 +07:00
Wilfred Hughes
43605bd5e8
Add support for Hack
2022-02-02 23:22:15 +07:00
Wilfred Hughes
27877e24f8
Test comment highlighting in Scala
...
Turns out that we don't need queries for comments, as we're already
using the is_extra() method for both parsing and highlighting.
Closes #120
2022-02-02 23:07:25 +07:00
Wilfred Hughes
34a1946197
Add sample clojure files
2022-02-02 23:07:11 +07:00
Wilfred Hughes
5cf143228f
Treat attribute IDs in OCaml as atoms
...
Fixes #114
2022-01-27 20:25:17 +07:00
Wilfred Hughes
fb680ccdb3
Document diffing directories
...
Also add sample directories to exercise this.
Helps with #98 .
2022-01-22 18:58:04 +07:00
Wilfred Hughes
61c79839e3
Ensure we always include the first and last hunk line
...
Fixes #90
2022-01-22 18:46:55 +07:00
Hugo van Rijswijk
cc651ad14a
Add Scala support
2022-01-18 12:53:02 +07:00
Wilfred Hughes
268db2573c
Expand ocaml tests
2022-01-16 18:05:45 +07:00
Wilfred Hughes
a45afadf50
Add trailing functions to ocaml sample file
2022-01-16 18:04:22 +07:00
Wilfred Hughes
bba1b012c0
Add another large file for benchmarking
2022-01-16 17:22:23 +07:00
Wilfred Hughes
65472ed62c
Add another contiguous atoms test file
2022-01-15 18:52:03 +07:00
Wilfred Hughes
2d4ab5e494
Treat ocaml tags as atoms too
2022-01-15 11:00:41 +07:00
Wilfred Hughes
c7b12d202f
Treat ocaml type variables as an atom
...
The `'` in `'foo` gets a separate tree-sitter AST node, but the `foo`
does not. Treat the whole thing as an atom to avoid missing
highlighting on the `foo` part.
Fixes #89
2022-01-14 23:35:19 +07:00
Wilfred Hughes
4ac1fb1818
Expand text sample file
2022-01-02 19:18:19 +07:00
Wilfred Hughes
dd2a6639a2
Add sample file for text
2022-01-01 19:56:58 +07:00
Wilfred Hughes
2bdd876d40
Expand example in JSX samples to test #72
2021-12-07 23:09:07 +07:00
Wilfred Hughes
e00f94fed8
Treat float values as atoms in CSS
...
Otherwise we treat `0.5em` as two atoms, unlike `1em` which was
already a single atom.
2021-12-04 18:34:24 +07:00
Wilfred Hughes
29fa6f1102
Ensure sample file is a syntax error for tree-sitter
...
Turns out that missing closing parens doesn't lead to ERROR nodes.
2021-12-04 18:03:06 +07:00
Wilfred Hughes
fd4c17ecf1
Configure atoms for Ruby
2021-11-20 14:46:12 +07:00
Wilfred Hughes
a5ed3fbd48
Add basic Ruby support
2021-11-20 01:08:33 +07:00
Wilfred Hughes
67bea22434
Rename Java sample file for consistency
2021-11-14 13:34:46 +07:00
Wilfred Hughes
1ad04f10bb
Add a Haskell sample file
2021-11-14 13:18:58 +07:00
Wilfred Hughes
23b9092bd6
Add sample file pair that has shown a ton of hunk merging bugs
2021-11-14 11:49:37 +07:00
Wilfred Hughes
3efa77c43e
Add example of a single line changing in a block comment
2021-11-02 23:23:37 +07:00
Wilfred Hughes
5e9a0eec5d
Rename JSON files to match sample file naming convention
2021-10-23 16:24:54 +07:00
Wilfred Hughes
4ba8508581
Add sample files showing a syntax error
2021-09-20 00:25:59 +07:00
Wilfred Hughes
04d3e916ba
Add benchmark file (takes 3-4 seconds today)
2021-09-12 21:01:54 +07:00
Wilfred Hughes
b6b0f8057b
Treat integer values as atoms in CSS
2021-09-05 11:39:49 +07:00
Wilfred Hughes
ceb42a6ad2
Add Java test file
2021-09-04 19:04:21 +07:00
Wilfred Hughes
28d7b85e6b
Simplify Python example file
2021-08-30 21:20:17 +07:00
Wilfred Hughes
974655aea8
Add a test file that shows how Python diffing is currently broken
2021-08-29 23:59:24 +07:00
Wilfred Hughes
1dfedc6534
Ensure we use codepoints when slicing strings to avoid crashes
...
Rust will panic if we try to slice on a boundary that isn't a char
boundary. Count unicode codepoints and slice to the relevant byte.
Added a test file that was crashing before due to the use of curly
quotes.
2021-08-29 15:10:01 +07:00
Wilfred Hughes
a2de2eb241
Add a string literal to CSS sample files
2021-08-26 23:21:35 +07:00
Wilfred Hughes
47d888c140
Add a JSX test file
2021-08-16 22:17:32 +07:00
Wilfred Hughes
1553533559
Add a sample file exercising contiguous item logic
2021-07-31 10:50:02 +07:00
Wilfred Hughes
ad585be0fc
Add another elisp sample file
2021-07-27 23:48:58 +07:00
Wilfred Hughes
2aae6b6e77
Add a JS test file showing a larger change
2021-07-27 23:48:03 +07:00