Commit Graph

270 Commits (79af24a577bb1769cfb62231a4cccf1ca1a6b553)

Author SHA1 Message Date
Wilfred Hughes aa14b60933 Update regression test for 8 space indent 2022-04-17 20:15:34 +07:00
Wilfred Hughes 2b7a97f322 Update regression tests for latest rust parser
`&` highlighting has improved, and one case of a `;` match moving
slightly.
2022-04-17 19:25:23 +07:00
Wilfred Hughes 3289fe0075 Add a C++ test file 2022-04-17 16:33:20 +07:00
Wilfred Hughes 3b36271959 Split large lists that are mostly unchanged
Fixes #156
2022-04-17 15:54:27 +07:00
Wilfred Hughes 97870a3402 Report changes and advise on updates when regression tests finish 2022-04-14 22:23:14 +07:00
Wilfred Hughes 6b24e28c28 Add support for TOML 2022-04-14 21:21:36 +07:00
Wilfred Hughes 1a93162740 Fix block sclars in YAML 2022-04-14 18:45:48 +07:00
Wilfred Hughes 47fe0cfc42 Add some more common keyword-ish capture names for highlighters 2022-04-14 00:40:09 +07:00
Wilfred Hughes b3872e6513 Add syntax highlighting and regression test for Kotlin 2022-04-14 00:38:44 +07:00
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
Wilfred Hughes 78d0a354db Add sample file for changing nesting levels of variables
The last expression `res` in `fn parse_lines` was previously handled
badly, choosing an inner `res` occurrence.
2021-07-27 23:46:11 +07:00
Wilfred Hughes 04214ef1ef Ignore indentation changes on multiline comments 2021-07-25 12:27:24 +07:00
Wilfred Hughes 928584676a Only highlight individual comment words for comments that are similar 2021-07-24 17:01:30 +07:00
Wilfred Hughes 638cf1245a Add JSON to sample files 2021-07-05 13:13:47 +07:00
Wilfred Hughes 147ab76414 Keep all sample files in sample_files/ 2021-07-04 11:10:16 +07:00
Wilfred Hughes 44ae3a980f Making the JS sample file more interesting
Use a file pair that have both additions and removals
2019-11-18 17:59:04 +07:00
Wilfred Hughes 285f138d39 Add a small JS sample file 2019-11-18 17:47:59 +07:00
Wilfred Hughes 908ea25325 Add a sample javascript file 2019-11-18 12:03:45 +07:00
Wilfred Hughes a70f0132f3 Lisp sample files 2019-11-18 11:51:45 +07:00
Wilfred Hughes 479d0d1671 Tweak colour to avoid confusion with the red shown during diffing 2018-12-31 11:25:15 +07:00
Wilfred Hughes 1e23284e42 Add some test files 2018-12-29 17:44:30 +07:00