emacs と xyzzy の設定とかの話を2件。
[emacs] togge-read-only を設定Linux 上で、バージョン管理に CVS を使っている。 emacs でファイルを開いて read-only にするつもりで C-x C-q と入力すると、 vc-toggle-read-only が動いてしまう。 これはただの toggle ではなくて、 CVS サーバ上のファイルと差分がある時は、 commit してねってな感じで、 更新の説明を入れろと言われる。 私は commit や update は、 間違えないように、コマンドラインから実行することにしているので、 ただ read-only にしてくれれば良いんだってば!という時は、 こういうのはただ邪魔なだけ。 M-x toggle-read-only とするのも面倒くさい。 なわけで、C-x C-q を普通に read-only にしたいなら、 以下を、.emacs に書いておくと良いよ。 (global-set-key "¥C-x¥C-q" 'toggle-read-only) xyzzy でプレフィクスコマンドを設定emacs では、C-x a がプレフィクスコマンドになっていて、 私はこれに色々な関数をバインドしている。 xyzzy では、C-x a は set-variable がバインドされているのだが、 同じキーアサインで動かせるようにしたい。 それには、C-x a をプレフィクスコマンドにしなくては。 意味のわからない方のために書きますと、 emacs では C-x a の次にもう1つキーを押して、 コマンドを実行できるようになっていますが、 xyzzy では、C-x a でコマンドが完結しています。 なので、xyzzy で C-x a に割り振ってあるコマンドをつぶして、 C-x a プラス1でコマンドを実行できるようにしたい、という話。 というわけで、C-x a をプレフィクスコマンドにする方法。 C-x a に新しく作ったキーマップを入れちゃう。 元の C-x a set-variable は C-x a a に入れ直す。 キーマップの作り方はあちこちに出ているんだけど、 新規に major-mode や minor-mode を作成するときの例ばかり。 現在あるプレフィクスの中に、さらにプレフィクスを指定するってのは、 見当たらなかったので、メモってみる。 やり方は以下。 1: (defvar my-xa-map (make-keymap)) 1: キーマップのベクターをとりあえず新規作成 my-xa-map という名前にしてみる 2: 1で作ったキーマップを、my-xa-prefix という関数の中身に入れる この関数も私が勝手につくったもの 3: C-x a が押されたら、2で作った関数が呼ばれるようにする C-x のキーマップであるところの ctl-x-map は既存のもの (C-x のキーアサインは、ctl-x-map に入っているので、 この中の a のアサインを変えると、C-x a が変わる) 4: 元々 C-x a にアサインされていた set-variable を C-x a a に入れる 5: C-x a l が押されたら goto-line 関数が呼ばれるようにする 複数ストロークは (global-set-key '(#¥C-x #¥r #¥w) 'copy-rectangle) こんな風にも設定できるんだけど、 上のように指定すると、 キーバインドの入れ子の様子がわかって、おもしろいなーと思って。 define-key のところで、 (define-key ed::my-xa-map #¥a 'set-variable) こんな感じにパッケージ指定をしておくべきなのかな? そのあたりがまだよくわからない。 goto-line はよく使うんですよ。 デバッガに「○行目がおかしいよー」と言われたときに、 すぐその行に飛びたいでしょ。 キーバインドしておくと、 いちいち M-x goto-line って打たなくても良いんで、 ラクチンです。 vi は苦手だから普段使わないんだけど、 考えてみると、こういうところは vi は便利にできてるなぁ。 さすが。
by xiaoxia
| 2007-09-18 18:08
| プログラム言語
|
カテゴリ
以前の記事
2022年 12月 2021年 05月 2019年 12月 2018年 12月 2018年 05月 2018年 03月 2017年 03月 2017年 02月 2016年 08月 2016年 04月 more... 最新の記事
最新のトラックバック
ライフログ
今読んでる
その他のジャンル
記事ランキング
ブログジャンル
|
ファン申請 |
||