class CoffeeCompileCommand(sublime_plugin.TextCommand):

    PANEL_NAME = 'coffeecompile_output'

    def run(self, edit):
        self.settings = loadSettings()
        self.window   = self.view.window()
        self.editor   = SublimeTextEditorView(self.view)

        coffeescript = self.editor.get_text()
        coffeescript = coffeescript.encode('utf8')

        try:
            [compiler, options] = settings_adapter(self.settings)['compiler']
            # Literate option does not depend on settings, but on the files syntax (must be a literate tmLanguage)
            options['literate'] = 'literate' in self.view.settings().get('syntax').lower()
            javascript = self._compile(coffeescript, compiler, options)
            self._write_javascript_to_panel(javascript, edit)
        except CoffeeCompilationError as e:
            self._write_compile_error_to_panel(e, edit)
        except InvalidCompilerSettingError as e:
            e = CoffeeCompilationError(path='', message=str(e), details='')
            self._write_compile_error_to_panel(e, edit)
        except Exception as e:
            e = CoffeeCompilationError(path='', message="Unexpected Exception!", details=traceback.format_exc())
            self._write_compile_error_to_panel(e, edit)

    def is_visible(self):
        settings = loadSettings()
        syntax_patterns = settings_adapter(settings)['options']['syntax_patterns']
        current_syntax  = self.view.settings().get('syntax')
        return len(syntax_patterns) == 0 or current_syntax in syntax_patterns

    def _compile(self, coffeescript, compiler, options):
        filename = self.view.file_name()

        if filename:
            self.settings.set('cwd', os.path.dirname(filename))
        elif not self.settings.get('coffee_path', None):
            raise CoffeeCompilationCompilerNotFoundError()

        return compiler.compile(coffeescript, options)

    def _create_panel(self):
        return SublimeTextOutputPanel(self.window, self.PANEL_NAME)

    def _write_javascript_to_panel(self, javascript, edit):
        panel = self._create_panel()

        syntax_file_js = self.settings.get('syntax_file_js', None)
        if not syntax_file_js:
            raise ValueError('missing syntax_file_js setting')

        panel.set_syntax_file(syntax_file_js)
        panel.display(javascript, edit)

    def _write_compile_error_to_panel(self, error, edit):
        panel = self._create_panel()
        panel.set_syntax_file('Packages/Markdown/Markdown.tmLanguage')
        panel.display(str(error), edit)
Example #2
0
class CoffeeCompileCommand(sublime_plugin.TextCommand):

    PANEL_NAME = 'coffeecompile_output'

    def run(self, edit):
        self.settings = loadSettings()
        self.window = self.view.window()
        self.editor = SublimeTextEditorView(self.view)

        coffeescript = self.editor.get_text()
        coffeescript = coffeescript.encode('utf8')

        try:
            [compiler, options] = settings_adapter(self.settings)['compiler']
            javascript = self._compile(coffeescript, compiler, options)
            self._write_javascript_to_panel(javascript, edit)
        except CoffeeCompilationError as e:
            self._write_compile_error_to_panel(e, edit)
        except InvalidCompilerSettingError as e:
            e = CoffeeCompilationError(path='', message=str(e), details='')
            self._write_compile_error_to_panel(e, edit)
        except Exception as e:
            e = CoffeeCompilationError(path='',
                                       message="Unexpected Exception!",
                                       details=traceback.format_exc())
            self._write_compile_error_to_panel(e, edit)

    def is_visible(self):
        settings = loadSettings()
        syntax_patterns = settings_adapter(
            settings)['options']['syntax_patterns']
        current_syntax = self.view.settings().get('syntax')
        return len(syntax_patterns) == 0 or current_syntax in syntax_patterns

    def _compile(self, coffeescript, compiler, options):
        filename = self.view.file_name()

        if filename:
            self.settings.set('cwd', os.path.dirname(filename))
        elif not self.settings.get('coffee_path', None):
            raise CoffeeCompilationCompilerNotFoundError()

        return compiler.compile(coffeescript, options)

    def _create_panel(self):
        return SublimeTextOutputPanel(self.window, self.PANEL_NAME)

    def _write_javascript_to_panel(self, javascript, edit):
        panel = self._create_panel()
        panel.set_syntax_file('Packages/JavaScript/JavaScript.tmLanguage')
        panel.display(javascript, edit)

    def _write_compile_error_to_panel(self, error, edit):
        panel = self._create_panel()
        panel.set_syntax_file('Packages/Markdown/Markdown.tmLanguage')
        panel.display(str(error), edit)
