我正在做两个项目。 一个使用Flow,另一个使用Typescript。 我想为这两个项目使用Sublime Text。
我想在Flow项目中使用Flow相关的包(例如SublimeLinter-flow),同时在Typescript项目中使用Typescript相关的包(例如TypeScript)。
当我安装这两套包时,它们会互相攻击(Sublime目前在我的Flow项目中报告Typescript错误)。
也许有一种方法可以使包项目特定? 或者特定于扩展类型?
我唯一的想法(不是首选)是在一个项目中使用VSCode,而在另一个项目中使用Sublime。
有什么想法吗?
遗憾的是,没有办法使一个包项目特定或只为特定语法(文件扩展名)活动。有 设计原因 所以,这一点是不会改变的。
几年前,我也遇到过类似的问题,虽然最终通过更新软件包解决了。
我设计的变通方法是写一个插件来添加、删除或切换在 ignored_packages
设置。请注意 ignored_packages
设置不能用于项目的特定设置,原因与上述设计相同。
使用 AlterIgnoredPackages
下面的插件你可以改变你的 ignored_packages
当你在项目之间交换时,使用键绑定的设置。我还发布了 AlterIgnoredPackages
在...中 Github Gist.
# Save as AlterIgnoredPackages.py in your user packages directory.
# e.g. ~/.config/sublime-text-3/Packages/User/AlterIgnoredPackages.py
import sublime
import sublime_plugin
class AlterIgnoredPackagesCommand(sublime_plugin.ApplicationCommand):
def run(self, add_list=[], remove_list=[], toggle_list=[]):
preferences = sublime.load_settings("Preferences.sublime-settings")
ignored_packages = preferences.get("ignored_packages", [])
for package_name in add_list:
if package_name not in ignored_packages:
ignored_packages.append(package_name)
for package_name in remove_list:
if package_name in ignored_packages:
ignored_packages.remove(package_name)
for package_name in toggle_list:
if package_name in ignored_packages:
ignored_packages.remove(package_name)
else:
ignored_packages.append(package_name)
preferences.set("ignored_packages", ignored_packages)
sublime.save_settings("Preferences.sublime-settings")
# Unfortunately the automatic ST reloading settings
# message overwrites this message a bit too quickly.
# A workaround with a timeout is in the Github Gist.
message = "ignored_packages: " + str(ignored_packages)
sublime.status_message(message)
下面是一些关键的绑定例子。
{
"keys": ["ctrl+k", "ctrl+z"],
"command": "alter_ignored_packages",
"args": {"add_list": ["PackageName1"],
"remove_list": ["PackageName2", "PackageName3"] }
},
{
"keys": ["ctrl+k", "ctrl+shift+z"],
"command": "alter_ignored_packages",
"args": {"toggle_list": ["PackageName"] }
},