def __init__(self, name):
     self.name = name
     self.menu_path = join(sublime.packages_path(), "User", MENU_FOLDER)
     if not exists(self.menu_path):
         makedirs(self.menu_path)
     settings = load_settings()
     self.menu_types = multiget(settings, "menu_types", [])
     self.svn_disabled = multiget(settings, "svn_disabled", False) or multiget(settings, "svn_hide_menu", False)
     self.git_disabled = multiget(settings, "git_disabled", False) or multiget(settings, "git_hide_menu", False)
     self.hg_disabled = multiget(settings, "hg_disabled", False) or multiget(settings, "hg_hide_menu", False)
     self.show_ext = multiget(settings, "show_external", False) and get_external_diff() is not None
     self.show_int = multiget(settings, "show_internal", True)
예제 #2
0
def update_menu(name="..."):
    menu_path = join(sublime.packages_path(), "User", MENU_FOLDER)
    if not exists(menu_path):
        makedirs(menu_path)
    if exists(menu_path):
        settings = load_settings()
        svn_disabled = multiget(settings, "svn_disabled", False) or multiget(
            settings, "svn_hide_menu", False)
        git_disabled = multiget(settings, "git_disabled", False) or multiget(
            settings, "git_hide_menu", False)
        hg_disabled = multiget(settings, "hg_disabled", False) or multiget(
            settings, "hg_hide_menu", False)
        show_ext = multiget(settings, "show_external",
                            False) and get_external_diff() is not None
        show_int = multiget(settings, "show_internal", True)
        menu = join(menu_path, CONTEXT_MENU)
        vc_internal = []
        vc_internal_menu = None
        if show_int:
            if not svn_disabled:
                vc_internal.append(SVN_INTERNAL_MENU)
            if not git_disabled:
                vc_internal.append(GIT_INTERNAL_MENU)
            if not hg_disabled:
                vc_internal.append(HG_INTERNAL_MENU)
            if len(vc_internal):
                vc_internal_menu = ",\n".join(vc_internal)
        vc_external = []
        vc_external_menu = None
        if show_ext:
            if not svn_disabled:
                vc_external.append(SVN_EXTERNAL_MENU)
            if not git_disabled:
                vc_external.append(GIT_EXTERNAL_MENU)
            if not hg_disabled:
                vc_external.append(HG_EXTERNAL_MENU)
            if len(vc_external):
                vc_external_menu = ",\n".join(vc_external)
        with open(menu, "w") as f:
            f.write(
                DIFF_MENU % {
                    "internal": ("" if not show_int else INTERNAL_MENU % {
                        "file_name": name
                    }),
                    "external": ("" if not show_ext else EXTERNAL_MENU % {
                        "file_name": name
                    }),
                    "vc_internal": ("" if vc_internal_menu is None
                                    or not show_int else VC_INTERNAL_MENU % {
                                        "vc": vc_internal_menu
                                    }),
                    "vc_external": ("" if vc_external_menu is None
                                    or not show_ext else VC_EXTERNAL_MENU % {
                                        "vc": vc_external_menu
                                    })
                })
예제 #3
0
def get_external_diff():
    """Get external diff path."""

    settings = load_settings()
    ext_diff = multiget(settings, "external_diff", None)
    if ext_diff is None or ext_diff == "" or not exists(abspath(normpath(ext_diff))):
        diff_path = None
    else:
        diff_path = abspath(normpath(ext_diff))
    debug("External diff was not found!" if diff_path is None else "External diff \"%s\" found." % diff_path)
    return diff_path
예제 #4
0
def get_external_diff():
    """Get external diff path."""

    settings = load_settings()
    ext_diff = multiget(settings, "external_diff", None)
    if ext_diff is None or ext_diff == "" or not exists(
            abspath(normpath(ext_diff))):
        diff_path = None
    else:
        diff_path = abspath(normpath(ext_diff))
    debug("External diff was not found!"
          if diff_path is None else "External diff \"%s\" found." % diff_path)
    return diff_path
예제 #5
0
    def vc_is_enabled(self, name):
        """Check if version control command is enabled."""

        enabled = False
        if name is not None:
            try:
                enabled = (self.control_enabled and
                           (multiget(load_settings(),
                                     "skip_version_check_on_is_enabled", False)
                            or self.is_versioned(name)))
            except Exception:
                pass
        return enabled
def setup_vc_binaries():
    """Setup version control binaries."""

    global SVN_ENABLED
    global GIT_ENABLED
    global HG_ENABLED

    settings = load_settings()
    svn_path = multiget(settings, "svn", None)
    git_path = multiget(settings, "git", None)
    hg_path = multiget(settings, "hg", None)
    if svn_path is not None and svn_path != "":
        svn.set_svn_path(svn_path)
        SVN_ENABLED = None
    if git_path is not None and git_path != "":
        git.set_git_path(git_path)
        GIT_ENABLED = None
    if hg_path is not None and hg_path != "":
        hg.set_hg_path(hg_path)
        HG_ENABLED = None

    settings.clear_on_change('reload_vc')
    settings.add_on_change('reload_vc', setup_vc_binaries)
