Changeset 518
- Timestamp:
- 01/07/10 21:01:07 (3 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/jlatexeditor/errorhighlighting/LatexCompiler.java
r376 r518 9 9 import java.util.ArrayList; 10 10 import java.util.Map; 11 import java.util.regex.Matcher; 12 import java.util.regex.Pattern; 11 13 12 14 /** … … 28 30 private ArrayList<LatexCompileListener> compileListeners = new ArrayList<LatexCompileListener>(); 29 31 32 private static Pattern fileLineError = Pattern.compile("([^:]+):([\\d]+):(.*)"); 33 30 34 public LatexCompiler(int type, SourceCodeEditor editor, ErrorView errorView){ 31 35 this.type = type; … … 54 58 try{ 55 59 if(type == TYPE_PDF) { 56 latexCompiler = exec("pdflatex - interaction=nonstopmode " + baseName + ".tex", file.getParentFile());60 latexCompiler = exec("pdflatex -file-line-error -interaction=nonstopmode " + baseName + ".tex", file.getParentFile()); 57 61 } else { 58 latexCompiler = exec("latex - interaction=nonstopmode -output-format=dvi " + baseName + ".tex", file.getParentFile());62 latexCompiler = exec("latex -file-line-error -interaction=nonstopmode -output-format=dvi " + baseName + ".tex", file.getParentFile()); 59 63 } 60 64 } catch(Exception e){ … … 64 68 65 69 BufferedReader in = new BufferedReader(new InputStreamReader(latexCompiler.getInputStream()), 100000); 66 67 70 try{ 68 71 LatexCompileError error; … … 72 75 while(line != null){ 73 76 // error messages 74 if(line.startsWith("!")) { 77 Matcher errorMatcher = fileLineError.matcher(line); 78 if(line.startsWith("!") || errorMatcher.matches()) { 75 79 error = new LatexCompileError(); 76 80 error.setType(LatexCompileError.TYPE_ERROR); 77 String fileName = fileStack.get(fileStack.size() - 1); 78 error.setFile(new File(file.getParentFile(), fileName), fileName); 79 80 error.setMessage(line.substring(1).trim()); 81 if(line.startsWith("!")) { 82 String fileName = fileStack.get(fileStack.size() - 1); 83 error.setFile(new File(file.getParentFile(), fileName), fileName); 84 error.setMessage(line.substring(1).trim()); 85 } else { 86 String fileName = errorMatcher.group(1); 87 error.setFile(new File(file.getParentFile(), fileName), fileName); 88 error.setLine(Integer.parseInt(errorMatcher.group(2))); 89 error.setMessage(errorMatcher.group(3).trim()); 90 91 // bug 92 if(!fileStack.get(fileStack.size()-1).equals(fileName)) fileStack.add(fileName); 93 } 81 94 82 95 while(line != null && !line.startsWith("l.")) { … … 170 183 171 184 // opening and closing files 172 if((line.indexOf("(") != -1 && !line.startsWith("(see")) || line.indexOf(')') != -1) { 185 if((line.indexOf("(") != -1 && !line.startsWith("(see")) || line.startsWith(")") || 186 (line.indexOf(')') != -1 && (line.startsWith("[") || line.indexOf(".tex") != 0 || line.indexOf(".sty") != 0 || line.indexOf(".bbl") != 0 || line.indexOf(".aux") != 0)) ) { 173 187 int position = 0; 174 188 … … 196 210 fileStack.add(fileName); 197 211 } else { 198 fileStack.remove(fileStack.size() - 1); 212 // never empty the stack... parsing bugs 213 if(fileStack.size() > 1) fileStack.remove(fileStack.size() - 1); 199 214 position = close + 1; 200 215 }
![(please configure the [header_logo] section in trac.ini)](http://jlatexeditor.endrullis.de/chrome/site/logo.png)