2012-03-16 9 views
1

私のemacsウィンドウを透明にする方法を検索します。しかし、それは動作しません。このような 何かに失敗しました:Emacs23はUbuntuで透明にできません(Gnome 3)

(global-set-key [(f8)] 'loop-alpha) 

(setq alpha-list '((100 100) (95 65) (85 55) (75 45) (65 35))) 

(defun loop-alpha() 
(interactive) 
(let ((h (car alpha-list)))    
((lambda (a ab) 
    (set-frame-parameter (selected-frame) 'alpha (list a ab)) 
    (add-to-list 'default-frame-alist (cons 'alpha (list a ab))) 
    ) (car h) (car (cdr h))) 
(setq alpha-list (cdr (append alpha-list (list h)))) 
) 
) 

答えて

0

は、ここで私はあなたがしようとしていた何を考えての作業の実装です:あなたはそれがalpha-listを再定義する書き込みいずれかのバージョンがで非常に奇妙な動作しようとしていること

(global-set-key [(f8)] 'loop-alpha) 

(defvar alpha-list '((100 100) (95 65) (85 55) (75 45) (65 35))) 

(defun next-alpha() 
    (let ((current-alpha 
     (or (frame-parameter (selected-frame) 'alpha) 
      (first alpha-list))) 
     (lst alpha-list)) 
    (or (second 
     (catch 'alpha 
      (while lst 
      (when (equal (first lst) current-alpha) 
       (throw 'alpha lst)) 
      (setf lst (cdr lst))))) 
     (first alpha-list)))) 

(defun loop-alpha() 
    (interactive) 
    (let ((new-alpha (next-alpha)) 
     (current-default (assoc 'alpha default-frame-alist))) 
    (set-frame-parameter (selected-frame) 'alpha new-alpha) 
    (if current-default 
     (setcdr current-default new-alpha) 
     (add-to-list 'default-frame-alist (cons 'alpha new-alpha))))) 

お知らせ複数のフレーム。私はあなたのコードに何が間違っていたのかを説明しますが、正直なところ、それが何をすべきかを考え出すことはできませんでした。最初に(require 'cl)にしておけば、これはやや簡単に書くことができますが、このコードはうまくいくと思います。

+0

ありがとうございました。次に、これを実装する方法は?スピードバーのみが透明になり、メインフレームはまだ不透明です。色のテーマとの競合? – Wilbeibi

+0

コードは、現在のフレームの不透明度を設定します。これは、元の試行が想定していたと思われるものです。 F8を押す前に、現在のウィンドウ(X11のトップレベルウィンドウのように)がメインフレームであることを確認してください。 –

+0

ああ、clは、共通のlispで見つかる関数を提供するライブラリです。彼らはnext-alphaの実装をはるかに簡単にするでしょうし、私は(少なくとも)setcdrが理解しにくいことがあります。これはclコードを使用することで回避できます。 –

関連する問題