diff --git a/mode/javascript.py b/mode/javascript.py index 86535e4..c1ca3ce 100644 --- a/mode/javascript.py +++ b/mode/javascript.py @@ -1,4 +1,8 @@ -import color, mode, tab +import os.path +import time +import tab +from mode import Fundamental +from method.shell import Interact from lex import Grammar, PatternRule, RegionRule, PatternMatchRule from point import Point @@ -83,7 +87,24 @@ class JavascriptTabber2(tab.StackTabber2): return t.fqname() in ('spaces', 'eol', 'comment', 'comment.start', 'comment.data', 'comment.null', 'comment.end') -class Javascript(mode.Fundamental): +class RhinoStart(Interact): + args = [] + def _execute(self, w, **vargs): + cmd = w.application.config.get('rhino.cmd', 'rhino') + Interact._execute(self, w, bname='*Rhino*', cmd=cmd) + +class RhinoLoadFile(RhinoStart): + args = [] + def _execute(self, w, **vargs): + RhinoStart._execute(self, w, **vargs) + b = w.application.get_buffer_by_name('*Rhino*') + path = os.path.realpath(w.buffer.path) + time.sleep(0.5) + b.pipe_write('load("env.js");\n') + time.sleep(0.5) + b.pipe_write('load("%s");\n' % path) + +class Javascript(Fundamental): name = 'Javascript' extensions = ['.js'] grammar = JavascriptGrammar @@ -104,6 +125,8 @@ class Javascript(mode.Fundamental): 'js_regex.escaped': ('magenta', 'default', 'bold'), 'js_regex.end': ('cyan', 'default', 'bold'), } + config = {'rhino.cmd': 'rhino'} + actions = [RhinoStart, RhinoLoadFile] _bindings = { 'close-paren': (')',), 'close-brace': ('}',),