Improved package structure
[Mograsim.git] / net.mograsim.plugin.core / src / net / mograsim / plugin / asm / editor / rules / InstructionRule.java
diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/InstructionRule.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/InstructionRule.java
new file mode 100644 (file)
index 0000000..948c60a
--- /dev/null
@@ -0,0 +1,44 @@
+package net.mograsim.plugin.asm.editor.rules;
+
+import java.util.Set;
+
+import org.eclipse.jface.text.rules.IToken;
+import org.eclipse.jface.text.rules.IWordDetector;
+import org.eclipse.jface.text.rules.WordRule;
+
+import net.mograsim.plugin.AsmOps;
+
+public class InstructionRule extends WordRule
+{
+       public InstructionRule(IToken defaultToken)
+       {
+               this(defaultToken, false);
+       }
+
+       public InstructionRule(IToken defaultToken, boolean ignoreCase)
+       {
+               super(new InstructionDetector(), defaultToken, ignoreCase);
+               AsmOps.addListener(this::update);
+       }
+
+       void update(Set<String> words)
+       {
+               fWords.clear();
+               words.forEach(s -> fWords.put(s, fDefaultToken));
+       }
+
+       static class InstructionDetector implements IWordDetector
+       {
+               @Override
+               public boolean isWordStart(char c)
+               {
+                       return Character.isJavaIdentifierStart(c);
+               }
+
+               @Override
+               public boolean isWordPart(char c)
+               {
+                       return Character.isJavaIdentifierPart(c);
+               }
+       }
+}