繁体   English   中英

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

[英]Open sublime-project file programmatically

我目前正在为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但这很麻烦。

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

编辑: 有问题的插件。

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

$ subl projectname.sublime-project:1

在一个名为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. 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM