X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=net.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Fasm%2Feditor%2Frules%2FInstructionRule.java;fp=net.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Fasm%2Feditor%2Frules%2FInstructionRule.java;h=948c60ac782492f478a1dfd92379fa2c202b7244;hb=443acaf4a6470adf66a73cf0443852ce3843ebe2;hp=0000000000000000000000000000000000000000;hpb=838c017db855038424e4948e1d33898c8dda023f;p=Mograsim.git 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 index 00000000..948c60ac --- /dev/null +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/InstructionRule.java @@ -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 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); + } + } +}