« 種々のタグ付け可能なサービスで「タグの引き算」ができるものはあるんだろうか? | Main | MacBook のメモリ増設 »



Wed, 13 Jun 2007

これだけは外せない Lisp Tips on xyzzy #1

Posted at Wed, 13 Jun 2007 in computer::xyzzy

前回xyzzyをクリーンインストールしましたが、カスタマイズされていないノーマルクリーンな xyzzy はメモ帳よりもある意味自分にとって使いづらいので、とりあえずこれだけは必要!という Tips を .xyzzy に記述しました。
以下がそれです。いただいてきたサイトをもう忘れてしまっていたり改変していたりするのですが、特に他の拡張・Tips に依存しているということはないのでコピペで使用できるかと思います。(サイト URL には詳細な解説があったりするのでそちらも是非どうぞ)

;;;;;;;;;;;;;;;;;;
;; ■ バッファをさくさく切り替えたい(改変版)
;; http://www9.ocn.ne.jp/~y-kwsk/luvtechno/xyzzy.html#next-buffer
(setq *next-buffer-in-tab-order* t) ; バッファ移動をタブ順に
(global-set-key #\C-PageUp 'previous-buffer) ; 前のバッファに移動
(global-set-key #\C-PageDown 'next-buffer) ; 後のバッファに移動


;;;;;;;;;;;;;;;;;;
;; ■ フレームの切り替え用ショートカットキー
(global-set-key #\M-S-Right 'other-pseudo-frame)
(global-set-key #\M-S-Left 'previous-pseudo-frame)


;;;;;;;;;;;;;;;;;
;; ■ 行頭まで削除(戻ってKill-line)
;; http://hie.s64.xrea.com/xyzzy/note/edit.html#backward-kill-line
(defun backward-kill-line ()
  (interactive)
  (kill-region (point) (progn (goto-bol) (point))))
(set-extended-key-translate-table exkey-C-backspace #\F13)
(global-set-key #\F13 'backward-kill-line)


;;;;;;;;;;;;;;;;;
;; ■ kill-line(カーソルが行頭にある場合は、いっきに行削除)
;; http://hie.s64.xrea.com/xyzzy/note/edit.html#my-kill-line
(defun my-kill-line (&optional arg)
  (interactive "*p")
  (cond ((bolp)
	 (let ((point (point))
	       (lines (cond ((or (null arg)
				 (<= arg 1))
			     0)
			    (t
			     (- arg 1)))))
	   (kill-region point
			(progn
			  (forward-line lines)
			  (goto-eol)
			  (forward-char)
			  (point)))))
	(t
	 (kill-line arg))))
(define-key *global-keymap* #\C-k 'my-kill-line)


;;;;;;;;;;;;;;;;;;
;; ■ つねにCtrl+TABでタブを挿入
(global-set-key #\C-F15 #'(lambda () (interactive) (insert "\t")))
(set-extended-key-translate-table exkey-C-tab #\C-F15)


;;;;;;;;;;;;;;;;;;
;; ■  ミニバッファ内での編集のときに、行数に応じて自動的にenlarge-windowします
;; http://www1.odn.ne.jp/ymtz/tips.html#minibuf
(defun minibuf-resize ()
  (when (minibuffer-window-p (selected-window))
    (let ((l (save-excursion
               (goto-char (point-max))
               (current-line-number)))
          (h (window-height)))
      (when (< 10 l)
        (setq l 10))
      (unless (= l h)
        (enlarge-window (- l h))
        (refresh-screen)))))
(add-hook '*post-command-hook* 'minibuf-resize)


;;;;;;;;;;;;;;;;;;
;; ■ ステータスバーの表示
(setq *status-bar-format* "cupT")

あくまで自分にとっては必要、という Tips たちです。たとえばステータスバーの表示なんかは今日が何日なのか分からなくなる私には必須なのですが、これが必須な人はほとんどいないような気がします。

他に今回意図的に省いたものとして Winkey,l のカスタマイズ版があるのですが、これについてはそのうち。(ショートカットを Windows に近くするもの)
今現在使っている途中で思い出したりしたものもあるので、とりあえず第1回、ということで、また続きを書く予定です。

« 種々のタグ付け可能なサービスで「タグの引き算」ができるものはあるんだろうか? | Main | MacBook のメモリ増設 »