mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.1.0562: parsing of 'diffopt' is slightly wrong
Problem: Parsing of 'diffopt' is slightly wrong.
Solution: Fix the parsing and add a test. (Jason Franklin, Christian
Brabandt)
b6fc72851c
This commit is contained in:
parent
f273e43cb8
commit
4e29810817
@ -2109,6 +2109,7 @@ int diffopt_changed(void)
|
|||||||
int diff_flags_new = 0;
|
int diff_flags_new = 0;
|
||||||
int diff_foldcolumn_new = 2;
|
int diff_foldcolumn_new = 2;
|
||||||
long diff_algorithm_new = 0;
|
long diff_algorithm_new = 0;
|
||||||
|
long diff_indent_heuristic = 0;
|
||||||
|
|
||||||
char_u *p = p_dip;
|
char_u *p = p_dip;
|
||||||
while (*p != NUL) {
|
while (*p != NUL) {
|
||||||
@ -2147,7 +2148,7 @@ int diffopt_changed(void)
|
|||||||
diff_flags_new |= DIFF_HIDDEN_OFF;
|
diff_flags_new |= DIFF_HIDDEN_OFF;
|
||||||
} else if (STRNCMP(p, "indent-heuristic", 16) == 0) {
|
} else if (STRNCMP(p, "indent-heuristic", 16) == 0) {
|
||||||
p += 16;
|
p += 16;
|
||||||
diff_algorithm_new |= XDF_INDENT_HEURISTIC;
|
diff_indent_heuristic = XDF_INDENT_HEURISTIC;
|
||||||
} else if (STRNCMP(p, "internal", 8) == 0) {
|
} else if (STRNCMP(p, "internal", 8) == 0) {
|
||||||
p += 8;
|
p += 8;
|
||||||
diff_flags_new |= DIFF_INTERNAL;
|
diff_flags_new |= DIFF_INTERNAL;
|
||||||
@ -2179,6 +2180,8 @@ int diffopt_changed(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
diff_algorithm_new |= diff_indent_heuristic;
|
||||||
|
|
||||||
// Can't have both "horizontal" and "vertical".
|
// Can't have both "horizontal" and "vertical".
|
||||||
if ((diff_flags_new & DIFF_HORIZONTAL) && (diff_flags_new & DIFF_VERTICAL)) {
|
if ((diff_flags_new & DIFF_HORIZONTAL) && (diff_flags_new & DIFF_VERTICAL)) {
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
@ -578,6 +578,30 @@ int main(int argc, char **argv)
|
|||||||
|
|
|
|
||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('indent-heuristic random order', function()
|
||||||
|
reread()
|
||||||
|
feed(':set diffopt=internal,filler,indent-heuristic,algorithm:patience<cr>')
|
||||||
|
feed(':<cr>')
|
||||||
|
screen:expect([[
|
||||||
|
{1: }^def finalize(value{3:│}{1: }def finalize(valu|
|
||||||
|
{1: } {3:│}{1: } |
|
||||||
|
{1: }{2:------------------}{3:│}{1: }{4: values.each do }|
|
||||||
|
{1: }{2:------------------}{3:│}{1: }{4: v.prepare }|
|
||||||
|
{1: }{2:------------------}{3:│}{1: }{4: end }|
|
||||||
|
{1: }{2:------------------}{3:│}{1: }{4: }|
|
||||||
|
{1: } values.each do |{3:│}{1: } values.each do |
|
||||||
|
{1: } v.finalize {3:│}{1: } v.finalize |
|
||||||
|
{1: } end {3:│}{1: } end |
|
||||||
|
{1: }{6:~ }{3:│}{1: }{6:~ }|
|
||||||
|
{1: }{6:~ }{3:│}{1: }{6:~ }|
|
||||||
|
{1: }{6:~ }{3:│}{1: }{6:~ }|
|
||||||
|
{1: }{6:~ }{3:│}{1: }{6:~ }|
|
||||||
|
{1: }{6:~ }{3:│}{1: }{6:~ }|
|
||||||
|
{7:<onal-diff-screen-1 }{3:<l-diff-screen-1.2 }|
|
||||||
|
: |
|
||||||
|
]])
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('Diff the same file', function()
|
it('Diff the same file', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user