예제 #7
0
def setup_vc_binaries():
    global SVN_ENABLED
    global GIT_ENABLED
    global HG_ENABLED

    settings = load_settings()
    svn_path = multiget(settings, "svn", None)
    git_path = multiget(settings, "git", None)
    hg_path = multiget(settings, "hg", None)
    if svn_path is not None and svn_path != "":
        svn.set_svn_path(svn_path)
    if git_path is not None and git_path != "":
        git.set_git_path(git_path)
    if hg_path is not None and hg_path != "":
        hg.set_hg_path(hg_path)

    try:
        log("svn %s" % svn.version())
        SVN_ENABLED = True
    except:
        log("svn not found or is not working!")
        pass
    try:
        log("git %s" % git.version())
        GIT_ENABLED = True
    except:
        log("git not found or is not working!")
        pass
    try:
        log("hg %s" % hg.version())
        HG_ENABLED = True
    except:
        log("hg not found or is not working!")
        pass

    settings.clear_on_change('reload_vc')
    settings.add_on_change('reload_vc', setup_vc_binaries)
예제 #8
0
 def is_enabled(self):
     enabled = False
     name = self.view.file_name() if self.view is not None else None
     if name is not None:
         try:
             enabled = (
                 self.control_enabled and
                 (
                     multiget(load_settings(), "skip_version_check_on_is_enabled", False) or
                     self.is_versioned(name)
                 )
             )
         except:
             pass
     return enabled
예제 #9
0
    def __init__(self, name):
        """Initialize."""

        self.name = name
        self.menu_path = join(sublime.packages_path(), "User", MENU_FOLDER)
        if not exists(self.menu_path):
            makedirs(self.menu_path)
        settings = load_settings()
        self.menu_types = multiget(settings, "menu_types", [])
        self.svn_disabled = multiget(settings, "svn_disabled",
                                     False) or multiget(
                                         settings, "svn_hide_menu", False)
        self.git_disabled = multiget(settings, "git_disabled",
                                     False) or multiget(
                                         settings, "git_hide_menu", False)
        self.hg_disabled = multiget(settings,
                                    "hg_disabled", False) or multiget(
                                        settings, "hg_hide_menu", False)
        self.show_ext = multiget(settings, "show_external",
                                 False) and get_external_diff() is not None
        self.show_int = multiget(settings, "show_internal", True)
예제 #10
0
    def vc_is_enabled(self, name):
        """Check if version control command is enabled."""

        enabled = False
        if name is not None:
            try:
                enabled = (
                    self.control_enabled and
                    (
                        multiget(load_settings(), "skip_version_check_on_is_enabled", False) or
                        self.is_versioned(name)
                    )
                )
            except Exception:
                pass
        return enabled
def update_menu(name="..."):
    menu_path = join(sublime.packages_path(), "User", MENU_FOLDER)
    if not exists(menu_path):
        makedirs(menu_path)
    if exists(menu_path):
        settings = load_settings()
        svn_disabled = multiget(settings, "svn_disabled", False) or multiget(settings, "svn_hide_menu", False)
        git_disabled = multiget(settings, "git_disabled", False) or multiget(settings, "git_hide_menu", False)
        hg_disabled = multiget(settings, "hg_disabled", False) or multiget(settings, "hg_hide_menu", False)
        show_ext = multiget(settings, "show_external", False) and get_external_diff() is not None
        show_int = multiget(settings, "show_internal", True)
        menu = join(menu_path, CONTEXT_MENU)
        vc_internal = []
        vc_internal_menu = None
        if show_int:
            if not svn_disabled:
                vc_internal.append(SVN_INTERNAL_MENU)
            if not git_disabled:
                vc_internal.append(GIT_INTERNAL_MENU)
            if not hg_disabled:
                vc_internal.append(HG_INTERNAL_MENU)
            if len(vc_internal):
                vc_internal_menu = ",\n".join(vc_internal)
        vc_external = []
        vc_external_menu = None
        if show_ext:
            if not svn_disabled:
                vc_external.append(SVN_EXTERNAL_MENU)
            if not git_disabled:
                vc_external.append(GIT_EXTERNAL_MENU)
            if not hg_disabled:
                vc_external.append(HG_EXTERNAL_MENU)
            if len(vc_external):
                vc_external_menu = ",\n".join(vc_external)
        with open(menu, "w") as f:
            f.write(
                DIFF_MENU % {
                    "internal": ("" if not show_int else INTERNAL_MENU % {"file_name": name}),
                    "external": ("" if not show_ext else EXTERNAL_MENU % {"file_name": name}),
                    "vc_internal": ("" if vc_internal_menu is None or not show_int else VC_INTERNAL_MENU % {"vc": vc_internal_menu}),
                    "vc_external": ("" if vc_external_menu is None or not show_ext else VC_EXTERNAL_MENU % {"vc": vc_external_menu})
                }
            )
예제 #12
0
    def is_versioned(self, name):
        """Check if file is versioned."""

        disabled = multiget(load_settings(), "hg_disabled", False)
        on_disk = exists(name)
        return not disabled and on_disk and hg.is_versioned(name)
예제 #13
0
def get_external_diff():
    settings = load_settings()
    ext_diff = multiget(settings, "external_diff", None)
    return None if ext_diff is None or ext_diff == "" or not exists(abspath(normpath(ext_diff))) else abspath(normpath(ext_diff))
예제 #14
0
 def is_versioned(self, name):
     disabled = multiget(load_settings(), "hg_disabled", False)
     return not disabled and hg.is_versioned(name)
    def is_versioned(self, name):
        """Check if file is versioned."""

        disabled = multiget(load_settings(), "hg_disabled", False)
        on_disk = exists(name)
        return not disabled and on_disk and hg.is_versioned(name)