Как предотвратить появление нежелательного текста при написании многострочных комментариев в Sublime Text (Ruby)?

В Ruby многострочные комментарии записываются с помощью =begin и =end.

Когда я набираю =begin, после того, что я написал об ошибке, появляется текст по умолчанию. Возвышенная версия 3.2.1. Автоматически всплывающий текст:

исключение спасения => e

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

Я попытался просмотреть настройки Sublime Text (версия 3) и поискать в Google связанные вопросы, и я просмотрел документацию по Sublime, но не нашел ничего, что могло бы помочь. Существует файл настроек Ruby для возвышенного текста, но мой пуст, поэтому я не уверен, что добавить.

=begin

rescue Exception => e

=end

person Leah    schedule 13.08.2019    source источник


Ответы (1)


Причина этого в том, что пакет Ruby, поставляемый с Sublime, включает ряд фрагментов, и один из них вставляет блок begin-rescue-end в ответ на текст begin, за которым следует ключ автозаполнения. Есть несколько способов предотвратить это, в том числе изменить способ запуска фрагмента или его содержимое.

Во-первых, вы можете настроить параметр auto_complete_commit_on_tab:

    // By default, auto complete will commit the current completion on enter.
    // This setting can be used to make it complete on tab instead.
    // Completing on tab is generally a superior option, as it removes
    // ambiguity between committing the completion and inserting a newline.
    "auto_complete_commit_on_tab": false,

Как описано в комментарии, этот параметр определяет, используется ли Enter или Tab для выбора автозаполнения во всплывающем окне, по умолчанию - Enter.

Судя по описанию проблемы, вы можете работать с этим параметром, установленным по умолчанию; таким образом, всякий раз, когда вы вводите begin, в списке появляется автозаполнение для фрагмента, а нажатие Enter выбирает элемент и расширяет его.

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

Это также имеет то преимущество, что вы по-прежнему можете использовать фрагмент по назначению вне комментариев, чтобы быстро настроить блокировку восстановления. Однако обратите внимание, что если вы используете всплывающее окно автозаполнения в других случаях, это потребует от вас тренировки мозга, что вам нужно нажимать Tab там, где вы раньше нажимали Enter.

Кроме того, вы можете отключить фрагмент или изменить то, что он вставляет, чтобы сделать вашу жизнь немного лучше. Для этого вы должны выбрать Preferences: Browse Packages на палитре команд или в главном меню, чтобы открыть папку Packages.

Внутри этой папки создайте папку с именем Ruby, а затем внутри этой папки создайте папку с именем Snippets, а внутри этой папки файл с именем Wrap-in-Begin-Rescue-End.sublime-snippet (это важно; имена должны быть точными для всех файлов и папок. здесь).

Если при этом вы создадите пустой файл, то фрагмент в пакете Ruby будет полностью отключен и больше не сможет запускаться.

В качестве альтернативы вы можете вместо этого предоставить создаваемому вами файлу содержимое, которое выглядит примерно так:

<snippet>
    <content><![CDATA[
begin
    $0
=end
]]></content>
    <tabTrigger>begin</tabTrigger>
    <scope>source.ruby - comment</scope>
    <description>complete block comment</description>
</snippet>

Это заставит текст begin расшириться до текста в области содержимого фрагмента, который добавит текст begin, за которым следует закрытие комментария блока, и оставит курсор посередине, где находится $0.

Вы можете изменить это по мере необходимости, например, изменить отступ или положение курсора и т. Д.

person OdatNurd    schedule 13.08.2019
comment
Я использовал возможность отключить конкретный фрагмент. Это прекрасно работает. благодарю вас! - person Leah; 13.08.2019