Я попытался создать новый файл .lang
, чтобы Gedit распознал язык программирования Julia . Я прочитал учебник , справочный документ и вики-страницу Gedit / NewLanguage , и я считаю, что файл правильный. Однако после перезапуска gedit после копирования нового файла julia.lang
в /usr/share/gtksourceview-3.0/language-specs/
, файл .jl действительно распознается, и меню подсветки синтаксиса установлено на julia, но фактическое выделение не происходит.
Думая, что я мог сделать что-то не так, я попытался вместо этого использовать существующий языковой файл для аналогичного языка ( Matlab ) и изменил только метаданные заголовка на:
<language id="julia" _name="Julia" version="2.0" _section="Scientific">
<metadata>
<property name="mimetypes">text/x-julia;application/x-julia</property>
<property name="globs">*.jl</property>
<property name="line-comment-start">#</property>
</metadata>
[ 1127] Все остальное было сохранено точно как есть, и я сохранил файл как julia.lang
. Тем не менее, при повторном открытии Gedit возникает та же проблема. Более того, если я выберу запись Matlab в меню подсветки синтаксиса, форматирование будет выполнено правильно (в соответствии с правилами Matlab), даже несмотря на то, что оба matlab.lang
и julia.lang
имеют абсолютно одинаковые определения синтаксиса!
Что я могу делать не так? У этого парня , казалось, была та же самая проблема, но в этой ветке никогда не было показано, как он решил ее (если он когда-либо делал). Есть идеи?
Обновление : моя ошибка действительно не заключалась в изменении идентификатора контекста, на что указывал @carandraug в своем ответе. У меня, однако, были другие проблемы, которые я здесь отмечу, если они кому-нибудь пригодятся:
def.lang
для Джулии. однострочные комментарии, но это доставляло мне много ошибок. Оказывается, когда используется ссылочный контекст , атрибут id
не может быть установлен. При изменении с <context id="comment" ref="def:shell-like-comment" />
на <context ref="def:shell-like-comment" />
ошибки исчезли. Я думаю, что справочный документ (и учебник также) должен упомянуть это предостережение. Я отредактировал вики-страницу , чтобы указать на это. <style id="string">
было определено в def.lang
). Любые разъяснения по этому поводу приветствуются в комментариях: -) Последнее предложение для тех, кто разрабатывает новые определения основных языков для gedit: не забудьте запустить gedit из командной строки и посмотреть на консоль выход!
Я не знаю, почему ваш оригинальный файл julia.lang
не работает, так как вы не показываете источник, но тот, который вы основали на matlab.lang
, не будет работать, потому что внутри <definitions>
нет контекста с тем же id
вы упомянули для <language>
.
По сути, вы говорите, что id
этого языка - julia
, но нет контекста с этим определением id
. Так что найдите <context id="matlab"
( строка 149 текущей HEAD ) и измените его на julia
.
Файл lang обычно организован как набор отдельных контекстов для выделяемых языковых функций, которые затем сгруппированы в конце в основной блок с тем же id
языком и ссылками на другие контексты.