def shutdown(self): try: if self.srv is not None: self.srv.stop() except: log.exception('Error on shutting down cherrypy server') self.srv = None
def run(self, edit, clipboard_only=False): view = self.view try: html_content = RendererManager.render_view_as_html(view) if clipboard_only: self.copy_to_clipboard(html_content) return setting = Setting.instance() html_fn = self.write_to_file(html_content, setting) # Copy contents to clipboard if setting.export_options['copy_to_clipboard']: self.copy_to_clipboard(html_content) # Open output file if necessary if setting.export_options['open_after_exporting']: log.info('Launching web browser for %s', html_fn) launching_web_browser_for_url(html_fn) except NotImplementedError: pass except: log.exception('Error while exporting')
def run(self, edit, clipboard_only=False): view = self.view try: html_content = RendererManager.render_view_as_html(view) if clipboard_only: self.copy_to_clipboard(html_content) return setting = Setting.instance() html_fn = self.write_to_file(html_content, setting) # Copy contents to clipboard if setting.export_options.get('copy_to_clipboard', False): self.copy_to_clipboard(html_content) # Open output file if necessary if setting.export_options.get('open_after_exporting', False): log.info('Launching web browser for %s', html_fn) launching_web_browser_for_url(html_fn) except NotImplementedError: pass except: sublime.error_message('Error while exporting, please check your console for more information.') log.exception('Error while exporting')
def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None): try: setting = Setting.instance() if setting.browser_command: browser_command = [os.path.expandvars(arg).format(url=url) for arg in setting.browser_command] if os.name == 'nt': # unicode arguments broken under windows encoding = locale.getpreferredencoding() browser_command = [arg.encode(encoding) for arg in browser_command] subprocess.Popen(browser_command) if success_msg_user: sublime.status_message(success_msg_user) else: # Default web browser desktop.open(url) if success_msg_default: sublime.status_message(success_msg_default) except: if setting.browser_command: log.exception('Error while launching user defined web browser') else: log.exception('Error while launching default web browser')
def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None): try: setting = Setting.instance() if setting.browser_command: browser_command = [ os.path.expandvars(arg).format(url=url) for arg in setting.browser_command ] if os.name == 'nt': # unicode arguments broken under windows encoding = locale.getpreferredencoding() browser_command = [ arg.encode(encoding) for arg in browser_command ] subprocess.Popen(browser_command) if success_msg_user: sublime.status_message(success_msg_user) else: # Default web browser desktop.open(url) if success_msg_default: sublime.status_message(success_msg_default) except: if setting.browser_command: log.exception('Error while launching user defined web browser') else: log.exception('Error while launching default web browser')
def notify(self, evt_type, *evt_args, **evt_kwargs): if evt_type not in self._subscribers: return for subscriber in self._subscribers[evt_type]: try: subscriber(*evt_args, **evt_kwargs) except: log.exception("Error on calling event subscriber for setting: %s", str(subscriber))
def _run_queued_item(self, buffer_id, item): try: # Render text and save to cache filename = os.path.basename(item.fullpath) dirname = os.path.dirname(item.fullpath) html_part = RendererManager.render_text(item.fullpath, item.lang, item.text) entry = RenderedMarkupCacheEntry(filename=filename, dirname=dirname, html_part=html_part) RenderedMarkupCache.instance().set_entry(buffer_id, entry) except NotImplementedError: pass except: log.exception("")
def render_text(cls, fullpath, lang, text, post_process_func=None): if post_process_func is None: post_process_func = cls.render_text_postprocess filename = os.path.basename(fullpath) with cls.RW_LOCK.readlock: for renderer_classname, renderer in cls.RENDERERS: try: if renderer.is_enabled(filename, lang): rendered_text = renderer.render(text, filename=filename) return post_process_func(rendered_text, fullpath) except: log.exception('Exception occured while rendering using %s', renderer_classname) raise NotImplementedError()
def on_setting_changed(cls, setting): # Unload ignored renderers if cls.OLD_IGNORED_RENDERERS != setting.ignored_renderers: # Reload renderers, of course log.info('Reloading renderers...') cls.load_renderers() with cls.RW_LOCK.readlock: for renderer_classname, renderer in cls.RENDERERS: key = 'renderer_options-' + renderer_classname try: renderer_options = setting._sublime_settings.get(key, {}) renderer.load_settings(renderer_options, setting) except: log.exception('Error on setting renderer options for %s', renderer_classname)
def run(self, edit): view = self.view try: html_content = RendererManager.render_view_to_string(view) setting = Setting.instance() target_folder = setting.export_options['target_folder'] if target_folder is not None: fullpath = self.view.file_name() or '' timestamp_format = setting.export_options['timestamp_format'] if (not os.path.exists(fullpath) and target_folder == ".") or \ not os.path.isdir(target_folder): target_folder = None elif target_folder == '.': fn_base, _ = os.path.splitext(fullpath) html_fn = '%s%s.html' % ( fn_base, time.strftime(timestamp_format, time.localtime())) elif not os.path.exists(fullpath): html_fn = os.path.join(target_folder, 'Untitled%s.html' % \ time.strftime(timestamp_format, time.localtime())) else: fn_base = os.path.basename(fullpath) html_fn = os.path.join(target_folder, '%s%s.html' % \ (fn_base, time.strftime(timestamp_format, time.localtime()))) if target_folder is None: with tempfile.NamedTemporaryFile(delete=False, suffix='.html') as f: html_fn = f.name with codecs.open(html_fn, 'w', encoding='utf-8') as html_file: html_file.write(html_content) # Copy contents to clipboard if setting.export_options['copy_to_clipboard']: sublime.set_clipboard(html_content) sublime.status_message('Exported result copied to clipboard') # Open output file if necessary if setting.export_options['open_after_exporting']: log.info('Launching web browser for %s', html_fn) launching_web_browser_for_url(html_fn) except NotImplementedError: pass except: log.exception("Error while exporting")
def _load_renderer(cls, renderers, module_file, module_name): try: __import__(module_name) mod = sys.modules[module_name] = reload(sys.modules[module_name]) # Get classes classes = inspect.getmembers(mod, inspect.isclass) for classname, classtype in classes: # Register renderer into manager if hasattr(classtype, 'IS_VALID_RENDERER__'): try: log.info('Loaded renderer: OmniMarkupLib.Renderers.%s', classname) # Add both classname and its instance renderers.append((classname, classtype())) except: log.exception('Failed to load renderer: %s', classname) except: log.exception('Failed to load renderer module: OmniMarkupLib/Renderers/%s', module_file)
def run(self, edit): view = self.view try: html_content = RendererManager.render_view_to_string(view) setting = Setting.instance() target_folder = setting.export_options['target_folder'] if target_folder is not None: fullpath = self.view.file_name() or '' timestamp_format = setting.export_options['timestamp_format'] if (not os.path.exists(fullpath) and target_folder == ".") or \ not os.path.isdir(target_folder): target_folder = None elif target_folder == '.': fn_base, _ = os.path.splitext(fullpath) html_fn = '%s%s.html' % (fn_base, time.strftime(timestamp_format, time.localtime())) elif not os.path.exists(fullpath): html_fn = os.path.join(target_folder, 'Untitled%s.html' % \ time.strftime(timestamp_format, time.localtime())) else: fn_base = os.path.basename(fullpath) html_fn = os.path.join(target_folder, '%s%s.html' % \ (fn_base, time.strftime(timestamp_format, time.localtime()))) if target_folder is None: with tempfile.NamedTemporaryFile(delete=False, suffix='.html') as f: html_fn = f.name with codecs.open(html_fn, 'w', encoding='utf-8') as html_file: html_file.write(html_content) # Copy contents to clipboard if setting.export_options['copy_to_clipboard']: sublime.set_clipboard(html_content) sublime.status_message('Exported result copied to clipboard') # Open output file if necessary if setting.export_options['open_after_exporting']: log.info('Launching web browser for %s', html_fn) launching_web_browser_for_url(html_fn) except NotImplementedError: pass except: log.exception("Error while exporting")
def _load_renderer(cls, renderers, module_file, module_name): try: __import__(module_name) mod = sys.modules[module_name] = reload(sys.modules[module_name]) # Get classes classes = inspect.getmembers(mod, inspect.isclass) for classname, classtype in classes: # Register renderer into manager if hasattr(classtype, 'IS_VALID_RENDERER__'): try: log.info('Loaded renderer: OmniMarkupLib.Renderers.%s', classname) # Add both classname and its instance renderers.append((classname, classtype())) except: log.exception('Failed to load renderer: %s', classname) except: log.exception( 'Failed to load renderer module: OmniMarkupLib/Renderers/%s', module_file)
from .OmniMarkupLib.Common import Singleton try: from .OmniMarkupLib import OnDemandDownloader except: log.exception('Error on loading OnDemandDownloader') from . import desktop else: exec('import OmniMarkupLib.LinuxModuleChecker') from OmniMarkupLib import log, Server from OmniMarkupLib.Setting import Setting from OmniMarkupLib.RendererManager import RenderedMarkupCache, RendererManager from OmniMarkupLib.Common import Singleton try: from OmniMarkupLib import OnDemandDownloader except: log.exception('Error on loading OnDemandDownloader') import desktop def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None): try: setting = Setting.instance() if setting.browser_command: browser_command = [os.path.expandvars(arg).format(url=url) for arg in setting.browser_command] if os.name == 'nt': # unicode arguments broken under windows encoding = locale.getpreferredencoding() browser_command = [arg.encode(encoding) for arg in browser_command]
except: pass import OmniMarkupLib.LinuxModuleChecker OmniMarkupLib.LinuxModuleChecker.check() from OmniMarkupLib import log from OmniMarkupLib.Setting import Setting from OmniMarkupLib.RendererManager import RendererManager from OmniMarkupLib.Server import Server from OmniMarkupLib.Common import Singleton, RenderedMarkupCache try: from OmniMarkupLib import OnDemandDownloader except: log.exception("Error on loading OnDemandDownloader") def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None): try: setting = Setting.instance() if setting.browser_command: browser_command = [ os.path.expandvars(arg).format(url=url) for arg in setting.browser_command ] if os.name == 'nt': # unicode arguments broken under windows encoding = locale.getpreferredencoding() browser_command = [arg.encode(encoding) for arg in browser_command]
from .OmniMarkupLib.Common import Singleton try: from .OmniMarkupLib import OnDemandDownloader except: log.exception('Error on loading OnDemandDownloader') from . import desktop else: exec('import OmniMarkupLib.LinuxModuleChecker') from OmniMarkupLib import log, Server from OmniMarkupLib.Setting import Setting from OmniMarkupLib.RendererManager import RenderedMarkupCache, RendererManager from OmniMarkupLib.Common import Singleton try: from OmniMarkupLib import OnDemandDownloader except: log.exception('Error on loading OnDemandDownloader') import desktop def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None): try: setting = Setting.instance() if setting.browser_command: browser_command = [ os.path.expandvars(arg).format(url=url) for arg in setting.browser_command ] if os.name == 'nt':
except: pass import OmniMarkupLib.LinuxModuleChecker OmniMarkupLib.LinuxModuleChecker.check() from OmniMarkupLib import log from OmniMarkupLib.Setting import Setting from OmniMarkupLib.RendererManager import RendererManager from OmniMarkupLib.Server import Server from OmniMarkupLib.Common import Singleton, RenderedMarkupCache try: from OmniMarkupLib import OnDemandDownloader except: log.exception("Error on loading OnDemandDownloader") def launching_web_browser_for_url(url, success_msg_default=None, success_msg_user=None): try: setting = Setting.instance() if setting.browser_command: browser_command = [ os.path.expandvars(arg).format(url=url) for arg in setting.browser_command ] if os.name == 'nt': # unicode arguments broken under windows