transient-mark-mode と comment-dwim とボク の1日後
※2009/05/15 00:15追記
http://anoncvs.mew.org/ml/mew-dist-3.1/msg02106.html
から有用な情報が得られました。
引用させてもらいます。
Emacs-21.3.50 だと C-SPC(C-@) が機能拡張していて、 transient-mark-mode => nil でも NEWS> One method is to type C-SPC C-SPC; this enables Transient Mark mode NEWS> and sets the mark at point. The other method is to type C-u C-x C-x. NEWS> This enables Transient Mark mode temporarily but does not alter the NEWS> mark or the region. と、C-SPC, C-SPC と連打したときだけハイライトするなんていうのが ありますよ、と教えて貰ったことがあります。それなりに便利なインタ フェースだと思いました。
ということは,通常状態では,transient-mark-mode を nil にしておいて,
C-SPC C-SPC でマーク-->移動で,リージョンが見えて,
この状態で,M-; すればオッケー牧場ということか。
==> ためしてみたら,オッケーだったよ!!
これで,全てが解決した!! 平和が訪れた!!
ちなみに transient-mark-mode は M-x transient-mark-mode で toggle できる。
また,transient-mark-mode が無効の状態では,常に mark が有効らしい。
いやー,作った物は無駄にはなったけど,いい経験になった。
勉強にもなった。なにより楽しかったし,ドキドキ感もあった!!
※2009/05/14 23:55追記
だめぽ。正常に動作しないぽ。
mark-active 変数関係?
どうも,transient-mark-mode とか,リージョンのことを
もひとつ理解できてないっぽい。
テクなしなボクは,大人しく transient-mark-mode を有効にしておいた方がいいかも。
とりあえず,昨日言っていたことが,できたっぽい。
答えは ソースコード(newcomment.el の comment-normalize-vars 関数)内にありました。
というか,パクってきました。
;; transient-mark-mode が nil だと,M-; で, ;; [un]comment-region が呼ばれないようなので, ;; 一時的に,transient-mark-mode を有効にする。 ;; newcomment.el を参考。 (defun my-comment-dwim (arg) "Just call comment-dwim with transient-mark-mode enabled." (interactive "*P") (unless comment-start (let ((cs (read-string "No comment syntax is defined. Use: "))) (if (zerop (length cs)) (error "No comment syntax defined") (set (make-local-variable 'comment-start) cs)))) (let ((transient-mark-mode t)) (comment-dwim arg))) (global-set-key "\M-;" my-comment-dwim)
comment-normalize-vars 関数を見ると,
どうやら,comment-start という変数を使っているみたい。
で,それが nil なら,read-string 関数を使って,comment-start 変数に,
使用するコメント開始文字を設定している。
だもんで,その一連の処理を行ってから,transient-mark-mode を t にして,
comment-dwim を呼ぶようにしました。
おまけで,開いているバッファのコメント開始文字を変更したい場合は,
M-; して,(setq comment-start nil) すれば,
次回コメントアウトしたときに,何を使うか聞かれる。
また,現在何を使用することになっているかは,comment-start 変数を
見てみればわかる,と。
まとめ
とりあえずできちゃったけど(酸っぱい物が食べたいです),
これで,慣習的に,良いのかどうかはぶっちゃけわからん。
なので,つっこみありましたら,よろしくお願いします。