Wilfred Hughes
6f2140e901
Replace tabs with spaces before parsing
...
Difftastic uses offsets to store the positions of AST nodes, so we
cannot replace tabs after parsing.
A string literal with a tab character " " being replaced by a four
space string literal " " is now ignored by difftastic. This is
wrong: difftastic should only ignore whitespace between atoms.
This is still an improvement for source code that uses tab characters,
which is common in Go. The above case should be rare until we have a
full solution.
Fixes #24
2021-07-27 23:36:20 +07:00
Wilfred Hughes
a7f688ee82
Put a spacer between LHS and RHS lines printed
...
Width calculations already consider the spacer, but it was lost in a
refactor.
2021-07-27 22:02:48 +07:00
Wilfred Hughes
f24c4954bc
Update changelog for previous commit
2021-07-27 22:01:38 +07:00
Wilfred Hughes
7701e38510
Add a basic Go parser
2021-07-25 23:46:33 +07:00
Wilfred Hughes
e36a2e8c96
Don't crash on binary files
2021-07-25 12:50:42 +07:00
Wilfred Hughes
c8481775e2
Remove --context CLI argument
2021-07-25 12:34:50 +07:00
Wilfred Hughes
04214ef1ef
Ignore indentation changes on multiline comments
2021-07-25 12:27:24 +07:00
Wilfred Hughes
3ebbf268fd
Improve alignment when LHS and RHS have different numbers of lines
2021-07-24 18:01:12 +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
3f8e41d862
Parse @ in elisp
2021-07-24 16:50:53 +07:00
Wilfred Hughes
45af6b4534
Parse < and > as symbols in elisp
2021-07-24 16:45:06 +07:00
Wilfred Hughes
2da5181ffb
Prefer replacing comments over novel atoms
...
This was broken in 4c33f34 .
2021-07-24 16:36:36 +07:00
Wilfred Hughes
6d7e155cc6
Remove unused CLI parameter
2021-07-24 16:27:33 +07:00
Wilfred Hughes
b81312e88b
Roll version
2021-07-22 00:09:13 +07:00
Wilfred Hughes
5d2c14a3f9
Entering a list should set the prev_novel state to the open delimiter
2021-07-22 00:07:09 +07:00
Wilfred Hughes
61446c916a
Prefer marking large subtrees as novel rather than largely novel
...
This solves the "replace function A with completely different function
B" problem, even if they start with the same function keyword.
2021-07-21 01:05:01 +07:00
Wilfred Hughes
c48e8e2977
Improve JS and JSON parsing
2021-07-20 01:18:39 +07:00
Wilfred Hughes
7bd8afc439
Improve handling of = and & in lisps
2021-07-20 01:09:29 +07:00
Wilfred Hughes
aa28b26f48
Basic support for non-UTF8 source files
2021-07-20 00:46:12 +07:00
Wilfred Hughes
2d9efe15a0
Fix another crash on empty files
...
Git history with file additions/removals should now work.
2021-07-20 00:22:01 +07:00
Wilfred Hughes
6bec8b7e2c
Don't crash on files without an extension
2021-07-20 00:10:58 +07:00
Wilfred Hughes
49ec9d68cc
Improve OCaml parsing for := and !
...
Fixes #20
2021-07-19 23:04:03 +07:00
Wilfred Hughes
6fb01cf7d3
Lex string literals with escaped delimiters
2021-07-18 23:42:36 +07:00
Wilfred Hughes
ad81a86419
+ is a legal symbol constituent in elisp
2021-07-18 23:40:46 +07:00
Wilfred Hughes
88b0ec2283
& is legal in elisp
...
It's used for variadic functions.
2021-07-18 23:25:56 +07:00
Wilfred Hughes
75839a1185
Support # and . in lisps
...
Elisp uses # for sharp-quoting, and some Schemes use # for vector
literals.
. is used for dotted pair notation.
2021-07-18 23:18:55 +07:00
Wilfred Hughes
28d5e51911
Fix crash on multibyte characters
...
Previously parsing would proceed byte at a time, which would crash if
the source contained multibyte characters. Instead, try all the
regular expression patterns, and jump to the next nearest match.
2021-07-18 22:34:52 +07:00
Wilfred Hughes
5f4ab7c292
Support using difftastic with built-in git commands
2021-07-18 15:01:32 +07:00
Wilfred Hughes
abddca0b46
Dijkstra visits nodes in distance order, so we only need predecessors
...
The first time we see a node, we've found the shortest path to it. Add
it to the predecessors then, and don't visit it again.
2021-07-17 17:53:59 +07:00
Wilfred Hughes
1c9ece441a
Improve --help
2021-07-17 14:18:40 +07:00
Wilfred Hughes
cdc70dd784
Add ReplaceComment edge and display a word diff between the comments
2021-07-17 13:55:41 +07:00
Wilfred Hughes
00fcd4652a
Recognise # and <- as OCaml punctuation
...
Fixes #18
2021-07-15 23:54:53 +07:00
Wilfred Hughes
a2e36cac46
Add more two-character lexems to Rust parser
2021-07-13 23:36:52 +07:00
Wilfred Hughes
4c79267602
Roll version
2021-07-13 23:27:17 +07:00
Wilfred Hughes
8b382e4356
Improved OCaml handling
...
Fixes #17
Fixes #15
2021-07-13 22:52:13 +07:00
Wilfred Hughes
74c2b8e901
Clarify slider and performance status
2021-07-13 22:31:13 +07:00
Wilfred Hughes
fbb2dffd4a
Store an ID on Syntax values and use it for vertex equality
2021-07-13 21:49:40 +07:00
Wilfred Hughes
b2d9035774
Consider nesting depth when comparing nodes
2021-07-10 17:42:02 +07:00
Wilfred Hughes
5c644baf7c
Treat .. as a single atom in Rust
2021-07-10 17:13:07 +07:00
Wilfred Hughes
4cf2a24997
Fixed crash on multibyte characters that include '\n'
...
Fixes #13
2021-07-09 23:37:04 +07:00
Wilfred Hughes
bbc77b8cbc
Organise changelog by area
2021-07-09 23:35:53 +07:00
Wilfred Hughes
ce35a5cc3a
Support $( ... ) and $foo in Rust
...
Closes #14
2021-07-09 22:54:11 +07:00
Wilfred Hughes
1dc6ab3977
Fix crash when diff touches first line
2021-07-08 01:10:37 +07:00
Wilfred Hughes
094133fe10
Ensure that we display all context lines, even if matched pairs are unordered
2021-07-07 23:45:22 +07:00
Wilfred Hughes
9e821956a5
Roll version
2021-07-07 22:25:03 +07:00
Wilfred Hughes
6f87140703
Don't crash if file is unchanged
...
Fixes #4
2021-07-07 22:19:46 +07:00
Wilfred Hughes
c43e724caf
Ensure :: is treated as a single token in Rust
2021-07-07 22:02:20 +07:00
Wilfred Hughes
da8a4c1ee1
Line up visible lines and include gaps if necessary
2021-07-07 22:01:19 +07:00
Wilfred Hughes
5463c120f4
Better punctuation parsing for JS and OCaml
...
Closes #7
2021-07-07 19:53:45 +07:00
Wilfred Hughes
ccaca6f6a6
Rust: Consider , as separate punctuation
...
Closes #8
2021-07-07 19:51:49 +07:00