from dragonfly import (Grammar, Dictation, Repeat) from castervoice.lib import control from castervoice.lib import settings from castervoice.lib.dfplus.additions import IntegerRefST from castervoice.lib.dfplus.merge import gfilter from castervoice.lib.dfplus.merge.mergerule import MergeRule from castervoice.lib.dfplus.state.short import R from castervoice.lib.context import AppContext from castervoice.lib.actions import (Key, Text) class VisualStudioRule(MergeRule): pronunciation = "visual studio" mapping = { "next tab []": R(Key("ca-pgdown"), rdescript="Visual Studio: Next Tab")*Repeat(extra="n"), "prior tab []": R(Key("ca-pgup"), rdescript="Visual Studio: Previous Tab")*Repeat(extra="n"), "close tab []": R(Key("c-f4/20"), rdescript="Visual Studio: Close Tab")*Repeat(extra="n"), "(list | show) documents": R(Key("a-w, w"), rdescript="Visual Studio: List Documents"), "[focus] document (window | pane)": R(Key("a-w, w, enter"), rdescript="Visual Studio: Focus Document Pane"), "solution explorer": R(Key("ca-l"), rdescript="Visual Studio: Solution Explorer"), "team explorer": R(Key("c-backslash, c-m"), rdescript="Visual Studio: Team Explorer"), "source control explorer": R(Key("c-q") + Text("Source Control Explorer") + Key("enter"), rdescript="Visual Studio: Source Control Explorer"), "quick launch": R(Key("c-q"), rdescript="Visual Studio: Quick Launch"), "go to line": R(Key("c-g"), rdescript="Visual Studio: Go To Line"), "comment": R(Key("c-/")), "comment line": R(Key("c-k, c-c"), rdescript="Visual Studio: Comment Selection"), "comment block": R(Key("c-k, c-c"), rdescript="Visual Studio: Comment Block"), "(un | on) comment line": R(Key("c-k/50, c-u"), rdescript="Visual Studio: Uncomment Selection"), "(un | on) comment block": R(Key("c-k/50, c-u"), rdescript="Visual Studio: Uncomment Block"), "[toggle] full screen": R(Key("sa-enter"), rdescript="Visual Studio: Fullscreen"), "(set | toggle) bookmark": R(Key("c-k, c-k"), rdescript="Visual Studio: Toggle Bookmark"), "next bookmark": R(Key("c-k, c-n"), rdescript="Visual Studio: Next Bookmark"), "prior bookmark": R(Key("c-k, c-p"), rdescript="Visual Studio: Previous Bookmark"), "collapse to definitions": R(Key("c-m, c-o"), rdescript="Visual Studio: Collapse To Definitions"), "toggle [section] outlining": R(Key("c-m, c-m"), rdescript="Visual Studio: Toggle Section Outlining"), "toggle all outlining": R(Key("c-m, c-l"), rdescript="Visual Studio: Toggle All Outlining"), "[toggle] breakpoint": R(Key("f9"), rdescript="Visual Studio: Breakpoint"), "step over []": R(Key("f10/50")*Repeat(extra="n"), rdescript="Visual Studio: Step Over"), "step into": R(Key("f11"), rdescript="Visual Studio: Step Into"), "step out [of]": R(Key("s-f11"), rdescript="Visual Studio: Step Out"), "resume": R(Key("f5"), rdescript="Visual Studio: Resume"), "run tests": R(Key("c-r, t"), rdescript="Visual Studio: Run test(s)"), "run all tests": R(Key("c-r, a"), rdescript="Visual Studio: Run all tests"), "build solution": R(Key("cs-b"), rdescript="Visual Studio: Build solution"), "get latest [version]": R(Key("a-f, r, l"), rdescript="Visual Studio: Get Latest"), "(show | view) history": R(Key("a-f, r, h"), rdescript="Visual Studio: Show History"), "compare (files | versions)": R(Key("a-f, r, h"), rdescript="Visual Studio: Compare..."), "undo (checkout | pending changes)": R(Key("a-f, r, u"), rdescript="Visual Studio: Undo Pending Changes"), "[open] [go to] work item": R(Key("a-m, g"), rdescript="Visual Studio: Open Work Item"), "[add] [new] linked work item": R(Key("sa-l"), rdescript="Visual Studio: New Linked Work Item"), } extras = [ Dictation("text"), Dictation("mim"), IntegerRefST("n", 1, 1000), ] defaults = {"n": 1, "mim": ""} #--------------------------------------------------------------------------- context = AppContext(executable="devenv") grammar = Grammar("Visual Studio", context=context) if settings.SETTINGS["apps"]["visualstudio"]: if settings.SETTINGS["miscellaneous"]["rdp_mode"]: control.nexus().merger.add_global_rule(VisualStudioRule()) else: rule = VisualStudioRule(name="visualstudio") gfilter.run_on(rule) grammar.add_rule(rule) grammar.load()