Gedit Mode

GNOME アプリの C ソース先頭にある

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */

って何?
多分 vim, emacs 等で使うんだろうと今迄思っていた。
けれどたまに「あれ?」と思うことがあったので実験してみた。

#!/bin/sh

cat << _EOS_ > test.java
#!/usr/bin/env python3
#! -*- Mode: C; indent-tabs-mode: 2; tab-width: 2 -*-

import sys
_EOS_

という中身は Python モードは C 拡張子は Java というファイルを作る。
Gedit で作らないように上記のようにシェルスクリプトで作った。
まあこのスクリプトを保存した時点で結果は解ってしまったけど。

筆者の Gedit では普段の設定は Python ガイドラインに合わせている。

ind01

先程のスクリプトで作ったファイルを開いたら結果はどうなった?

ind02

C モードになりタブ幅が変更され Tab ではなく空白指定が解除された。
知らなかった、Gedit はこの指定でファイル毎にインデントを指定できるんだ。
指定方法は emacs 形式でいいみたい。

更に、書き換えると保存毎にリアルタイムで変更になる。
モードを変更してタブ幅を変えても Ctrl+S を押した時点で切り替わる。
つまり先程のスクリプトは保存した時点で C に切り替わって焦った。

ということで。
筆者のような Python ガイドライン派は C を書く時に上記を先頭に書く。

C Coding Style にしている人は

#!/usr/bin/env python3
# -*- Mode: PYTHON; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-

と書いとけば Python を書く毎に設定を弄らないですむ。

PHP は言語としては統一されていないのでお好みでいいかな。
とにかくどこかに書いてコメントにすればいいみたい。

<!-- -*- Mode: PHP; indent-tabs-mode: 4; tab-width: 4 -*- -->

他のファイルを開くと普通にデフォルトが適用されます。

他の言語はガイドラインを知らないので各自で調べてください。
ただ某言語はワンライナーしか書かないからどうでもいいだろうな。

後 SyntaxHighlighter は Tab にしても半角スペースになってまうんで。
Web に貼り付けている奴は気に入らないなら \t で全置換してNE!

追記
一番肝心なことを書き忘れていた。
[モードライン]プラグインの機能なので有効にしてね。