]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/winterwell.markdown/src/winterwell/markdown/editors/MDScanner.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / winterwell.markdown / src / winterwell / markdown / editors / MDScanner.java
1 /**
2  * Copyright winterwell Mathematics Ltd.
3  * @author Daniel Winterstein
4  * 13 Jan 2007
5  */
6 package winterwell.markdown.editors;
7
8 import org.eclipse.jface.preference.IPreferenceStore;
9 import org.eclipse.jface.preference.PreferenceConverter;
10 import org.eclipse.jface.text.TextAttribute;
11 import org.eclipse.jface.text.rules.IRule;
12 import org.eclipse.jface.text.rules.IWhitespaceDetector;
13 import org.eclipse.jface.text.rules.MultiLineRule;
14 import org.eclipse.jface.text.rules.RuleBasedScanner;
15 import org.eclipse.jface.text.rules.Token;
16 import org.eclipse.jface.text.rules.WhitespaceRule;
17 import org.eclipse.swt.SWT;
18
19 import winterwell.markdown.Activator;
20 import winterwell.markdown.preferences.MarkdownPreferencePage;
21
22 /**
23  * 
24  *
25  * @author Daniel Winterstein
26  */
27 public class MDScanner extends RuleBasedScanner {
28         ColorManager cm;
29     public MDScanner(ColorManager cm) {
30         this.cm = cm;
31         IPreferenceStore pStore = Activator.getDefault().getPreferenceStore();
32         Token heading = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD));
33         Token comment = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_COMMENT))));
34         Token emphasis = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_DEFUALT)), null, SWT.ITALIC));
35         Token list = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_HEADER)), null, SWT.BOLD));
36         Token link = new Token(new TextAttribute(cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_LINK)), null, TextAttribute.UNDERLINE));
37         Token code = new Token(new TextAttribute(
38                         cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE)),
39                         cm.getColor(PreferenceConverter.getColor(pStore, MarkdownPreferencePage.PREF_CODE_BG)),
40                         SWT.NORMAL));
41         setRules(new IRule[] {
42            new LinkRule(link),
43            new HeaderRule(heading),
44            new HeaderWithUnderlineRule(heading),
45            new ListRule(list),
46            new EmphasisRule("_", emphasis),
47            new EmphasisRule("***", emphasis),
48            new EmphasisRule("**", emphasis),
49            new EmphasisRule("*", emphasis),
50            new EmphasisRule("``", code),
51            new EmphasisRule("`", code),
52            new MultiLineRule("<!--", "-->", comment),
53            // WhitespaceRule messes up with the rest of rules
54 //           new WhitespaceRule(new IWhitespaceDetector() {
55 //              public boolean isWhitespace(char c) {
56 //                 return Character.isWhitespace(c);
57 //              }
58 //           }),
59         });
60      }
61 }