Improved package structure
[Mograsim.git] / net.mograsim.plugin.core / src / net / mograsim / plugin / asm / editor / rules / InstructionRule.java
1 package net.mograsim.plugin.asm.editor.rules;\r
2 \r
3 import java.util.Set;\r
4 \r
5 import org.eclipse.jface.text.rules.IToken;\r
6 import org.eclipse.jface.text.rules.IWordDetector;\r
7 import org.eclipse.jface.text.rules.WordRule;\r
8 \r
9 import net.mograsim.plugin.AsmOps;\r
10 \r
11 public class InstructionRule extends WordRule\r
12 {\r
13         public InstructionRule(IToken defaultToken)\r
14         {\r
15                 this(defaultToken, false);\r
16         }\r
17 \r
18         public InstructionRule(IToken defaultToken, boolean ignoreCase)\r
19         {\r
20                 super(new InstructionDetector(), defaultToken, ignoreCase);\r
21                 AsmOps.addListener(this::update);\r
22         }\r
23 \r
24         void update(Set<String> words)\r
25         {\r
26                 fWords.clear();\r
27                 words.forEach(s -> fWords.put(s, fDefaultToken));\r
28         }\r
29 \r
30         static class InstructionDetector implements IWordDetector\r
31         {\r
32                 @Override\r
33                 public boolean isWordStart(char c)\r
34                 {\r
35                         return Character.isJavaIdentifierStart(c);\r
36                 }\r
37 \r
38                 @Override\r
39                 public boolean isWordPart(char c)\r
40                 {\r
41                         return Character.isJavaIdentifierPart(c);\r
42                 }\r
43         }\r
44 }\r