From 6fb0becd4b677ecb193840a78bf5ebfaffefbac9 Mon Sep 17 00:00:00 2001 From: Manindra Moharana Date: Wed, 11 Jun 2014 00:43:32 +0530 Subject: [PATCH] precisise highlighting working only for specific compiler errors, needs more work --- .../experimental/ErrorCheckerService.java | 4 ++-- .../mode/experimental/TextAreaPainter.java | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/pdex/src/processing/mode/experimental/ErrorCheckerService.java b/pdex/src/processing/mode/experimental/ErrorCheckerService.java index b1d663418..728f72c8b 100644 --- a/pdex/src/processing/mode/experimental/ErrorCheckerService.java +++ b/pdex/src/processing/mode/experimental/ErrorCheckerService.java @@ -751,7 +751,7 @@ public class ErrorCheckerService implements Runnable{ // Code in pde tabs stored as PlainDocument PlainDocument pdeTabs[] = new PlainDocument[editor.getSketch() .getCodeCount()]; - + log("calcPDEOffsetsForProbList() mco: " + mainClassOffset); try { javaSource.insertString(0, sourceCode, null); for (int i = 0; i < pdeTabs.length; i++) { @@ -803,7 +803,7 @@ public class ErrorCheckerService implements Runnable{ .getIProblem().getSourceStart())); // astGenerator.highlightPDECode(p.getTabIndex(), p.getLineNumber(), // pdeOffset, (prbEnd - prbStart + 1)); - p.setPDEOffsets(pdeOffset, prbEnd - prbStart); + p.setPDEOffsets(pdeOffset, pdeOffset + prbEnd - prbStart); } } catch (BadLocationException e) { // TODO Auto-generated catch block diff --git a/pdex/src/processing/mode/experimental/TextAreaPainter.java b/pdex/src/processing/mode/experimental/TextAreaPainter.java index 4a5c62849..04714dd69 100644 --- a/pdex/src/processing/mode/experimental/TextAreaPainter.java +++ b/pdex/src/processing/mode/experimental/TextAreaPainter.java @@ -325,7 +325,7 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter { isWarning = true; } problem = emarker.getProblem(); - log(problem.toString()); + //log(problem.toString()); break; } } @@ -343,12 +343,16 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter { int start = ta.getLineStartOffset(line) + problem.getPDELineStartOffset(); int pLength = problem.getPDELineStopOffset() + 1 - problem.getPDELineStartOffset(); + try { - String linetext = null; - + String badCode = null; + String goodCode = null; try { - linetext = ta.getDocument().getText(start, pLength); - log("paintErrorLine() LineText: " + linetext); + badCode = ta.getDocument().getText(start, pLength); + goodCode = ta.getDocument().getText(ta.getLineStartOffset(line), + problem.getPDELineStartOffset()); + //log("paintErrorLine() LineText GC: " + goodCode); + //log("paintErrorLine() LineText BC: " + badCode); } catch (BadLocationException bl) { // Error in the import statements or end of code. // System.out.print("BL caught. " + ta.getLineCount() + " ," @@ -358,11 +362,12 @@ public class TextAreaPainter extends processing.app.syntax.TextAreaPainter { } // Take care of offsets - int aw = fm.stringWidth(trimRight(linetext)) + ta.getHorizontalOffset(); // apparent width. Whitespaces + int aw = fm.stringWidth(trimRight(badCode)) + ta.getHorizontalOffset(); // apparent width. Whitespaces // to the left of line + text // width - int rw = fm.stringWidth(linetext.trim()); // real width - int x1 = 0 + (aw - rw), y1 = y + fm.getHeight() - 2, x2 = x1 + rw; + int rw = fm.stringWidth(badCode.trim()); // real width + int x1 = fm.stringWidth(goodCode) + (aw - rw), y1 = y + fm.getHeight() + - 2, x2 = x1 + rw; // Adding offsets for the gutter x1 += ta.getGutterWidth(); x2 += ta.getGutterWidth();