Index: src/org/python/indexer/Diagnostic.java =================================================================== --- src/org/python/indexer/Diagnostic.java (revision 6429:ba74f5e6dcd8) +++ src/org/python/indexer/Diagnostic.java (revision 6429+:ba74f5e6dcd8+) @@ -15,6 +15,7 @@ public int end; public int line; public int column; + public int length; public String msg; public Diagnostic(String file, Type type, int start, int end, String msg) { @@ -25,10 +26,19 @@ this.msg = msg; } - // XXX: support line/column + public Diagnostic(String file, Type type, int line, int column, int length, String msg) { + this.type = type; + this.file = file; + this.line = line; + this.column = column; + this.length = length; + this.msg = msg; + } @Override public String toString() { - return ""; + return ""; } } Index: src/org/python/indexer/AstCache.java =================================================================== --- src/org/python/indexer/AstCache.java (revision 6429:ba74f5e6dcd8) +++ src/org/python/indexer/AstCache.java (revision 6429+:ba74f5e6dcd8+) @@ -224,7 +224,8 @@ List diags = Indexer.idx.getParseErrs(path); for (RecognitionException rx : errs) { String msg = rx.line + ":" + rx.charPositionInLine + ":" + rx; - diags.add(new Diagnostic(path, Diagnostic.Type.ERROR, -1, -1, msg)); + diags.add(new Diagnostic(path, Diagnostic.Type.ERROR, rx.token.getLine(), + rx.token.getCharPositionInLine(), rx.token.getText().length(),msg)); } }