Skip to content

Commit 46cfb7f

Browse files
Allow per-platform keywords.txt
1 parent 9421e1c commit 46cfb7f

File tree

4 files changed

+39
-2
lines changed

4 files changed

+39
-2
lines changed

app/src/processing/app/Base.java

+17-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public class Base {
117117
private List<JMenu> boardsCustomMenus;
118118
private List<JMenuItem> programmerMenus;
119119

120-
private final PdeKeywords pdeKeywords;
120+
private PdeKeywords pdeKeywords;
121121
private final List<JMenuItem> recentSketchesMenuItems;
122122

123123
static public void main(String args[]) throws Exception {
@@ -1250,9 +1250,25 @@ public void rebuildExamplesMenu(JMenu menu) {
12501250
}
12511251
}
12521252

1253+
private static String priorPlatformFolder;
1254+
12531255
public void onBoardOrPortChange() {
12541256
BaseNoGui.onBoardOrPortChange();
12551257

1258+
// reload keywords when package/platform changes
1259+
TargetPlatform tp = BaseNoGui.getTargetPlatform();
1260+
if (tp != null) {
1261+
String platformFolder = tp.getFolder().getAbsolutePath();
1262+
if (priorPlatformFolder == null || !priorPlatformFolder.equals(platformFolder)) {
1263+
pdeKeywords = new PdeKeywords();
1264+
pdeKeywords.reload();
1265+
priorPlatformFolder = platformFolder;
1266+
for (Editor editor : editors) {
1267+
editor.updateKeywords(pdeKeywords);
1268+
}
1269+
}
1270+
}
1271+
12561272
// Update editors status bar
12571273
for (Editor editor : editors) {
12581274
editor.onBoardOrPortChange();

app/src/processing/app/Editor.java

+10
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import processing.app.helpers.OSUtils;
4141
import processing.app.helpers.PreferencesMapException;
4242
import processing.app.legacy.PApplet;
43+
import processing.app.syntax.PdeKeywords;
4344
import processing.app.syntax.ArduinoTokenMakerFactory;
4445
import processing.app.syntax.SketchTextArea;
4546
import processing.app.tools.DiscourseFormat;
@@ -1060,6 +1061,15 @@ public void caretUpdate(CaretEvent e) {
10601061
return textArea;
10611062
}
10621063

1064+
public void updateKeywords(PdeKeywords keywords) {
1065+
// update GUI for "Find In Reference"
1066+
textarea.setKeywords(keywords);
1067+
// update document for syntax highlighting
1068+
RSyntaxDocument document = (RSyntaxDocument) textarea.getDocument();
1069+
document.setTokenMakerFactory(new ArduinoTokenMakerFactory(keywords));
1070+
document.setSyntaxStyle(RSyntaxDocument.SYNTAX_STYLE_CPLUSPLUS);
1071+
}
1072+
10631073
private JMenuItem createToolMenuItem(String className) {
10641074
try {
10651075
Class<?> toolClass = Class.forName(className);

app/src/processing/app/syntax/PdeKeywords.java

+6
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import processing.app.Base;
3232
import processing.app.BaseNoGui;
3333
import processing.app.legacy.PApplet;
34+
import processing.app.debug.TargetPlatform;
3435

3536
import java.io.BufferedReader;
3637
import java.io.File;
@@ -84,6 +85,11 @@ public PdeKeywords() {
8485
public void reload() {
8586
try {
8687
parseKeywordsTxt(new File(BaseNoGui.getContentFile("lib"), "keywords.txt"));
88+
TargetPlatform tp = BaseNoGui.getTargetPlatform();
89+
if (tp != null) {
90+
File platformKeywords = new File(tp.getFolder(), "keywords.txt");
91+
if (platformKeywords.exists()) parseKeywordsTxt(platformKeywords);
92+
}
8793
for (ContributedLibrary lib : Base.getLibraries()) {
8894
File keywords = new File(lib.getInstalledFolder(), "keywords.txt");
8995
if (keywords.exists()) {

app/src/processing/app/syntax/SketchTextArea.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,18 @@ public class SketchTextArea extends RSyntaxTextArea {
7474

7575
private EditorListener editorListener;
7676

77-
private final PdeKeywords pdeKeywords;
77+
private PdeKeywords pdeKeywords;
7878

7979
public SketchTextArea(PdeKeywords pdeKeywords) throws IOException {
8080
this.pdeKeywords = pdeKeywords;
8181
installFeatures();
8282
}
8383

84+
public void setKeywords(PdeKeywords keywords) {
85+
pdeKeywords = keywords;
86+
setLinkGenerator(new DocLinkGenerator(pdeKeywords));
87+
}
88+
8489
private void installFeatures() throws IOException {
8590
setTheme(PreferencesData.get("editor.syntax_theme", "default"));
8691

0 commit comments

Comments
 (0)