以编程方式打开sublime-project文件

时间:2015-02-07 11:54:56

标签: python sublimetext sublimetext3 sublime-text-plugin

我目前正在为Sublime Text 3编写一个插件,旨在为用户提供更灵活的会话管理。

因为似乎API没有提供打开.sublime-project文件的方法。我显然能像往常一样打开文件 - 使用window.open_file - 但不要告诉Sublime打开特定的项目文件。
它只会在一个新标签中打开它,这并不是我所希望的。

我可以使用window.project_datawindow.set_project_data访问和设置 project_data ,但是虽然有window.project_file_name方法,却没有对应方式

这是有问题的,因为 project_data 通常包含相对路径,需要相对于.sublime-project文件位置进行解释。如果我只是将找到的数据转储到新窗口(set_project_data),所有相对路径将被解释为相对于 root (至少在我的Ubuntu系统上)。

我可以自己处理相对路径并相应地修改project_data,但这很糟糕。

有没有未记载的方法或我遗漏的东西?

编辑: The plugin in question.

2 个答案:

答案 0 :(得分:1)

尝试打开带后缀':1'的文件 - 意思是'行号#1': 这对我有用:

$ subl projectname.sublime-project:1

答案 1 :(得分:0)

在一个名为ProjectManager的Sublime插件中找到了一个方法。您将在此文件中找到代码...

https://github.com/randy3k/ProjectManager/blob/master/pm.py

# Code lifted from https://github.com/randy3k/ProjectManager/blob/master/pm.py
def subl(args=[]):
    # learnt from SideBarEnhancements
    executable_path = sublime.executable_path()

    if sublime.platform() == 'linux':
        subprocess.Popen([executable_path] + [args])
    if sublime.platform() == 'osx':
        app_path = executable_path[:executable_path.rfind(".app/") + 5]
        executable_path = app_path + "Contents/SharedSupport/bin/subl"
        subprocess.Popen([executable_path] + args)
    if sublime.platform() == "windows":
        def fix_focus():
            window = sublime.active_window()
            view = window.active_view()
            window.run_command('focus_neighboring_group')
            window.focus_view(view)
        sublime.set_timeout(fix_focus, 300)

subl(project_file) # The something.sublime-project file.