Example #3
0
    def run(self, edit):
        self.settings = loadSettings()
        self.window = self.view.window()
        self.editor = SublimeTextEditorView(self.view)

        coffeescript = self.editor.get_text()
        coffeescript = coffeescript.encode('utf8')

        try:
            [compiler, options] = settings_adapter(self.settings)['compiler']
            javascript = self._compile(coffeescript, compiler, options)
            self._write_javascript_to_panel(javascript, edit)
        except CoffeeCompilationError as e:
            self._write_compile_error_to_panel(e, edit)
        except InvalidCompilerSettingError as e:
            e = CoffeeCompilationError(path='', message=str(e), details='')
            self._write_compile_error_to_panel(e, edit)
        except Exception as e:
            e = CoffeeCompilationError(path='',
                                       message="Unexpected Exception!",
                                       details=traceback.format_exc())
            self._write_compile_error_to_panel(e, edit)
class CoffeeCompileCommand(sublime_plugin.TextCommand):

    PANEL_NAME = 'coffeecompile_output'

    def run(self, edit):
        self.settings = sublime.load_settings("CoffeeCompile.sublime-settings")
        self.window   = self.view.window()
        self.editor   = SublimeTextEditorView(self.view)

        coffeescript = self.editor.get_text()
        coffeescript = coffeescript.encode('utf8')

        try:
            javascript = self._compile(coffeescript)
            self._write_javascript_to_panel(javascript, edit)
        except CoffeeCompilationError as e:
            self._write_compile_error_to_panel(e, edit)
        except InvalidCompilerSettingError as e:
            e = CoffeeCompilationError(path='', message=str(e), details='')
            self._write_compile_error_to_panel(e, edit)
        except Exception as e:
            e = CoffeeCompilationError(path='', message="Unexpected Exception!", details=traceback.format_exc())
            self._write_compile_error_to_panel(e, edit)

    def _compile(self, coffeescript):
        filename = self.view.file_name()

        if filename:
            self.settings.set('cwd', os.path.dirname(filename))
        elif not self.settings.get('coffee_path', None):
            raise CoffeeCompilationCompilerNotFoundError()

        (compiler, options) = settings_adapter(self.settings)
        return compiler.compile(coffeescript, options)

    def _create_panel(self):
        return SublimeTextOutputPanel(self.window, self.PANEL_NAME)

    def _write_javascript_to_panel(self, javascript, edit):
        panel = self._create_panel()
        panel.set_syntax_file('Packages/JavaScript/JavaScript.tmLanguage')
        panel.display(javascript, edit)

    def _write_compile_error_to_panel(self, error, edit):
        panel = self._create_panel()
        panel.set_syntax_file('Packages/Markdown/Markdown.tmLanguage')
        panel.display(str(error), edit)
    
    def is_visible(self):
        return self.view.settings().get('syntax').endswith("CoffeeScript.tmLanguage")
    def run(self, edit):
        self.settings = sublime.load_settings("CoffeeCompile.sublime-settings")
        self.window   = self.view.window()
        self.editor   = SublimeTextEditorView(self.view)

        coffeescript = self.editor.get_text()
        coffeescript = coffeescript.encode('utf8')

        try:
            javascript = self._compile(coffeescript)
            self._write_javascript_to_panel(javascript, edit)
        except CoffeeCompilationError as e:
            self._write_compile_error_to_panel(e, edit)
        except InvalidCompilerSettingError as e:
            e = CoffeeCompilationError(path='', message=str(e), details='')
            self._write_compile_error_to_panel(e, edit)
        except Exception as e:
            e = CoffeeCompilationError(path='', message="Unexpected Exception!", details=traceback.format_exc())
            self._write_compile_error_to_panel(e, edit)
    def run(self, edit):
        self.settings = loadSettings()
        self.window   = self.view.window()
        self.editor   = SublimeTextEditorView(self.view)

        coffeescript = self.editor.get_text()
        coffeescript = coffeescript.encode('utf8')

        try:
            [compiler, options] = settings_adapter(self.settings)['compiler']
            # Literate option does not depend on settings, but on the files syntax (must be a literate tmLanguage)
            options['literate'] = 'literate' in self.view.settings().get('syntax').lower()
            javascript = self._compile(coffeescript, compiler, options)
            self._write_javascript_to_panel(javascript, edit)
        except CoffeeCompilationError as e:
            self._write_compile_error_to_panel(e, edit)
        except InvalidCompilerSettingError as e:
            e = CoffeeCompilationError(path='', message=str(e), details='')
            self._write_compile_error_to_panel(e, edit)
        except Exception as e:
            e = CoffeeCompilationError(path='', message="Unexpected Exception!", details=traceback.format_exc())
            self._write_compile_error_to_panel(e, edit)