промежуточный. использовал невидимый символ для обозначения различий

This commit is contained in:
2025-03-26 00:11:41 +03:00
parent a47a6705d8
commit b900622e4e
4 changed files with 13 additions and 44 deletions

View File

@@ -9,6 +9,9 @@ import Common.Visual.Menus.VisualiserMenuBar;
import Common.Visual.UI;
import _VisualDVM.ProjectData.Files.UI.Editor.SPFEditor;
import _VisualDVM.Utils;
import com.github.difflib.DiffUtils;
import com.github.difflib.patch.AbstractDelta;
import com.github.difflib.patch.Patch;
import com.github.difflib.text.DiffRow;
import com.github.difflib.text.DiffRowGenerator;
import javafx.util.Pair;
@@ -16,7 +19,6 @@ import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaHighlighter;
import org.fife.ui.rtextarea.RTextScrollPane;
import javax.swing.*;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Vector;
import java.util.regex.Matcher;
@@ -48,6 +50,8 @@ public abstract class ComparisonForm<T> {
//-----
private boolean events_on = false;//относится только к мастеру, отвечает за скроллы.
private int current_diff_line = -1;
final String separator = "\u200B";
//невидимый пробел https://translated.turbopages.org/proxy_u/en-ru.ru.898e1daf-67e318c0-3fccff8a-74722d776562/https/stackoverflow.com/questions/17978720/invisible-characters-ascii
//--->>
// protected Object ownScrollModel = null;
//---<<
@@ -160,8 +164,8 @@ public abstract class ComparisonForm<T> {
.showInlineDiffs(true)
.inlineDiffByWord(true)
.ignoreWhiteSpaces(true)
.oldTag(f -> "~")
.newTag(f -> "**")
.oldTag(f -> separator)
.newTag(f -> separator)
.build();
List<DiffRow> rows = generator.generateDiffRows(
visible_lines,
@@ -176,7 +180,7 @@ public abstract class ComparisonForm<T> {
Body.setCaretPosition(0);
slave.Body.setCaretPosition(0);
//--
Pattern master_pattern = Pattern.compile("~.*~");
Pattern master_pattern = Pattern.compile(separator + ".*" + separator);
Matcher master_matcher = master_pattern.matcher(Body.getText());
while (master_matcher.find()) {
Body.getHighlighter().addHighlight(
@@ -185,7 +189,7 @@ public abstract class ComparisonForm<T> {
SPFEditor.RedTextPainter
);
}
Pattern slave_pattern = Pattern.compile("\\*.*\\*");
Pattern slave_pattern = Pattern.compile(separator + ".*" + separator);
Matcher slave_matcher = slave_pattern.matcher(slave.Body.getText());
while (slave_matcher.find()) {
slave_highlighter.addHighlight(