Могу ли я установить подсветку синтаксиса по умолчанию в Gedit?

24

Пока вы не сохраните документ в gedit, подсветка синтаксиса отключена. Очевидно, для этого есть веские причины - люди могут запутаться, если определенные слова будут случайно отображаться разными цветами. Но для моих целей я использую gedit почти исключительно для редактирования HTML.

Много раз я вставляю фрагменты кода в новый документ gedit для быстрого редактирования, и мне приходится вручную устанавливать цвет синтаксиса в HTML. В других случаях я открываю документы ColdFusion (.cfm), которые gedit, по-видимому, не распознает, и снова мне приходится вручную устанавливать цвет HTML. Оба этих неудобства были бы устранены, если бы я мог найти способ сказать gedit, что он автоматически использует подсветку синтаксиса HTML для новых документов и документов без распознанного расширения файла. Это возможно?

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

Ответы:

21

Вы можете по крайней мере добавить расширения файла в схему раскраски синтаксиса html, отредактировав html.langв /usr/share/gtksourceview-2.0/language-specs/качестве суперпользователя. Допустим, вы хотите добавить подсветку синтаксиса HTML к файлам cfm, измените это

<property name="globs">*.html;*.htm</property>

(по умолчанию html.lang) в это

<property name="globs">*.html;*.htm;*.cfm</property>

jdup
источник
Благодарность! Это помогло gedit добавить синтаксическую раскраску в мои файлы ColdFusion.
Майкл Мартин-Смукер
2
Я хотел бы добавить несколько дополнительных голосов за этот ответ. Я просто использовал этот ответ снова, чтобы выделить CSS для файлов LESS и SASS.
Майкл Мартин-Смукер
1
Мне нравится идея дублирования и редактирование .langв пользовательском каталоге себя
jozxyqk
1
@michaelms Я добавил голосовой комментарий к сообщению и вашему комментарию, потому что я также добавил подсветку синтаксиса CSS к своим файлам LESS в gedit, отредактировав sudo nano /usr/share/gtksourceview-3.0/language-specs/css.lang и добавив *. less и * .sass к свойству globs: <property name="globs">*.css;*.CSSL;*.less;*.sass</property>
Ссылка Swanson
Возможно, вам придется изменить путь для разных версий gtksourceview. Вы также можете скопировать файл в папку своего профиля, чтобы предотвратить его перезапись. См. Ответ 5chdn ниже ( askubuntu.com/a/310553/37574 )
mwfearnley
14

Вы можете создать свои собственные файлы определения языка в вашем $HOMEкаталоге. Редактирование спецификаций языка gtk не рекомендуется, так как оно будет переопределяться при каждом обновлении gtksourceview.

Скопируйте файл языковых спецификаций в ваш домашний каталог:

$ cp /usr/share/gtksourceview-3.0/language-specs/html.lang ~/.local/share/gtksourceview-3.0/language-specs/

Затем добавьте свои собственные форматы файлов, например, .cfmв список расширений:

<property name="globs">*.html;*.htm;*.cfm</property>

Таким образом, geditбудет использоваться автоматическое выделение синтаксиса для пользовательских форматов файлов, и обновления gtk не будут отменять ваши пользовательские изменения.

Afr
источник
1
Это лучший вариант, чем выбранный ответ. Когда возможно, применяйте изменения локально.
nightcod3r
Но как gedut распознает скопированный файл в $ HOME? Как мне сказать gedit, что нужно искать файл .lang в $ HOME ??? Заранее спасибо.
Срикришнан
8

Это невозможно без изменения исходного кода Gedit или написания плагина для переопределения по умолчанию. Схема подсветки синтаксиса по умолчанию жестко запрограммирована .

ændrük
источник
Спасибо, что указал мне правильное направление. Я клонировал последний gedit и начал ковыряться, прежде чем понял, что gedit теперь зависит от gtk + 3. Это может превратиться в гораздо больший беспорядок, на который я рассчитывал. ;-)
Майкл Мартин-Смукер
Еще одна вещь: какая-либо идея, для languageкоторых значения действительны? Я просмотрел источник geditи gtksourceviewне смог найти ничего похожего на названия языков (но мои навыки в Си практически отсутствуют.)
Майкл Мартин-Смукер
1
@MichaelMS Я не уверен, но если вы планируете инвестировать какие-то усилия в решение, я, честно говоря, думаю, что проще всего внедрить set_languageвызов в пример плагина Python . Вы, вероятно, можете использовать, get_languageчтобы выяснить правильное значение для подсветки исходного кода HTML.
rndrük