diff --git a/.gitignore b/.gitignore index f05fcdc..b110cc8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -*.cache \ No newline at end of file +*.cache +*.pyc \ No newline at end of file diff --git a/Default (OSX).sublime-keymap b/Default (OSX).sublime-keymap new file mode 100644 index 0000000..5574ea8 --- /dev/null +++ b/Default (OSX).sublime-keymap @@ -0,0 +1,5 @@ +[{ + "keys": ["super+shift+r"], + "command": "coffee_compile", + "args": {} +}] \ No newline at end of file diff --git a/Default.sublime-commands b/Default.sublime-commands new file mode 100644 index 0000000..da96190 --- /dev/null +++ b/Default.sublime-commands @@ -0,0 +1,6 @@ +[ +{ + "caption": "CoffeeScript: Compile", + "command": "coffee_compile" +} +] \ No newline at end of file diff --git a/coffee.py b/coffee.py new file mode 100644 index 0000000..8a460d6 --- /dev/null +++ b/coffee.py @@ -0,0 +1,30 @@ +import sublime +import sublime_plugin +import subprocess + +class CoffeeCompileCommand(sublime_plugin.TextCommand): + def run(self, edit): + process = subprocess.Popen(["coffee", "-b", "-s", "-c"], stderr = subprocess.PIPE, stdout=subprocess.PIPE, stdin=subprocess.PIPE) + (compiled, errors) = process.communicate(self.get_coffeescript()) + + if len(compiled) == 0: + output = errors + else: + output = compiled + + self.output_to_new_view(output) + + def get_coffeescript(self): + selection = self.view.sel()[0] + if selection.empty(): + selection = sublime.Region(0, self.view.size()) + return self.view.substr(selection) + + def output_to_new_view(self, output): + new_view = sublime.active_window().new_file() + new_view.set_name("(compiled CoffeeScript)") + new_view.set_syntax_file("Packages/JavaScript/JavaScript.tmLanguage") + new_view.set_scratch(True) + edit = new_view.begin_edit() + new_view.insert(edit, 0, output) + new_view.end_edit(edit)