2011/01/27

frame-arrange.el の保存してある設定を cycle する

こんな感じで。
frame-arrange.el に追加しました。
;; cycle
(defun frange:cycle-arrange-config-gen ()
  (lexical-let ((cur 0))
    #'(lambda ()
        (interactive)
        (let ((conf frange:arrange-config-alist))
          (when conf
            (let* ((len (length conf))
                   (next (if (<= len (+ cur 1))
                             0
                           (+ cur 1))))
              (frange:restore-frame-position-parameter
               (selected-frame)
               (car (nth next conf)))
              (setq cur next)))))))
例えば F12 を連打すると保存してある設定(位置とサイズ)を順番に適用します。
(設定の保存は frange:regist-frame-position-parameter-interactive )
(define-key global-map [f12]
  (frange:cycle-arrange-config-gen))

それと minor-mode-alist への登録を行なうコードがなかったので、追加しました。
(frame-arrange-mode が実行されていると、モードラインに frange と表示される)

余談

let じゃなくて lexical-let で囲まないとってのを、やっぱり忘れてハマります。
あー、あと rlet1, if-let1, let1 がデフォルトで欲しいですね。Emacs Lisp。

入門 GNU Emacs 第3版

0 件のコメント:

コメントを投稿