-
Notifications
You must be signed in to change notification settings - Fork 2
/
SymbolPicker.py
63 lines (53 loc) · 2.16 KB
/
SymbolPicker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from protocol import RuleType, RuleRef, makeHashedRule
from EventLoop import pushEvent
from EventList import RuleRegisterEvent
import rules.BaseRules as BaseRules
from rules.emacs.Cmd import CharCmd, Cmd
from rules.ContextualRule import makeContextualRule
from requirements.Emacs import IsEmacs
from requirements.VarRequirement import VarRequirement
from rules.emacs.common import emacsExtras, emacsDefaults
_mapping = {
"red" : "red",
"green" : "green",
"white" : "white",
"purple" : "purple",
"yellow" : "yellow",
"orange" : "orange",
}
ColorRule = makeHashedRule("ColorRule", _mapping, ruleType=RuleType.INDEPENDENT)
pushEvent(RuleRegisterEvent(ColorRule))
_mapping = {
"circle" : 0x030a,
"corner" : 0x031a,
"hair" : 0x030f,
}
AccentRule = makeHashedRule("AccentRule", _mapping, ruleType=RuleType.INDEPENDENT)
pushEvent(RuleRegisterEvent(AccentRule))
class PickSymbol(Cmd):
classLog = True
def __init__(self, data, leadingWords=1):
self.leadingWords = leadingWords
Cmd.__init__(self, data)
def _lisp(self, extras={}):
color = extras['colorrule']["words"][0]
letter = BaseRules.lookup(extras)
mark = AccentRule.rule.mapping[extras['accentrule']["words"][0]] if 'accentrule' in extras else None
mark = ("#x%x" % mark) if mark else "nil"
return '(%s "%s" %s "%s")' % (self.data, letter, mark, color)
_mapping = {
"<colorrule> <alpharule> [<accentrule>]" : PickSymbol("md-hl-insert-symbol", 0),
"jump <colorrule> <alpharule> [<accentrule>]" : PickSymbol("md-hl-jump-symbol"),
}
_extras = emacsExtras + [
RuleRef(AccentRule, "accentrule"),
RuleRef(ColorRule, "colorrule"),
]
SymbolPickerRule = makeContextualRule("SymbolPicker", _mapping, _extras, emacsDefaults)
SymbolPickerRule.context.addRequirement(IsEmacs)
SymbolPickerRule.context.addRequirement(VarRequirement("md-symbol-picker-mode", "t"))
_mapping = {
"toggle picker" : Cmd("(md-toggle-symbol-picker-mode)"),
}
SymbolPickerToggleRule = makeContextualRule("SymbolPickerToggle", _mapping, _extras, emacsDefaults)
SymbolPickerToggleRule.context.addRequirement(IsEmacs)