From 443acaf4a6470adf66a73cf0443852ce3843ebe2 Mon Sep 17 00:00:00 2001 From: Christian Femers Date: Sat, 29 Jun 2019 03:29:46 +0200 Subject: [PATCH] Improved package structure --- .../asm/editor/AsmPresentationReconciler.java | 36 ++------------- .../asm/editor/{ => rules}/AsmLabelRule.java | 2 +- .../asm/editor/{ => rules}/AsmNumberRule.java | 2 +- .../asm/editor/rules/InstructionRule.java | 44 +++++++++++++++++++ 4 files changed, 50 insertions(+), 34 deletions(-) rename net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/{ => rules}/AsmLabelRule.java (95%) rename net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/{ => rules}/AsmNumberRule.java (96%) create mode 100644 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/AsmPresentationReconciler.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmPresentationReconciler.java index 84378766..8d42ef59 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmPresentationReconciler.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmPresentationReconciler.java @@ -1,7 +1,5 @@ package net.mograsim.plugin.asm.editor; -import java.util.Set; - import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.jface.resource.FontRegistry; import org.eclipse.jface.text.IDocument; @@ -10,14 +8,14 @@ import org.eclipse.jface.text.presentation.PresentationReconciler; import org.eclipse.jface.text.rules.DefaultDamagerRepairer; import org.eclipse.jface.text.rules.EndOfLineRule; import org.eclipse.jface.text.rules.IRule; -import org.eclipse.jface.text.rules.IWordDetector; import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.rules.Token; -import org.eclipse.jface.text.rules.WordRule; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.themes.ITheme; -import net.mograsim.plugin.AsmOps; +import net.mograsim.plugin.asm.editor.rules.AsmLabelRule; +import net.mograsim.plugin.asm.editor.rules.AsmNumberRule; +import net.mograsim.plugin.asm.editor.rules.InstructionRule; public class AsmPresentationReconciler extends PresentationReconciler { @@ -36,33 +34,7 @@ public class AsmPresentationReconciler extends PresentationReconciler rules = new IRule[4]; rules[0] = new EndOfLineRule(";", comment); rules[1] = new AsmLabelRule(label); - WordRule ops = new WordRule(new IWordDetector() - { - - @Override - public boolean isWordStart(char c) - { - return Character.isJavaIdentifierStart(c); - } - - @Override - public boolean isWordPart(char c) - { - return Character.isJavaIdentifierPart(c); - } - }, std, true) - { - { - AsmOps.addListener(this::update); - } - - void update(Set words) - { - fWords.clear(); - words.forEach(s -> fWords.put(s, op)); - } - }; - rules[2] = ops; + rules[2] = new InstructionRule(op, true); rules[3] = new AsmNumberRule(number); scanner.setRules(rules); diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmLabelRule.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/AsmLabelRule.java similarity index 95% rename from net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmLabelRule.java rename to net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/AsmLabelRule.java index 314b3b44..b55e0b3c 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmLabelRule.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/AsmLabelRule.java @@ -1,4 +1,4 @@ -package net.mograsim.plugin.asm.editor; +package net.mograsim.plugin.asm.editor.rules; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.text.rules.ICharacterScanner; diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmNumberRule.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/AsmNumberRule.java similarity index 96% rename from net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmNumberRule.java rename to net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/AsmNumberRule.java index 5a6850de..728030dc 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmNumberRule.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/AsmNumberRule.java @@ -1,4 +1,4 @@ -package net.mograsim.plugin.asm.editor; +package net.mograsim.plugin.asm.editor.rules; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.text.rules.ICharacterScanner; 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); + } + } +} -- 2.17.1