我目前正在为Sublime Text 3编写一个插件,旨在为用户提供更灵活的会话管理。
因为似乎API没有提供打开.sublime-project
文件的方法。我显然能像往常一样打开文件 - 使用window.open_file
- 但不要告诉Sublime打开特定的项目文件。
它只会在一个新标签中打开它,这并不是我所希望的。
我可以使用window.project_data
和window.set_project_data
访问和设置 project_data ,但是虽然有window.project_file_name
方法,却没有对应方式
这是有问题的,因为 project_data 通常包含相对路径,需要相对于.sublime-project
文件位置进行解释。如果我只是将找到的数据转储到新窗口(set_project_data
),所有相对路径将被解释为相对于 root (至少在我的Ubuntu系统上)。
我可以自己处理相对路径并相应地修改project_data
,但这很糟糕。
有没有未记载的方法或我遗漏的东西?
答案 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.