1 package net.mograsim.plugin.asm.editor.rules;
\r
3 import java.util.Objects;
\r
4 import java.util.Set;
\r
6 import org.eclipse.jface.text.rules.IToken;
\r
7 import org.eclipse.jface.text.rules.IWordDetector;
\r
8 import org.eclipse.jface.text.rules.WordRule;
\r
10 import net.mograsim.plugin.AsmOps;
\r
12 public class InstructionRule extends WordRule
\r
14 private final IToken instToken;
\r
16 public InstructionRule(IToken defaultToken, IToken instToken)
\r
18 this(defaultToken, instToken, false);
\r
21 public InstructionRule(IToken defaultToken, IToken instToken, boolean ignoreCase)
\r
23 super(new InstructionDetector(), Objects.requireNonNull(defaultToken), ignoreCase);
\r
24 this.instToken = Objects.requireNonNull(instToken);
\r
25 AsmOps.addListener(this::update);
\r
28 void update(Set<String> words)
\r
31 words.forEach(s -> fWords.put(s, instToken));
\r
34 static class InstructionDetector implements IWordDetector
\r
37 public boolean isWordStart(char c)
\r
39 return Character.isJavaIdentifierStart(c);
\r
43 public boolean isWordPart(char c)
\r
45 return Character.isJavaIdentifierPart(c);
\r