Как одновременно поддерживать Typescript и Flow в Sublime Text - PullRequest
1 голос
/ 08 мая 2020

Я работаю над двумя проектами. Один использует Flow, другой - Typescript. Я хочу использовать Sublime Text для обоих.

Я хотел бы использовать пакеты, связанные с Flow (например, SublimeLinter-flow) для проекта Flow, одновременно используя пакеты, связанные с Typescript (например, TypeScript) для проекта Typescript.

Когда я устанавливаю оба набора пакетов, они затирают друг друга (в настоящее время Sublime сообщает об ошибках Typescript в моем проекте Flow).

Возможно, есть способ сделать пакеты, указанные в проекте, c? Или укажите c для типа расширения?

Моя единственная другая мысль (не желательная) - использовать VSCode для одного проекта и Sublime для другого ...

Есть идеи?

1 Ответ

1 голос
/ 11 мая 2020

К сожалению, нет способа сделать пакет проекта с указанием c или активным только с указанным синтаксисом c (расширение файла). Для этого есть конструктивные причины , так что вряд ли это что-то изменится.

Несколько лет a go У меня была похожая проблема, хотя в конечном итоге она была решена обновлением пакета.

Обходной путь, который я придумал, заключался в написании плагина для добавления, удаления или переключения пакетов в настройке ignored_packages. Обратите внимание, что параметр ignored_packages не может использоваться в параметрах проекта c по тем же причинам, которые указаны выше.

Используя плагин 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"] }
},
...