Sublime text: добавление символов в определение нового языка (подсветка синтаксиса)

Я написал подсветку синтаксиса для немного незнакомого языка (Cadence SKILL) в возвышенном тексте 2.

Это работает как шарм, однако мне не хватает функции CTRL + R , которая легко находит все символы (функции) в данном файле.

Может ли кто-нибудь предложить, как сообщить Sublime Text, где искать шаблон объявления функции (процедуры)?

Спасибо!


person deowood    schedule 22.04.2013    source источник


Ответы (2)


Взгляните на Default/Symbol List.tmPreferences. Вы можете создать этот файл настроек и указать области для включения в список символов. Вы также можете посмотреть на Java/Symbol List <some specifier>.tmPreferences примеры списка символов для конкретного языка. В качестве альтернативы вы можете убедиться, что вещи, которые вы хотите включить, имеют область действия entity.name.function или entity.name.type.

изменить

Вам нужно будет посмотреть файл цветовой схемы. Это файлы Plist, поэтому вы можете использовать что-то вроде PlistJsonConverter, чтобы сделать его немного более читабельным (хотя это скорее личные предпочтения). В этом файле вы увидите несколько словарных статей. Одним из ключей к этим записям является область действия. Когда подходящая область найдена, как определено в вашем языковом определении. Вы также увидите ключ «Настройки», который определяет детали о цвете, стиле шрифта и т. Д. Поскольку вам нужны разные цвета, вам нужно будет применять разные области. Вам нужно будет определить пользовательский файл настроек списка символов, чтобы все было правильно включено. Следующее из пакета Java.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Symbol List: Classes</string>
    <key>scope</key>
    <string>source.java meta.class meta.class.identifier</string>
    <key>settings</key>
    <dict>
        <key>showInSymbolList</key>
        <integer>1</integer>
    </dict>
    <key>uuid</key>
    <string>22E489AE-989E-4A76-9C18-89944CF5013D</string>
</dict>
</plist>

Вы определите, какие области применяются к записям, которые вы хотите отобразить в списке.

person skuroda    schedule 22.04.2013
comment
Спасибо :) Однако мне не очень удобно использовать терминологию entity.name.function и т. д. Не могли бы вы поделиться ресурсом, чтобы изучить их? Но, по крайней мере, я получил указание двигаться вперед. - person deowood; 25.04.2013
comment
entity.name.function — это просто имя области. Я предполагаю, что вы знаете, что такое области действия, поскольку это звучит так, как будто вы написали файл синтаксиса. С точки зрения обучения, для меня это просмотр файлов ST и просмотр документов textmate. manual.macromates.com/en Я думаю, что конкретно для ST, если бы я видел, что что-то происходит по-другому, в зависимости от языка я начал просматривать эти файлы, чтобы увидеть, как это делается. - person skuroda; 25.04.2013
comment
Я не знаю, что такое области видимости, однако файл синтаксиса был только что изменен синтаксическим файлом 'lisp'! Сейчас у меня все работает хорошо, но я думаю, мне нужно глубоко вникнуть в эти вещи, если я хочу, чтобы эти расширенные функции работали. Большое спасибо :) - person deowood; 26.04.2013
comment
Проще говоря, области видимости — это имена, применяемые к шаблонам, соответствующим шаблонам регулярных выражений. Но да, вероятно, стоит немного узнать о них, если вы собираетесь изменять файлы синтаксиса (или, я полагаю, изменять цветовые схемы). - person skuroda; 26.04.2013
comment
Привет, в первую очередь благодаря вам, так как я в значительной степени разобрался в области видимости и добился того, о чем изначально просил (см. все символы в ctrl + R ). Однако я хочу большего! Sublime Text не использует разные цвета для разных областей. Как мне этого добиться? (К вашему сведению, я использую тему кобальта). Спасибо - person deowood; 08.05.2013
comment
Я немного расширил свой ответ, чтобы обратиться к окраске. - person skuroda; 09.05.2013

Я тоже сделал один для Cadence Skill. Вы можете попробовать это здесь

https://github.com/noisyass2/SublimeCadenceSkill

person noisyass2    schedule 06.09.2013
comment
привет, сейчас я использую вашу подсветку синтаксиса (только что перешел на ST3). Это намного лучше, чем то, что я достиг. Однако в списке символов я вижу много вещей (например, hiCreateLabel и т. д.), как мне увидеть только имена процедур, когда я нажимаю Ctrl + R? - person deowood; 21.11.2013
comment
о, это было намеренно, я включил все вызовы функций в объявления функций. но да, я обновил его сейчас и удалил эти вызовы функций из списка символов (ctrl+R). - person noisyass2; 09.12.2013