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