Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VS Code and JavaScript CCR fixes #195

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions caster/apps/vscode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
from dragonfly import (Grammar, AppContext, Dictation, Key, Text, Repeat, Function)

from caster.lib import control
from caster.lib import settings
from caster.lib.dfplus.additions import IntegerRefST
from caster.lib.dfplus.merge import gfilter
from caster.lib.dfplus.merge.mergerule import MergeRule
from caster.lib.dfplus.state.short import R

def findNthToken(text, n, direction):
Key("c-f").execute()
Text("%(text)s").execute({"text": text})
if direction == "reverse":
print("yeah? %(n)d")
Key("s-enter:%(n)d").execute()
else:
Key("enter:%(n)d").execute()
print("no? %(n)d")
Key('escape').execute()

class VisualStudioCodeRule(MergeRule):
pronunciation = "visual studio code"

mapping = {
### ported from my dragonfly scripts
# File management
"[open] command palette": R(Key("cs-p"), rdescript="Visual Studio Code: Command Palette"),
"(Open [file] | Go to [tab]) [<text>]": R(Key("c-p") + Text("%(text)s"), rdescript="Visual Studio Code: Go To File"),
"Close tab": R(Key("c-w"), rdescript="Visual Studio Code: Close Tab"),
"Save file": R(Key("c-s"), rdescript="Visual Studio Code: Save File"),
"Save and close": R(Key("c-s/10, c-w"), rdescript="Visual Studio Code: Save And Close File"),

# Search
"(search | find in) [all] (files | codebase)": R(Key("cs-f"), rdescript="Visual Studio Code: Find in Codebase"),
"(search | find) [file]": R(Key("c-f"), rdescript="Visual Studio Code: Find in File"),
"(Find | Jump [to]) next <text>": R(Function(findNthToken, n=1, direction="forward"), rdescript="Visual Studio Code: Find Next"),
"(Find | Jump [to]) previous <text>": R(Function(findNthToken, n=1, direction="reverse"), rdescript="Visual Studio Code: Find Previous"),

# Tab management
"nexta [<n>]": R(Key("c-pgdown"), rdescript="Visual Studio Code: Next Tab") * Repeat(extra="n"), # These would be next and previous tab but i have a conflict with chrome
"prexta [<n>]": R(Key("c-pgup"), rdescript="Visual Studio Code: Previous Tab") * Repeat(extra="n"),
"Close tab": R(Key("c-f4"), rdescript="Visual Studio Code: Close Tab"),
"Exit preview": R(Key("space, c-z"), rdescript="Visual Studio Code: Exit Preview"),

# moving around a file
"(go to | jump | jump to) line <n>": R(Key("c-g") + Text("%(n)d") + Key("enter"), rdescript="Visual Studio Code: Go to Line"),
"Go to definition": R(Key("f12"), rdescript="Visual Studio Code: Go to Definition"),
"Go to required definition": R(Key("c-f12:2, c-right:5, left/50, f12"), rdescript="Visual Studio Code: Go to Required Definition"),
"Go to (top | first line)": R(Key("c-home"), rdescript="Visual Studio Code: Go to Top"),
"Go to ( bottom | last line)": R(Key("c-end"), rdescript="Visual Studio Code: Go to Bottom"),
"ee-ol": R(Key("end"), rdescript="Visual Studio Code: End Of Line"),
"beol": R(Key("home"), rdescript="Visual Studio Code: Beginning of Line"),
"Go back [<n>]": R(Key("a-left"), rdescript="Visual Studio Code: Go Back") * Repeat(extra="n"),
"Go forward [<n>]": R(Key("a-right"), rdescript="Visual Studio Code: Go Forward") * Repeat(extra="n"),

# Formatting
"indent [<n>]": R(Key("tab"), rdescript="Visual Studio Code: Indent") * Repeat(extra="n"),
"Unindent [<n>]": R(Key("s-tab"), rdescript="Visual Studio Code: Unindent") * Repeat(extra="n"),
"Comment": R(Key("c-slash"), rdescript="Visual Studio Code: Line Comment"),
"Block comment": R(Key("sa-a"), rdescript="Visual Studio Code: Block Comment"),

# Window Management
"[toggle] full screen": R(Key("f11"), rdescript="Visual Studio Code:Fullscreen"),
"[toggle] Zen mode": R(Key("c-k/3, z")),


# Debugging
"[toggle] breakpoint": R(Key("f9"), rdescript="Visual Studio Code:Breakpoint"),
"step over [<n>]": R(Key("f10/50") * Repeat(extra="n"), rdescript="Visual Studio Code:Step Over"),
"step into": R(Key("f11"), rdescript="Visual Studio Code:Step Into"),
"step out [of]": R(Key("s-f11"), rdescript="Visual Studio Code:Step Out"),
"resume": R(Key("f5"), rdescript="Visual Studio Code:Resume"),
}
extras = [
Dictation("text"),
Dictation("mim"),
IntegerRefST("n", 1, 1000),

]
defaults = {
"n": 1,
"mim":"",
"text": ""
}

#---------------------------------------------------------------------------

context = AppContext(executable="code")
grammar = Grammar("Visual Studio Code", context=context)
if settings.SETTINGS["apps"]["visualstudiocode"]:
if settings.SETTINGS["miscellaneous"]["rdp_mode"]:
control.nexus().merger.add_global_rule(VisualStudioCodeRule())
else:
rule = VisualStudioCodeRule(name="visualstudiocode")
gfilter.run_on(rule)
grammar.add_rule(rule)
grammar.load()
13 changes: 5 additions & 8 deletions caster/lib/ccr/javascript/javascript.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,9 @@ class Javascript(MergeRule):


# JavaScript specific
"anon funk": R(Text("function () {}") + Key("left:1, enter")
+ SelectiveAction(Key("enter, up"), ["AptanaStudio3.exe"]),
rdescript="Javascript: Anonymous Function"),
"anon funk": R(Text("() => {}") + Key("left:1, enter"), rdescript="Javascript: Anonymous Function"),
"timer": R(Text("setInterval()") + Key("left"), rdescript="Javascript: Timer"),
"timeout": R(Text("setTimeout()") + Key("left"), rdescript="Javascript: Timeout"),
"sue iffae": R(Text("if()") + Key("left"), rdescript="Javascript: Short If"),
"document": R(Text("document"), rdescript="Javascript: Document"),
"index of": R(Text("indexOf()") + Key("left"), rdescript="Javascript: Index Of"),
"has own property": R(Text("hasOwnProperty()") + Key("left"), rdescript="Javascript: Has Own Property"),
Expand All @@ -83,10 +80,10 @@ class Javascript(MergeRule):
"throw": R(Text("throw "), rdescript="Javascript: Throw"),
"instance of": R(Text("instanceof "), rdescript="Javascript: Instance Of"),

"(far | variable)": R(Text("var "), rdescript="Javascript: Variable"),
"sue iffae": R(Text("if ()") + Key("left"), rdescript="Javascript: Short If"),
"sue shells": R(Text("else") + Key("enter"), rdescript="Javascript: Short Else"),
"var": R(Text("var "), rdescript="Javascript: Var"),
"const": R(Text("const"), rdescript=" JavaScript: Const"),
"Let": R(Text("let"), rdescript=" JavaScript: Let"),

"shell iffae": R(Text("else if ()") + Key("left"), rdescript="Javascript: Else If"),

}
Expand Down