Gentoo Linux に Scribes をインストールするための手順。
というわけで Scribes を使っているのだが、もしかしてこれってタブの代わりにスペースが入れられない? フォーラムではパッチが投稿されてるけど、これはどうも気に食わない。
> if key_press.keyval == keysyms.Tab:
> self.text_buffer.insert_at_cursor(u" ")
> return True
>
461c462
< self.text_buffer.insert_at_cursor(u"\t")
---
> self.text_buffer.insert_at_cursor(u" ")
ここは
> if key_press.keyval == keysyms.Tab:
> self.text_buffer.insert_at_cursor(u" " * editor.text_view.get_tabs_width())
> return True
>
461c462
< self.text_buffer.insert_at_cursor(u"\t")
---
> self.text_buffer.insert_at_cursor(u" " * editor.text_view.get_tabs_width())
じゃないと、タブを押してもスペース一個しか挿入されない。そういう意図のパッチだったのかな。まあそのうち作者さまが本体に切替機能を取り込むでしょう。
それはともかく、 Scribes の FAQ の 5 番めへの解答にこのエディタの方向性が端的に表れていると思う。 gedit などはエディタに多くを詰め込んでエディタの内部からユーザに世界をコントロールさせようとしていて、それに対して Scribes はエディタはあくまでもエディタとして振る舞いそれ以外の機能は外部で実現させる、つまりユーザにエディタの外部で世界をコントロールさせようとしているわけだ (これはどちらが正しいかという話ではないよ)。
俺はどちらかというと一品物のツールを組み合わせる方が好きなので、今後は Scribes を使うことにしようかな。というかね、やっぱこの検索と置換と行ジャンプのインターフェースは素晴らしいよ。このためだけに今までのスタイルを変えてもいいと思ったな。これまでは vim からごにょごにょやるスタイルだったのだが、今後はターミナルとエディタを行ったり来たりするという昔のスタイルに逆戻りか。
とりあえずしばらく使ってみてからだな、結論を出すのは。
一つわかったことは、俺は PyGTK が絶対に好きになれそうもないということだけだ。
とりあえず、次みたいなメソッドを書いてみた。
def key_release_event_cb(self, entry, key_press):
is_python = self.filename.endswith('.py')
cur = self.text_buffer.get_iter_at_mark(self.text_buffer.get_insert()).copy()
cur.backward_line()
cur.forward_to_line_end()
if is_python and key_press.keyval == keysyms.Return:
while cur.get_line_offset() != 0:
cur.backward_char()
c = cur.get_char()
if c == ':':
self.text_buffer.insert_at_cursor(u' ' * self.text_view.get_tabs_width())
return True
elif c != ' ':
break
これを editor.py の Editor クラスに追加して __init__ 内で key_release にコネクトすれば、一応 : の出てきた次の行は自動でインデントされる。自分以外の環境の事を何一つ考えていないハックなので、これを適用して何か問題が起きても俺は知らないです、ハイ。
しかし Python でもこれだけ快適なエディタが書けるのは驚きだな (PyGTK の功績も大きいだろうが) 。やはりこれから先は Python のような言語でアプリケーションを書くのが主流になっていってほしいね。