如何在Sublime Text中同时支持Typescript和Flow。

问题描述 投票:1回答:1

我正在做两个项目。 一个使用Flow,另一个使用Typescript。 我想为这两个项目使用Sublime Text。

我想在Flow项目中使用Flow相关的包(例如SublimeLinter-flow),同时在Typescript项目中使用Typescript相关的包(例如TypeScript)。

当我安装这两套包时,它们会互相攻击(Sublime目前在我的Flow项目中报告Typescript错误)。

也许有一种方法可以使包项目特定? 或者特定于扩展类型?

我唯一的想法(不是首选)是在一个项目中使用VSCode,而在另一个项目中使用Sublime。

有什么想法吗?

typescript sublimetext3 flow sublime-text-plugin
1个回答
1
投票

遗憾的是,没有办法使一个包项目特定或只为特定语法(文件扩展名)活动。有 设计原因 所以,这一点是不会改变的。

几年前,我也遇到过类似的问题,虽然最终通过更新软件包解决了。

我设计的变通方法是写一个插件来添加、删除或切换在 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"] }
},
© www.soinside.com 2019 - 2024. All rights reserved.