Sublime Text 3: автозаполнение использует неправильный синтаксис для цикла for - PullRequest
0 голосов
/ 28 декабря 2018

С возвышенным текстом 3 автозаполнение при наборе «for» и переходе на вкладку дает вам:

for x in xrange(1,10):
    pass

Однако это недопустимое утверждение для Python 3. Я пытался создать новую сборкусистема использует следующее:

{
    "cmd": ["c:/Python37/python.exe", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

автозаполнение для по-прежнему дает неправильный синтаксис.любой совет?

1 Ответ

0 голосов
/ 28 декабря 2018

Короткая версия состоит в том, что файлы sublime-build и sublime-snippet, которые поставляются с Sublime для поддержки Python, предназначены для Python версии 2, а не для Python версии 3. Я не знаю, было ли это только из-за того, что использовалосьизначально или если это делается специально.

В Sublime ресурсы обычно относятся к конкретному языку на основе scope, предоставленной определением синтаксиса.Так, например, фрагменты для Python связаны с source.python, ваш примерный файл сборки использует эту область, чтобы знать, что он применяется к файлам Python, и так далее.Таким образом, независимо от того, какую сборку вы используете, это никак не влияет на предлагаемые фрагменты.

Например, если вы используете команду View Package File из палитры команд и вводитетекст python for snippet, список ресурсов пакета будет отфильтрован до Python/Snippets/for.sublime-snippet;нажав Введите , чтобы увидеть, что ресурс показывает это:

<snippet>
    <tabTrigger>for</tabTrigger>
    <scope>source.python</scope>
    <description>For Loop</description>
    <content><![CDATA[
for ${1:x} in ${2:xrange(1,10)}:
    ${0:pass}
]]></content>
</snippet>

Здесь tabTrigger указывает как вставка фрагмента, scope управляет где вставляет и content контролирует какие вставляет.Таким образом, чтобы изменить его на поддержку Python 3, вам нужно либо создать свой собственный фрагмент, либо изменить существующий.

Проблема с созданием собственного фрагмента заключается в том, что он будет добавлен в список фрагментов. включая нарушающего, который позволяет ему, возможно, по-прежнему срабатывать, когда вы этого не ожидаете.Также не существует общего «простого» способа отключения отдельных фрагментов.

Таким образом, как правило, наилучшим способом действий будет использование пакета PackageResourceViewer .Установите его, выберите PackageResourceViewer: Open Resource в командной палитре, затем выберите тот же файл, как указано выше, и измените содержимое фрагмента (например, замените xrange на range) и сохраните файл.

ЭтоSublime заменит существующий фрагмент вашей отредактированной версией, чтобы он занял место существующего и работал так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...