試しに Scribes のプラグインを書いてみた。各種のプログラミング言語ごとにオートインデントとかの機能を提供するプラグインなんだけど、とりあえず Python 版だけ書いた。ってか、俺の場合あとは C と Makefile だけで事足りそうだなあ。
インストール手順は以下の通り。
で、今のところ出来ることは
ぐらい。適当に書いたのでバグが残っているけど、まあそこは直していくつもり。あとは何がいるかなあ。クラスブラウザはあると便利かもしれないし、 pychecker との連携もあると嬉しいかもしれない。
ちなみにプラグインの書き方はまだオフィシャルなドキュメントがないけど、まあソースを読めば大体わかる。とりあえずサンプル、ってか上記のプラグインのコードの一部。
name = 'Language Mode Plugin'
authors = ['Kuwata Chikara <lawless-882@jeans.ocn.ne.jp>']
version = 0.1
autoload = True
class_name = 'LanguageModePlugin'
short_description = 'Support functions for programming.'
long_description = '''Support functions for programming.'''
class LanguageModePlugin(object):
def __init__(self, editor):
self.__editor = editor
self.__manager = None
def load(self):
from SCRIBES.utils import get_language
from SCRIBES.info import home_plugin_folder
import LanguageMode
from imp import load_source
lang = get_language(self.__editor.uri)
if lang != None:
mode = lang.get_id() + 'Mode'
module = load_source(mode, home_plugin_folder + '/LanguageMode/' + mode + '.py')
cls = getattr(module, mode)
self.__manager = cls(self.__editor)
return
def unload(self):
if self.__manager != None:
self.__manager.destroy()
return
コードの要素を上から見ていくと
とりあえずここまでは必須の要素っぽい。
それで肝心のプラグイン本体なんだけど、これは
のが条件で、あとはお好きなように。ここから先は Scribes というよりも PyGtk, PyGObject, PyGtkSourceView といった巨大パッケージの知識の世界だ。ちなみに Gtk は「カーソルのある行の文字列を取得」などといった処理が一発で出来るメソッドがないなど、非常に使いにくい部分がある。さすがに Scribes の作者も頭にきたのか、SCRIBES.utils, SCRIBES.lines などでユーティリティ関数が多く定義されている。
それにしてもだ、俺はプラグインが嫌いなんじゃなくて vim スクリプトや elisp が嫌いだったんだなあ。
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。