SVX日記
2005-04-11(Mon) TrueLegacyGraphics参上!!
ココんトコ、アレコレとEmacsをイジり回している。いやなにmicroEmacsならX68K時代から使っているし、Windows上で愛用しているエディタもEmacs風キーバインドにしているし、窓使いの憂鬱も常に常駐させていたりするので、いまさらカーソル移動で手がツッたりしているワケではない。少し自分風のカスタマイズを加えている程度……というか、逆にオイラはこれまでTeraTerm(SolarisやCygwin)上でEmacsを使うのは敢えて避けていたのだ。
というのも、職場でプログラムを作るときはSolaris上で行うことが多いので、viに指を慣らしておくコトが必要だったのだ。オイラは「viは使っても心はEmacs」という考えなので、ある程度viを使い慣れた今も、viは非常にうっとおしいエディタだという認識は変わっておらず、この4年間あまり積極的にviのコマンドを覚えてこなかった(今でも'c'さえ使わないし)。しかしながら、それでもその環境に慣れてきてしまったため、気がついたらプライベートでコードを書くときもCygwin上でviを使っていた……うわ、最悪やッ!!
しかし、今後Linuxな仕事をするならば、viを強要される環境からオサラバできるワケだ。そんなら、早いトコ自分の指に合わせた「.emacs」を作っておくべきだし、少しはEmacsLispもカジっておくべきだ。なんといっても、マルチバッファ、マルチウィンドウ、キーボードマクロ、インクリメンタルサーチは強力な味方だし、気に入らなければ自分でマクロを作ってしまえばよいのだ。ヒャッホゥ!!
(global-set-key "\C-h" 'delete-backward-char)
(global-set-key "\C-z" 'scroll-down)
(global-set-key "\M-\C-z" 'scroll-other-window-down)
(global-set-key "\M-g" 'goto-line)
(require 'wb-line-number)
(wb-line-number-toggle)
(setq truncate-partial-width-windows nil)
(require 'redo)
(global-set-key "\C-xu" 'redo)
どーしても、ワンキーでサクサクとバッファ切り替えがしたいのだが、どーやらそーゆー機能はないらしい。んじゃ、作ってしまえ!! ということで、いまさらではあるがLispデビューである。オイラの初めてのLispコードだ。インデントのつけ方さえワカっとらんが、笑うな!!
(global-set-key "\C-j" 'switch-to-last-buffer)
(defun switch-to-last-buffer (arg)
"Switch to last normal buffer"
(interactive "p")
(dolist (b (buffer-list))
(
if(string-match "*" (buffer-name b))
() (setq last-buffer b)
)
)
(switch-to-buffer last-buffer)
)
これだけでもかなり使いやすくなったのだが、emacsを起動するつもりでviを起動してしまったり、emacsって打つのが面倒だからって、emというエイリアスを作ったら、rmと間違えて2回もファイルを消してしまったり……しばらくは指も頭もトッチラかりそうである。
それはそうと、以前に作ったイニシエのグラフィック描画関数ライブラリLegacyGraphicsであるが、なんとなくTkを使ってホントのグラフィックを扱えるようにしてみた。その名もTrueLegacyGraphics。メソッドは以前のLegacyGraphicsと同様のものを用意したので、頭のrequireにTrueを追加するだけで以前のプログラムはそのまま動作する。素晴らしきかなオブジェクト指向、である。
なんとなく、以前のCurse版のLegacyGraphicsにもlineメソッドを追加してみたりしたが、やっぱりグラフィック画面のがイイ。グラフの説得力が圧倒的に違う(あたりまえか……)。思わず嬉しくなって、昔のパソコンのサンプルデモにありがちな絵を出してしまう。ウハウハ。というワケで、ファイル一式を置いておこう。