mirror of
https://github.com/processing/processing4.git
synced 2026-02-14 02:45:36 +01:00
meh. broke something again
This commit is contained in:
@@ -715,6 +715,7 @@ public class ErrorCheckerService implements Runnable{
|
||||
}
|
||||
problemsList.add(p);
|
||||
}
|
||||
calcPDEOffsetsForProbList();
|
||||
}
|
||||
} catch (ClassNotFoundException e) {
|
||||
System.err.println("Compiltation Checker files couldn't be found! "
|
||||
@@ -742,15 +743,37 @@ public class ErrorCheckerService implements Runnable{
|
||||
// log("Compilecheck, Done.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates PDE Offsets from Java Offsets for Problems
|
||||
*/
|
||||
private void calcPDEOffsetsForProbList() {
|
||||
PlainDocument javaSource = new PlainDocument();
|
||||
try {
|
||||
// Code in pde tabs stored as PlainDocument
|
||||
PlainDocument pdeTabs[] = new PlainDocument[editor.getSketch()
|
||||
.getCodeCount()];
|
||||
|
||||
try {
|
||||
javaSource.insertString(0, sourceCode, null);
|
||||
for (int i = 0; i < pdeTabs.length; i++) {
|
||||
SketchCode sc = editor.getSketch().getCode(i);
|
||||
pdeTabs[i] = new PlainDocument();
|
||||
if (editor.getSketch().getCurrentCode().equals(sc)) {
|
||||
pdeTabs[i].insertString(0,
|
||||
sc.getDocument().getText(0,
|
||||
sc.getDocument()
|
||||
.getLength()),
|
||||
null);
|
||||
} else {
|
||||
pdeTabs[i].insertString(0,
|
||||
sc.getProgram(),
|
||||
null);
|
||||
}
|
||||
}
|
||||
int pkgNameOffset = ("package " + className + ";\n").length();
|
||||
for (Problem p : problemsList) {
|
||||
int javaLineNumber = p.getIProblem().getSourceLineNumber();
|
||||
Element lineElement = javaSource.getDefaultRootElement()
|
||||
.getElement(javaLineNumber - 1);
|
||||
.getElement(javaLineNumber - 2);
|
||||
if (lineElement == null) {
|
||||
log("calcPDEOffsetsForProbList(): Couldn't fetch javalinenum "
|
||||
+ javaLineNumber);
|
||||
@@ -761,11 +784,19 @@ public class ErrorCheckerService implements Runnable{
|
||||
- lineElement.getStartOffset());
|
||||
int prbStart = p.getIProblem().getSourceStart() - pkgNameOffset, prbEnd = p
|
||||
.getIProblem().getSourceEnd() - pkgNameOffset;
|
||||
|
||||
OffsetMatcher ofm = new OffsetMatcher(
|
||||
astGenerator
|
||||
.getPDESourceCodeLine(javaLineNumber),
|
||||
javaLine);
|
||||
Element pdeLineElement = pdeTabs[p.getTabIndex()]
|
||||
.getDefaultRootElement().getElement(p.getLineNumber()-1);
|
||||
if (pdeLineElement == null) {
|
||||
log("calcPDEOffsetsForProbList(): Couldn't fetch pdelinenum "
|
||||
+ javaLineNumber);
|
||||
continue;
|
||||
}
|
||||
String pdeLine = pdeTabs[p.getTabIndex()]
|
||||
.getText(pdeLineElement.getStartOffset(), pdeLineElement.getEndOffset()
|
||||
- pdeLineElement.getStartOffset());
|
||||
log("calcPDEOffsetsForProbList(): P " + pdeLine);
|
||||
log("calcPDEOffsetsForProbList(): J " + javaLine);
|
||||
OffsetMatcher ofm = new OffsetMatcher(pdeLine, javaLine);
|
||||
//log("");
|
||||
int pdeOffset = ofm.getPdeOffForJavaOff(prbStart
|
||||
- lineElement.getStartOffset(), (prbEnd - p
|
||||
|
||||
@@ -89,10 +89,19 @@ public class Problem {
|
||||
lineStartOffset = startOffset;
|
||||
lineStopOffset = stopOffset;
|
||||
}
|
||||
|
||||
public int getPDELineStartOffset(){
|
||||
return lineStartOffset;
|
||||
}
|
||||
|
||||
public int getPDELineStopOffset(){
|
||||
return lineStopOffset;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return new String("TAB " + tabIndex + ",LN " + lineNumber + ",PROB: "
|
||||
+ message);
|
||||
return new String("TAB " + tabIndex + ",LN " + lineNumber + "LN START OFF: "
|
||||
+ lineStartOffset + ",LN STOP OFF: " + lineStopOffset + ",PROB: "
|
||||
+ message);
|
||||
}
|
||||
|
||||
public boolean isError(){
|
||||
|
||||
@@ -314,7 +314,8 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter {
|
||||
|
||||
boolean notFound = true;
|
||||
boolean isWarning = false;
|
||||
|
||||
Problem problem = null;
|
||||
|
||||
// Check if current line contains an error. If it does, find if it's an
|
||||
// error or warning
|
||||
for (ErrorMarker emarker : errorCheckerService.getEditor().errorBar.errorPoints) {
|
||||
@@ -323,6 +324,8 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter {
|
||||
if (emarker.getType() == ErrorMarker.Warning) {
|
||||
isWarning = true;
|
||||
}
|
||||
problem = emarker.getProblem();
|
||||
log(problem.toString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -337,15 +340,15 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter {
|
||||
int y = ta.lineToY(line);
|
||||
y += fm.getLeading() + fm.getMaxDescent();
|
||||
int height = fm.getHeight();
|
||||
int start = ta.getLineStartOffset(line);
|
||||
|
||||
int start = ta.getLineStartOffset(line) + problem.getPDELineStartOffset();
|
||||
int pLength = problem.getPDELineStopOffset() + 1
|
||||
- problem.getPDELineStartOffset();
|
||||
try {
|
||||
String linetext = null;
|
||||
|
||||
try {
|
||||
linetext = ta.getDocument().getText(start,
|
||||
ta.getLineStopOffset(line) - start
|
||||
- 1);
|
||||
linetext = ta.getDocument().getText(start, pLength);
|
||||
log("paintErrorLine() LineText: " + linetext);
|
||||
} catch (BadLocationException bl) {
|
||||
// Error in the import statements or end of code.
|
||||
// System.out.print("BL caught. " + ta.getLineCount() + " ,"
|
||||
|
||||
Reference in New Issue
Block a user