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)
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)
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)