• 差分
  • リロード
  • 一覧
  • 最終更新のRSS

geditのハイライティングルールをカスタマイズする

はじめに

GNOME標準テキストエディタgeditはGtkSourceViewというウィジェットを用いて ハイライティング機能つきテキスト編集を可能にしている。 GtkSourceViewはデフォルトでかなりの数のハイライティングルールをサポートしており、 ルールが無くて困るということは普通に使う分にはほとんどないと思われる。 しかし、不幸にもドマイナーなプログラミング言語を触ることになった場合等は ハイライティングルールを自分で追加する必要が出てくる。

ここではNesC*1 というプログラミング言語用ハイライティング設定を実際に追加してみる。

ハイライティング設定ファイル

Ubuntu 7.10 (Gutsy Gibbon)に付属しているgedit 2.20.1では GtkSourceView 2.0が採用されている。 システムワイドのハイライティング設定はデフォルトで /usr/share/gtksourceview-2.0/language-specsディレクトリに納められている。

toshio@toshio-laptop:/usr/share/gtksourceview-2.0/language-specs$ ls
R.lang          convert.py    docbook.lang  haddock.lang           language.dtd   
ada.lang        cpp.lang      dpatch.lang   haskell-literate.lang  language.rng  
awk.lang        csharp.lang   dtd.lang      haskell.lang           language2.rng 
boo.lang        css.lang      erlang.lang   html.lang              latex.lang    
c.lang          d.lang        fortran.lang  idl.lang               libtool.lang  
changelog.lang  def.lang      gap.lang      ini.lang               lua.lang      
chdr.lang       desktop.lang  gtk-doc.lang  java.lang              m4.lang       
check.sh        diff.lang     gtkrc.lang    javascript.lang        makefile.lang 
...             ...           ...           ...                    ...

見れば分かるように、ハイライティング設定は拡張子がlangであるファイルに 記述されている。 langファイルはXMLで書かれているのでテキストエディタで簡単に編集することが可能である。

一方、ユーザーレベルでハイライティング設定を追加したい場合は~/.gnome2/gtksourceview-1.0/language-specsディレクトリにlangファイルを作成すればいいようだ。 なぜか~/.gnome2/gtksourceview-2.0ディレクトリでは認識されなかったので注意。 (gedit 2.20.1の場合)

langファイルの書式はGNOMEのリファレンスを参照。 GtkSourceView 2.0になってきめ細かいハイライティングが可能になった反面、 langファイルの書式がやや複雑になったが、 NesCの場合、C言語のlangファイルにいくつかキーワードを加えるだけでも 充分使える。

このファイルを上述のディレクトリに配置し、geditを起動すれば NesCのハイライティングを指定できるようになる。

自動ハイライティング

上記の操作によってNesCのハイライティングはできるようになったが、 ファイルに対して自動的にハイライティングを適用することはまだできていない。 実は、先に挙げたnesc.langはtext/x-nescsrc *2 というMIMEタイプのファイルに対して 自動的に適用されるように設定されているのだが、 現状ではGNOMEはこのMIMEタイプを認識しないのである。

そこで、NesCソースファイルの一般的な拡張子である.ncのファイルに対して text/x-nescsrcというMIMEタイプを割り当てる。

$ mkdir -p ~/.local/share/mime/packages
$ gedit ~/.local/share/mime/packages/Overrides.xml

Overrides.xmlの内容に以下を追加。

<?xml version='1.0'?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="text/x-nescsrc">
    <sub-class-of type="text/plain"/>
    <comment>NesC source code</comment>
    <comment xml:lang="ja">NesC ソースファイル</comment>
    <glob pattern="*.nc"/>
  </mime-type>
</mime-info>

MIMEデータベースを更新。

$ update-mime-database ~/.local/share/mime

こうしておけば、NesCソースファイルが自動的にハイライティングされるようになる。

nesc_highlight.png

*1 C言語に似たプログラミング言語。無線センサネットワークマイコン用のOSであるTinyOSを開発するために使われている。イベントドリブンなプログラムモデルが特徴。
*2 text/x-nescsrcというMIMEタイプは筆者がてきとーにでっちあげたものなので、本質的には何でも構わない

添付ファイル: filenesc.lang 1187件 [詳細] filenesc_highlight.png 447件 [詳細]
Last-modified: 2007-11-05 (月) 03:01:49 (4153d)