フレームをグローバルmarkのように使うとか
少し前にグローバルmarkが便利だと気づいたので使っていたんだけど、最近すっかり忘れ去っていたことに気づいて何とかならないかと思ってみた。特にmarkするときは問題ない。(markがあることを思い出しさえすれば)問題は、markしたことを忘れてmarkに直接移動せずに、其のままカーソル移動してしまう所。
メモリ不足気味の脳みそでは、目に入らないものは存在しない。そこで、最近思いついた使い方にフレームを多用するという感じの。フレームはWindowとかの配置も覚えてくれるけど、カーソル位置も覚えているので、globalmarkの変わりフレームを作ってしまう。と言う幹事は同だろうかと思った。フレームは特別なWindow配置を必要とする拡張とか(メーラとかネットインストーラとか)見たいなのを使うときには一応使っていたけど、いいところ2つか3つ。折角フレームのバーを出せるのだから、其れを利用しないてはないなと、何しろいつでも目に入る。しかも変な所に表示するより遥かにコンパクトで無理のない感じ。(始めはグローバルマークを見えるところに出そうかと思ったんだけど辞めた)
ということで、とりあえず、その妄想を実現するべく操作を変える事に。C-x 6 2とかキーが多すぎて常用する気になれないので、C-c fに新規フレーム作成。C-c kでフレーム削除、C-c nでリネームと言う幹事にすることにした。
;;フレームを作る (global-set-key '(#\C-c #\f) #'(lambda(name) (interactive "sName : " :default0 (concat (buffer-name (selected-buffer)) (format nil "~d" (current-line-number)) )) (new-pseudo-frame name))) ;;フレームを消す (global-set-key '(#\C-c #\k) 'delete-pseudo-frame) ;;フレームの名前を変える (global-set-key '(#\C-c #\n) #'(lambda(name) (interactive "sName : " :default0 (concat (buffer-name (selected-buffer)) (format nil "~d" (current-line-number)) )) (rename-pseudo-frame name)))
新規に作ったフレームにFrame1とか名前が付くとどこの位置を覚えたフレームだか分からなくなるのでファイル名とカーソルのある行を標準では入れることに、特別名前が付けたければ変えればいい感じにした。フレームの名前を変えるのは、作ったフレームを移動してしまって違う所を表示しているときには、フレームの名前が変えたくなるだろうと思ってしてみた。フレームの移動は余り人に言えないような変態っぽいキーに配置しているので秘密にしておく。
■妄想とか
今気づいたけど、フレームを切り替える直前に、そのフレームで表示しているファイルと行に名前を切り替えてからフレームを変えるようにすれば一々手作業で変更しなくていいかもしれない。isearchしているときに何か押すと、インクリメンタルにフレームを移動とかそういう感じにしたらもと素敵かもしれない。