Skip to content

Commit 36e1cbd

Browse files
committed
Compiling again but highlighting wrong.
1 parent 0c5be4f commit 36e1cbd

File tree

6 files changed

+39
-123
lines changed

6 files changed

+39
-123
lines changed

app/src/processing/app/Problem.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,17 @@ public interface Problem {
7070
* Get the exact character on which this problem starts in code line relative.
7171
*
7272
* @return Number of characters past the start of the line if known where the
73-
* code associated with the Problem starts. Returns empty if not provided.
73+
* code associated with the Problem starts.
7474
*/
75-
public Optional<Integer> getStartOffset();
75+
public int getStartOffset();
7676

7777
/**
7878
* Get the exact character on which this problem ends in code line relative.
7979
*
8080
* @return Number of characters past the start of the line if known where the
81-
* code associated with the Problem ends. Returns empty if not provided.
81+
* code associated with the Problem ends.
8282
*/
83-
public Optional<Integer> getStopOffset();
83+
public int getStopOffset();
8484

8585
}
8686

app/src/processing/app/syntax/PdeTextAreaPainter.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ public class PdeTextAreaPainter extends TextAreaPainter {
4646
protected Color gutterTextInactiveColor;
4747
protected Color gutterHighlightColor;
4848

49-
private final Problem.LineToTabOffsetGetter lineToTabOffsetGetter;
50-
5149

5250
public PdeTextAreaPainter(JEditTextArea textArea, TextAreaDefaults defaults) {
5351
super(textArea, defaults);
@@ -78,10 +76,6 @@ public void mousePressed(MouseEvent event) {
7876
}
7977
}
8078
});
81-
82-
lineToTabOffsetGetter = (x) -> {
83-
return textArea.getLineStartOffset(x);
84-
};
8579
}
8680

8781

