2012-09-12 41 views
2

如何獲得切換透明度的函數? 用於切換的可能的候選人可能是0%,85%,100%或者只是那些2 ...在emacs中創建切換功能

(defun transparency-toggle() 
    "Toggle transparency." 
    (interactive) 
    (add-to-list 'default-frame-alist '(alpha 85 50)) 
    ) 

缺少什麼?

回答

2

這裏是一個環形的版本,可以讓你通過各種阿爾法循環,並用前綴參數直接跳轉到最後一個或第一個字母:

(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))) 
+0

最佳版本。謝謝(我也調整它爲背景顏色)。 – PascalVKooten

2

下面的代碼是從Emacs wiki

(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它將是無效的。所以,如果你不想讓代碼:

(set-frame-parameter nil 'alpha '(100 100)) 

您可以檢查它在功能切換透明度

(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))))) 
+0

不知何故,它沒有與「設置幀參數無」工作。我必須做的是使用下面我的答案中的代碼。 – PascalVKooten