网网腾科技feat: initial commit
d5a81beb创建于 2 天前历史提交
"""Command to manually refresh Markdown preview."""

import sublime_plugin
from ..preview.manager import PreviewManager


class SmpRefreshPreviewCommand(sublime_plugin.TextCommand):
    """Forces an immediate re-render of the Markdown preview."""

    def run(self, edit):
        manager = PreviewManager.get_instance()
        manager.render_view(self.view, force=True)

    def is_enabled(self):
        manager = PreviewManager.get_instance()
        return manager.has_session(self.view.id())


class SmpCopyAllCommand(sublime_plugin.ApplicationCommand):
    """Copies full Markdown document text of the active view to clipboard."""

    def run(self):
        import sublime
        window = sublime.active_window()
        if not window:
            return
        view = window.active_view()
        if view and view.is_valid():
            text = view.substr(sublime.Region(0, view.size()))
            sublime.set_clipboard(text)
            sublime.status_message("Copied full markdown document to clipboard")


class SmpCopyTextCommand(sublime_plugin.ApplicationCommand):
    """Copies given text snippet to clipboard."""

    def run(self, text=""):
        import sublime
        import urllib.parse
        if text:
            raw_text = urllib.parse.unquote(text)
            sublime.set_clipboard(raw_text)
            sublime.status_message("Code snippet copied to clipboard")


class SmpCopyCodeCommand(sublime_plugin.ApplicationCommand):
    """Copies code snippet by ID from SnippetCache to clipboard."""

    def run(self, id=0):
        import sublime
        from ..renderer.highlighter import SnippetCache
        code = SnippetCache.get(int(id))
        if code:
            sublime.set_clipboard(code)
            sublime.status_message("Code block copied to clipboard")
        else:
            sublime.status_message("Code snippet expired or not found")


class SmpCopyTableCommand(sublime_plugin.ApplicationCommand):
    """Copies table content by ID from SnippetCache to clipboard."""

    def run(self, id=0):
        import sublime
        from ..renderer.highlighter import SnippetCache
        content = SnippetCache.get(int(id))
        if content:
            sublime.set_clipboard(content)
            sublime.status_message("Table Markdown copied to clipboard")
        else:
            sublime.status_message("Table content expired or not found")