使用包发送默认的 sublime-settings
Ship default sublime-settings with package
在我的 SublimeText
包中,我包含一个文件 BlameHighlight.sublime-settings。测试的时候,我从~/Library/Application\ Support/Sublime\ Text\ 3/Packages
link到这个目录,修改这个文件就生效了。
我还包含一个指向 ${packages}/User/BlameHighlight.sublime-settings
的菜单项。当我使用菜单时,我看到一个完全空白的文件。
如何使用我的 BlameHighlight.sublime-settings
版本作为 ${packages}/User/BlameHighlight.sublime-settings
的默认模板?
通常,您的 Main.sublime-menu
将包含默认 .sublime-settings
文件(可能 Packages/BlameHighlight/BlameHighlight.sublime-settings
)和 Packages/User
版本的条目。如果用户想要自定义设置,他们首先打开默认文件(在 ST3 中是只读的),然后是用户文件,并将他们需要的内容从默认文件复制粘贴到用户。
如果出于某种原因您希望用户文件预先填充一些设置,您需要以编程方式创建它。
我建议使用与所有其他包相同的策略,而不是自动创建默认设置文件的副本。不是因为我认为它更好,而是因为我认为不同包之间的用户体验应该没有差异。
然而,正如 所述,您必须为此编写我们自己的插件。至少对于 ST3,这是非常简单的:
import os, sublime_plugin, sublime
class CopyUserSettingsCommand(sublime_plugin.WindowCommand):
def run(self, package_name, settings_name):
file_path = os.path.join(sublime.packages_path(), "User", settings_name)
if not os.path.exists(file_path):
try:
content = sublime.load_resource("Packages/{0}/{1}".format(package_name, settings_name))
with open(file_path, "w") as f:
f.write(content)
except:
print("Error copying default settings.")
self.window.open_file(file_path)
只需将其复制到包中的 python 文件中,然后插入菜单项:
// ...
{
"command": "copy_user_settings",
"args": {
"package_name": "BlameHighlight",
"settings_name": "BlameHighlight.sublime-settings"
},
"caption": "Settings – User"
},
// ...
在我的 SublimeText
包中,我包含一个文件 BlameHighlight.sublime-settings。测试的时候,我从~/Library/Application\ Support/Sublime\ Text\ 3/Packages
link到这个目录,修改这个文件就生效了。
我还包含一个指向 ${packages}/User/BlameHighlight.sublime-settings
的菜单项。当我使用菜单时,我看到一个完全空白的文件。
如何使用我的 BlameHighlight.sublime-settings
版本作为 ${packages}/User/BlameHighlight.sublime-settings
的默认模板?
通常,您的 Main.sublime-menu
将包含默认 .sublime-settings
文件(可能 Packages/BlameHighlight/BlameHighlight.sublime-settings
)和 Packages/User
版本的条目。如果用户想要自定义设置,他们首先打开默认文件(在 ST3 中是只读的),然后是用户文件,并将他们需要的内容从默认文件复制粘贴到用户。
如果出于某种原因您希望用户文件预先填充一些设置,您需要以编程方式创建它。
我建议使用与所有其他包相同的策略,而不是自动创建默认设置文件的副本。不是因为我认为它更好,而是因为我认为不同包之间的用户体验应该没有差异。
然而,正如
import os, sublime_plugin, sublime
class CopyUserSettingsCommand(sublime_plugin.WindowCommand):
def run(self, package_name, settings_name):
file_path = os.path.join(sublime.packages_path(), "User", settings_name)
if not os.path.exists(file_path):
try:
content = sublime.load_resource("Packages/{0}/{1}".format(package_name, settings_name))
with open(file_path, "w") as f:
f.write(content)
except:
print("Error copying default settings.")
self.window.open_file(file_path)
只需将其复制到包中的 python 文件中,然后插入菜单项:
// ...
{
"command": "copy_user_settings",
"args": {
"package_name": "BlameHighlight",
"settings_name": "BlameHighlight.sublime-settings"
},
"caption": "Settings – User"
},
// ...