projects
/
Mograsim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
93daaf9
)
Fixed Asm Editor
author
Christian Femers
<femers@in.tum.de>
Thu, 18 Jul 2019 19:08:05 +0000
(21:08 +0200)
committer
Christian Femers
<femers@in.tum.de>
Thu, 18 Jul 2019 19:08:05 +0000
(21:08 +0200)
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmOpsEdit.java
patch
|
blob
|
history
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmContentAssistProcessor.java
patch
|
blob
|
history
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmPresentationReconciler.java
patch
|
blob
|
history
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmReconciler.java
patch
|
blob
|
history
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/rules/InstructionRule.java
patch
|
blob
|
history
diff --git
a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmOpsEdit.java
b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmOpsEdit.java
index
59b38ba
..
cc0d0ff
100644
(file)
--- a/
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmOpsEdit.java
+++ b/
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/AsmOpsEdit.java
@@
-117,6
+117,7
@@
public class AsmOpsEdit extends ViewPart
viewer.add(in.trim());
txtInput.setText("");
part.setDirty(true);
viewer.add(in.trim());
txtInput.setText("");
part.setDirty(true);
+ save();
}
}
});
}
}
});
diff --git
a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmContentAssistProcessor.java
b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmContentAssistProcessor.java
index
f81f7c0
..
c2b8f3f
100644
(file)
--- a/
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmContentAssistProcessor.java
+++ b/
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmContentAssistProcessor.java
@@
-13,6
+13,8
@@
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
+import net.mograsim.plugin.AsmOps;
+
public class AsmContentAssistProcessor implements IContentAssistProcessor
{
public class AsmContentAssistProcessor implements IContentAssistProcessor
{
@@
-43,8
+45,7
@@
public class AsmContentAssistProcessor implements IContentAssistProcessor
// }
// return new ICompletionProposal[0];
// text.
// }
// return new ICompletionProposal[0];
// text.
- return new ICompletionProposal[] { new AsmOperationProposal("ADD", "Addition operation", offset),
- new AsmOperationProposal("MUL", "Multiplication operation", offset) };
+ return AsmOps.ops.stream().map(o -> new AsmOperationProposal(o, "", offset)).toArray(ICompletionProposal[]::new);
}
@Override
}
@Override
@@
-56,7
+57,7
@@
public class AsmContentAssistProcessor implements IContentAssistProcessor
@Override
public char[] getCompletionProposalAutoActivationCharacters()
{
@Override
public char[] getCompletionProposalAutoActivationCharacters()
{
- return new char[] { '\
t
' }; // NON-NLS-1
+ return new char[] { '\
n', '\r
' }; // NON-NLS-1
}
@Override
}
@Override
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
8d42ef5
..
655160e
100644
(file)
--- 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
@@
-21,7
+21,7
@@
public class AsmPresentationReconciler extends PresentationReconciler
{
private final Token comment = new Token(null);
{
private final Token comment = new Token(null);
-
private final Token std = new Token(null);
+
//
private final Token std = new Token(null);
private final Token op = new Token(null);
private final Token label = new Token(null);
private final Token number = new Token(null);
private final Token op = new Token(null);
private final Token label = new Token(null);
private final Token number = new Token(null);
@@
-34,7
+34,7
@@
public class AsmPresentationReconciler extends PresentationReconciler
rules = new IRule[4];
rules[0] = new EndOfLineRule(";", comment);
rules[1] = new AsmLabelRule(label);
rules = new IRule[4];
rules[0] = new EndOfLineRule(";", comment);
rules[1] = new AsmLabelRule(label);
- rules[2] = new InstructionRule(op, true);
+ rules[2] = new InstructionRule(
Token.UNDEFINED,
op, true);
rules[3] = new AsmNumberRule(number);
scanner.setRules(rules);
rules[3] = new AsmNumberRule(number);
scanner.setRules(rules);
diff --git
a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmReconciler.java
b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmReconciler.java
index
876878f
..
efee8a3
100644
(file)
--- a/
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmReconciler.java
+++ b/
net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmReconciler.java
@@
-1,10
+1,14
@@
package net.mograsim.plugin.asm.editor;
package net.mograsim.plugin.asm.editor;
+import java.lang.ref.WeakReference;
+
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.reconciler.Reconciler;
import org.eclipse.jface.text.source.projection.ProjectionViewer;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.reconciler.Reconciler;
import org.eclipse.jface.text.source.projection.ProjectionViewer;
+import net.mograsim.plugin.AsmOps;
+
public class AsmReconciler extends Reconciler
{
public class AsmReconciler extends Reconciler
{
@@
-22,5
+26,12
@@
public class AsmReconciler extends Reconciler
super.install(textViewer);
ProjectionViewer pViewer = (ProjectionViewer) textViewer;
fStrategy.setProjectionViewer(pViewer);
super.install(textViewer);
ProjectionViewer pViewer = (ProjectionViewer) textViewer;
fStrategy.setProjectionViewer(pViewer);
+ WeakReference<ITextViewer> tv = new WeakReference<>(textViewer);
+ AsmOps.addListener(ops ->
+ {
+ System.out.println("refresh");
+ if (tv.get() != null)
+ tv.get().invalidateTextPresentation();
+ });
}
}
\ No newline at end of file
}
}
\ No newline at end of file
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
index
730305d
..
cbff408
100644
(file)
--- 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
@@
-1,5
+1,6
@@
package net.mograsim.plugin.asm.editor.rules;
\r
\r
package net.mograsim.plugin.asm.editor.rules;
\r
\r
+import java.util.Objects;
\r
import java.util.Set;
\r
\r
import org.eclipse.jface.text.rules.IToken;
\r
import java.util.Set;
\r
\r
import org.eclipse.jface.text.rules.IToken;
\r
@@
-10,21
+11,24
@@
import net.mograsim.plugin.AsmOps;
\r
public class InstructionRule extends WordRule
\r
{
\r
\r
public class InstructionRule extends WordRule
\r
{
\r
- public InstructionRule(IToken defaultToken)
\r
+ private final IToken instToken;
\r
+
\r
+ public InstructionRule(IToken defaultToken, IToken instToken)
\r
{
\r
{
\r
- this(defaultToken, false);
\r
+ this(defaultToken,
instToken,
false);
\r
}
\r
\r
}
\r
\r
- public InstructionRule(IToken defaultToken, boolean ignoreCase)
\r
+ public InstructionRule(IToken defaultToken,
IToken instToken,
boolean ignoreCase)
\r
{
\r
{
\r
- super(new InstructionDetector(), defaultToken, ignoreCase);
\r
+ super(new InstructionDetector(), Objects.requireNonNull(defaultToken), ignoreCase);
\r
+ this.instToken = Objects.requireNonNull(instToken);
\r
AsmOps.addListener(this::update);
\r
}
\r
\r
void update(Set<String> words)
\r
{
\r
fWords.clear();
\r
AsmOps.addListener(this::update);
\r
}
\r
\r
void update(Set<String> words)
\r
{
\r
fWords.clear();
\r
- words.forEach(s -> fWords.put(s,
fDefaul
tToken));
\r
+ words.forEach(s -> fWords.put(s,
ins
tToken));
\r
}
\r
\r
static class InstructionDetector implements IWordDetector
\r
}
\r
\r
static class InstructionDetector implements IWordDetector
\r