(Re-)implementing syntax highlighting support for library keywords.

This commit is contained in:
David A. Mellis 2009-07-12 00:40:02 +00:00
parent f0c3263b2f
commit 59a85bfe59
2 changed files with 63 additions and 47 deletions

View File

@ -76,6 +76,8 @@ public class Base {
static private File toolsFolder;
static private File hardwareFolder;
static HashSet<File> libraries;
// maps imported packages to their library folder
static HashMap<String, File> importToLibraryTable;
@ -963,6 +965,9 @@ public class Base {
//System.out.println("rebuilding import menu");
importMenu.removeAll();
// reset the set of libraries
libraries = new HashSet<File>();
// reset the table mapping imports to libraries
importToLibraryTable = new HashMap<String, File>();
@ -1148,6 +1153,7 @@ public class Base {
// // need to associate each import with a library folder
// String packages[] =
// Compiler.packageListFromClassPath(libraryClassPath);
libraries.add(subfolder);
String packages[] = Compiler.headerListFromIncludePath(subfolder.getAbsolutePath());
for (String pkg : packages) {
importToLibraryTable.put(pkg, subfolder);
@ -1395,6 +1401,11 @@ public class Base {
}
static public Set<File> getLibraries() {
return libraries;
}
static public String getExamplesPath() {
return examplesFolder.getAbsolutePath();
}

View File

@ -58,8 +58,22 @@ public class PdeKeywords extends CTokenMarker {
try {
keywordColoring = new KeywordMap(false);
keywordToReference = new Hashtable();
getKeywords(Base.getLibStream("keywords.txt"));
for (File lib : Base.getLibraries()) {
File keywords = new File(lib, "keywords.txt");
if (keywords.exists()) getKeywords(new FileInputStream(keywords));
}
} catch (Exception e) {
Base.showError("Problem loading keywords",
"Could not load keywords.txt,\n" +
"please re-install Processing.", e);
System.exit(1);
}
}
return keywordColoring;
}
InputStream input = Base.getLibStream("keywords.txt");
static private void getKeywords(InputStream input) throws Exception {
InputStreamReader isr = new InputStreamReader(input);
BufferedReader reader = new BufferedReader(isr);
@ -104,15 +118,6 @@ public class PdeKeywords extends CTokenMarker {
}
}
reader.close();
} catch (Exception e) {
Base.showError("Problem loading keywords",
"Could not load keywords.txt,\n" +
"please re-install Processing.", e);
System.exit(1);
}
}
return keywordColoring;
}