Добавьте пользовательские маркеры, которые будут отображаться в окне Goto Symbol (Cmd R)

#sublimetext3 #sublime-text-plugin

#sublimetext3 #sublime-text-plugin

Вопрос:

Я опубликовал этот точно такой же вопрос в темах разработчиков плагинов ST forum

https://forum.sublimetext.com/t/add-custom-markers-that-will-be-shown-in-the-goto-symbol-cmd-r-window/23772

Я использую ST уже пару лет,

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

Я хотел бы включить какой-то маркер, который при размещении в коде включает новую запись в список, отображаемый в окне Goto Symbol (Cmd R). Ближайший пример, который у меня есть сейчас, — из Xcode, где в исходный код вы можете включить комментарий с ключевым словом «MARK:», и он отобразит новый раздел в верхней строке заголовка редактора (что эквивалентно символу goto в ST).

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

Ответ №1:

Содержимое списка символов контролируется файлом настроек, который сообщает sublime, какие области должны отображаться в списке символов для любого заданного языка и, при необходимости, какие преобразования следует выполнить для целей отображения (например, для отступа методов в классе).).

Такие файлы конфигурации tmPreferences представляют собой файлы (XML-файлы в формате Plist) внутри пакета, которые обычно называются именами, начинающимися с Symbol List . Например, Packages/C /Symbol List.tmPreferences это один из таких файлов для использования в пакете C (который охватывает C, C и оба варианта Objective-C). Поскольку файлы являются файлами Plist, фактические имена не имеют значения, но это соглашение, которое упрощает поиск таких файлов.

Существует некоторая документация по символам, которую вы можете прочитать для получения дополнительной информации.

Тривиально, если вы сохраните следующий XML Packages/C /Symbol List Pragma.tmPreferences -файл, он добавит все #pragma MARK строки из ваших исходных файлов в список символов (только текущий файл), заменив #pragma MARK на " ---- " :

 <?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Symbol List</string>
    <key>scope</key>
    <string>(source.c | source.c   | source.objc | source.objc  ) amp;amp; (meta.preprocessor.c)</string>
    <key>settings</key>
    <dict>
        <key>showInSymbolList</key>
        <integer>1</integer>
        <key>showInIndexedSymbolList</key>
        <integer>0</integer>
        <key>symbolTransformation</key>
        <string>
            s/#pragma MARK/ ---- /g;
        </string>
    </dict>
</dict>
</plist>
 

Это не поможет вам пройти весь путь; во-первых, #ifdef и #endif директивы перехватываются этим правилом. Кроме того, он визуально не делает отступы от всего, что следует за IIRC XCode. Тем не менее, это хорошая отправная точка для понимания того, что происходит.

Если бы вы действительно хотели сделать это с помощью специальных однострочных комментариев, а не a #pragma , я полагаю, вам нужно было бы улучшить подсветку синтаксиса для языка (языков), на которые вы нацелены, чтобы соответствовать таким комментариям и предоставить им область, на которую вы можете однозначно ориентироваться.