たとえば、透明度を切り替える関数を取得するにはどうすればよいですか?トグルの可能な候補は、0%、85%、100%、またはそれらのうちの2つだけである可能性があります...
(defun transparency-toggle ()
"Toggle transparency."
(interactive)
(add-to-list 'default-frame-alist '(alpha 85 50))
)
何が欠けている?
たとえば、透明度を切り替える関数を取得するにはどうすればよいですか?トグルの可能な候補は、0%、85%、100%、またはそれらのうちの2つだけである可能性があります...
(defun transparency-toggle ()
"Toggle transparency."
(interactive)
(add-to-list 'default-frame-alist '(alpha 85 50))
)
何が欠けている?
次のコードはEmacswikiから抜粋したものです
(eval-when-compile (require 'cl))
(set-frame-parameter nil 'alpha '(100 100))
(defun toggle-transparency (unused)
(interactive "P")
(if (/=
(cadr (frame-parameter nil 'alpha))
100)
(set-frame-parameter nil 'alpha '(100 100))
(set-frame-parameter nil 'alpha '(85 50))))
(global-set-key (kbd "C-c t") 'toggle-transparency)
編集:あなたの質問に答えます。フレームパラメータを初期化しない場合、alpha
それはnillになります。したがって、コードが必要ない場合は、次のようにします。
(set-frame-parameter nil 'alpha '(100 100))
あなたは関数toggle-transparencyでそれをチェックすることができます
(defun toggle-transparency (unused)
(interactive "P")
(let ((curr-alpha (frame-parameter nil 'alpha)))
(if (or (null curr-alpha) (/= (cadr curr-alpha) 100))
(set-frame-parameter nil 'alpha '(100 100))
(set-frame-parameter nil 'alpha '(50 50)))))
これは、さまざまなアルファをループできるリングバージョンであり、プレフィックス引数を指定して呼び出されると、最後または最初のアルファに直接ジャンプします。
(defun ring-transparency (arg)
(interactive "P")
(let* ((ring '(100 50 25 0))
(current (frame-parameter nil 'alpha))
(last (car (last ring)))
(next (if arg
(if (equal current (car ring)) last (car ring))
(or (cadr (member current ring)) (car ring)))))
(set-frame-parameter nil 'alpha next)))