@@ -153,12 +147,12 @@ protected void paintLine(Graphics gfx, int line, int x, TokenMarkerState marker)
153147
protected void paintErrorLine(Graphics gfx, int line, int x) {
154148
List<Problem> problems = getEditor().findProblems(line);
155149
for (Problem problem : problems) {
156-
int startOffset = problem.computeTabStartOffset(lineToTabOffsetGetter);
157-
int stopOffset = problem.computeTabStopOffset(lineToTabOffsetGetter);
158-
159150
int lineOffsetStart = textArea.getLineStartOffset(line);
160151
int lineOffsetStop = textArea.getLineStopOffset(line);
161152

153+
int startOffset = lineOffsetStart + problem.getStartOffset();
154+
int stopOffset = lineOffsetStart + problem.getStopOffset();
155+
162156
int wiggleStart = Math.max(startOffset, lineOffsetStart);
163157
int wiggleStop = Math.min(stopOffset, lineOffsetStop);
164158

@@ -338,8 +332,8 @@ public String getToolTipText(MouseEvent event) {
338332
int lineStart = textArea.getLineStartOffset(line);
339333
int lineEnd = textArea.getLineStopOffset(line);
340334

341-
int errorStart = problem.computeTabStartOffset(lineToTabOffsetGetter);
342-
int errorEnd = problem.computeTabStopOffset(lineToTabOffsetGetter) + 1;
335+
int errorStart = lineStart + problem.getStartOffset();
336+
int errorEnd = lineStart + problem.getStopOffset();
343337

344338
int startOffset = Math.max(errorStart, lineStart) - lineStart;
345339
int stopOffset = Math.min(errorEnd, lineEnd) - lineStart;

app/src/processing/app/ui/Editor.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2556,16 +2556,16 @@ public void updateErrorTable(List<Problem> problems) {
25562556

25572557

25582558
public void highlight(Problem p) {
2559-
Problem.LineToTabOffsetGetter getter = (x) -> {
2560-
return textarea.getLineStartOffset(x);
2561-
};
2562-
2563-
if (p != null) {
2564-
int tabIndex = p.getTabIndex();
2565-
int tabToStartOffset = p.computeTabStartOffset(getter);
2566-
int tabToStopOffset = p.computeTabStopOffset(getter);
2567-
highlight(tabIndex, tabToStartOffset, tabToStopOffset);
2559+
if (p == null) {
2560+
return;
25682561
}
2562+
2563+
int tabIndex = p.getTabIndex();
2564+
int lineNumber = p.getLineNumber();
2565+
int lineStart = textarea.getLineStartOffset(lineNumber);
2566+
int tabToStartOffset = lineStart + p.getStartOffset();
2567+
int tabToStopOffset = lineStart + p.getStopOffset();
2568+
highlight(tabIndex, tabToStartOffset, tabToStopOffset);
25692569
}
25702570

25712571

@@ -2630,9 +2630,8 @@ public List<Problem> findProblems(int line) {
26302630
.filter(p -> p.getTabIndex() == currentTab)
26312631
.filter(p -> {
26322632
int pStartLine = p.getLineNumber();
2633-
int pEndOffset = p.computeTabStopOffset(
2634-
(startLine) -> textarea.getLineStartOffset(pStartLine)
2635-
);
2633+
int lineOffset = textarea.getLineOfOffset(pStartLine);
2634+
int pEndOffset = lineOffset + p.getStopOffset();
26362635
int pEndLine = textarea.getLineOfOffset(pEndOffset);
26372636

26382637
return line >= pStartLine && line <= pEndLine;

java/src/processing/mode/java/JavaProblem.java

Lines changed: 6 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020

2121
package processing.mode.java;
2222

23-
import java.util.Optional;
24-
2523
import org.eclipse.jdt.core.compiler.IProblem;
2624

2725
import processing.app.Problem;
@@ -44,9 +42,9 @@ public class JavaProblem implements Problem {
4442
/** Line number (pde code) of the error */
4543
private final int lineNumber;
4644

47-
private Optional<Integer> startOffset;
45+
private int startOffset;
4846

49-
private Optional<Integer> stopOffset;
47+
private int stopOffset;
5048

5149
/**
5250
* If the error is a 'cannot find type' contains the list of suggested imports
@@ -62,8 +60,6 @@ public JavaProblem(String message, int type, int tabIndex, int lineNumber) {
6260
this.type = type;
6361
this.tabIndex = tabIndex;
6462
this.lineNumber = lineNumber;
65-
this.startOffset = Optional.empty();
66-
this.stopOffset = Optional.empty();
6763
}
6864

6965

@@ -87,32 +83,22 @@ static public JavaProblem fromIProblem(IProblem iProblem, int tabIndex,
8783

8884

8985
public void setPDEOffsets(int startOffset, int stopOffset){
90-
this.startOffset = Optional.of(startOffset);
91-
this.stopOffset = Optional.of(stopOffset);
86+
this.startOffset = startOffset;
87+
this.stopOffset = stopOffset;
9288
}
9389

9490

9591
@Override
96-
public Optional<Integer> getTabStartOffset() {
92+
public int getStartOffset() {
9793
return startOffset;
9894
}
9995

10096

10197
@Override
102-
public Optional<Integer> getTabStopOffset() {
98+
public int getStopOffset() {
10399
return stopOffset;
104100
}
105101

106-
@Override
107-
public Optional<Integer> getLineStartOffset() {
108-
return Optional.empty();
109-
}
110-
111-
@Override
112-
public Optional<Integer> getLineStopOffset() {
113-
return Optional.empty();
114-
}
115-
116102
@Override
117103
public boolean isError() {
118104
return type == ERROR;
@@ -163,36 +149,4 @@ public String toString() {
163149
+ message;
164150
}
165151

166-
@Override
167-
public int computeTabStartOffset(LineToTabOffsetGetter strategy) {
168-
Optional<Integer> nativeTabStartOffset = getTabStartOffset();
169-
if (nativeTabStartOffset.isPresent()) {
170-
return nativeTabStartOffset.get();
171-
}
172-
173-
Optional<Integer> lineStartOffset = getLineStartOffset();
174-
int lineOffset = strategy.get(getLineNumber());
175-
if (lineStartOffset.isPresent()) {
176-
return lineOffset + lineStartOffset.get();
177-
} else {
178-
return lineOffset;
179-
}
180-
}
181-
182-
@Override
183-
public int computeTabStopOffset(LineToTabOffsetGetter strategy) {
184-
Optional<Integer> nativeTabStopOffset = getTabStopOffset();
185-
if (nativeTabStopOffset.isPresent()) {
186-
return nativeTabStopOffset.get();
187-
}
188-
189-
Optional<Integer> lineStopOffset = getLineStopOffset();
190-
int lineOffset = strategy.get(getLineNumber());
191-
if (lineStopOffset.isPresent()) {
192-
return lineOffset + lineStopOffset.get();
193-
} else {
194-
return lineOffset;
195-
}
196-
}
197-
198152
}

java/src/processing/mode/java/SyntaxProblem.java

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -29,44 +29,28 @@ public class SyntaxProblem extends JavaProblem {
2929
private final int tabIndex;
3030
private final int lineNumber;
3131
private final String message;
32-
private final Optional<Integer> tabStartOffset;
33-
private final Optional<Integer> tabStopOffset;
34-
private final Optional<Integer> lineStartOffset;
35-
private final Optional<Integer> lineStopOffset;
32+
private final int lineStartOffset;
33+
private final int lineStopOffset;
3634

3735
/**
3836
* Create a new syntax problem.
3937
*
4038
* @param newTabIndex The tab number containing the source with the syntax issue.
4139
* @param newLineNumber The line number within the tab at which the offending code can be found.
4240
* @param newMessage Human readable message describing the issue.
43-
* @param newStartOffset The character index at which the issue starts. This is relative to start
44-
* of tab / file not relative to start of line if newUsesLineOffset is true else it is line
45-
* offset.
46-
* @param newStopOffset The character index at which the issue ends. This is relative to start
47-
* of tab / file not relative to start of line if newUsesLineOffset is true else it is line
48-
* offset.
41+
* @param newStartOffset The character index at which the issue starts relative to line.
42+
* @param newStopOffset The character index at which the issue end relative to line.
4943
*/
5044
public SyntaxProblem(int newTabIndex, int newLineNumber, String newMessage, int newStartOffset,
51-
int newStopOffset, boolean newUsesLineOffset) {
45+
int newStopOffset) {
5246

5347
super(newMessage, JavaProblem.ERROR, newLineNumber, newLineNumber);
5448

5549
tabIndex = newTabIndex;
5650
lineNumber = newLineNumber;
5751
message = newMessage;
58-
59-
if (newUsesLineOffset) {
60-
lineStartOffset = Optional.of(newStartOffset);
61-
lineStopOffset = Optional.of(newStopOffset);
62-
tabStartOffset = Optional.empty();
63-
tabStopOffset = Optional.empty();
64-
} else {
65-
lineStartOffset = Optional.empty();
66-
lineStopOffset = Optional.empty();
67-
tabStartOffset = Optional.of(newStartOffset);
68-
tabStopOffset = Optional.of(newStopOffset);
69-
}
52+
lineStartOffset = newStartOffset;
53+
lineStopOffset = newStopOffset;
7054
}
7155

7256
@Override
@@ -94,23 +78,11 @@ public String getMessage() {
9478
return message;
9579
}
9680

97-
@Override
98-
public Optional<Integer> getTabStartOffset() {
99-
return tabStartOffset;
100-
}
101-
102-
@Override
103-
public Optional<Integer> getTabStopOffset() {
104-
return tabStopOffset;
105-
}
106-
107-
@Override
108-
public Optional<Integer> getLineStartOffset() {
81+
public int getStartOffset() {
10982
return lineStartOffset;
11083
}
11184

112-
@Override
113-
public Optional<Integer> getLineStopOffset() {
85+
public int getStopOffset() {
11486
return lineStopOffset;
11587
}
11688

java/src/processing/mode/java/lsp/PdeAdapter.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,24 +229,21 @@ void updateProblems(List<Problem> problems) {
229229
.map(prob -> {
230230
SketchCode code = sketch.getCode(prob.getTabIndex());
231231

232-
Optional<Integer> startOffset = prob.getTabStartOffset();
233-
Optional<Integer> endOffset = prob.getTabStopOffset();
234-
235-
assert startOffset.isPresent();
236-
assert endOffset.isPresent();
232+
int startOffset = prob.getStartOffset();
233+
int endOffset = prob.getStopOffset();
237234

238235
Diagnostic dia = new Diagnostic(
239236
new Range(
240237
new Position(
241238
prob.getLineNumber(),
242239
PdeAdapter
243-
.toLineCol(code.getProgram(), startOffset.get())
240+
.toLineCol(code.getProgram(), startOffset)
244241
.col - 1
245242
),
246243
new Position(
247244
prob.getLineNumber(),
248245
PdeAdapter
249-
.toLineCol(code.getProgram(), endOffset.get())
246+
.toLineCol(code.getProgram(), endOffset)
250247
.col - 1
251248
)
252249
),

0 commit comments

Comments
 (0)