emacs でのソースコードの折り畳み表示
Posted by yoosee on Debian at 2007-01-30 22:00 JST1 folding.el
IRC で「emacs にソースコードの一部を折り畳む機能はあったかな」と言う話題になったのでちょっと探してみた。Debian だと emacs-goodies-el に入っている folding.el だが、これは折り畳みのためにマークをコメントとして入れないといけない。vim fold で言うところの foldmethod=marker 相当になるだろうか。2 outline-minor-mode, hs-minor-mode
ソースコードを syntax を基準にした block 単位で折り畳むのには、emacs21 標準の hs-minor-mode (hideshow.el) や outline-minor-mode が使えそうだ。hs-minor-mode は名前の通り、特定部分を隠したり(hide)表示したり(show)する機能。標準では ruby の folding はサポートされていないが、hs-special-modes-alist に syntax のヒントを与えてやればいいようだ。このあたりはhs-minor-mode で ruby のコメントを折り畳む方法が参考になる。とりあえず
(add-hook 'ruby-mode-hook '(lambda() (hs-minor-mode 1))) (let ((ruby-mode-hs-info '(ruby-mode "class\\|module\\|def\\|if\\|unless\\|case\\|while\\|until\\|for\\|begin\\|do" "end" "#" ruby-move-to-block nil))) (if (not (member ruby-mode-hs-info hs-special-modes-alist)) (setq hs-special-modes-alist (cons ruby-mode-hs-info hs-special-modes-alist))))と言う感じで行けるらしい。outline-minor-mode の方で設定するならcomp.lang.python の Code Folding with Emacs や bookshelf.jp の outline-mode 解説が参考になる。どちらにせよキーバインドが C-c @ C-[osaw] 等と指がつりそうなので、何か使い易いものにバインドしなおすのが良さそうだ。
ちなみに C/C++ で #ifdef ... #endif を隠すには hide-ifdef-mode と言うのが使える。html の特定要素を自動的に fold してくれる html-fold.el と言うのも便利そうだ。
と色々並べてみたものの、 vim の folding にそのまま匹敵しそうな機能は見付けられてない。とは言え hs-minor-mode は便利なので常用することになりそう。
Riece 3.x.x での Ring (Shrink) Buffer
Posted by yoosee on Debian at 2006-08-26 23:42 JST1 Riece - IRC client for emacsen
以前 Riece と Ring Buffer で設定した 1.0.8-1 (sarge) の時には riece-max-buffer-size を設定しておけばよかったのだが、最近の 3.1.0-1 (sid) で効かなくなったと思ったら plugin として独立したらしい。addon に追加する設定が必要になっている。(add-to-list 'riece-addons 'riece-shrink-buffer t) (setq riece-max-buffer-size 4000)設定は ~/.riece/init(.el) に書く。
2 余談: riece で irchat(-pj).el のように横にユーザ一覧・チャネル一覧を出さない設定
Riece でユーザ一覧・チャネル一覧を非表示にし、(チャンネルの発言|入力エリア|他チャネルの発言) の 3画面構成のみにする設定。(setq riece-user-list-buffer-mode nil) (setq riece-channel-list-buffer-mode nil)この前 IRC で聞かれたこともあり、意外と知らない人が多いようなので。
Riece と Ring Buffer
Posted by yoosee on Debian at 2005-05-10 23:42 JST1 Riece と Ring Buffer
Riece で IRC server に接続しっぱなしにしておくと各チャネルの発言表示バッファが無限に膨れて emacs のプロセスサイズが数十MBに膨らんで困ってしまうんだが、あれ、確か Riece って ring buffer 実装してると聞いた気がするのになぁと思って M-x customize-group → riece から色々見てみたら(setq riece-max-buffer-size 6000)のような設定を入れておかないといけなかったらしい。デフォルトだと無制限。~/.riece/init.el に入れて再起動したら emacs が太る問題は発生しなくなってめでたし。
しかし addon の追加方法やキーバインドなんかの情報が Web に無いのは悲しいな。emacs info にはあるんだけど。