如何设置一个键绑定,使Emacs像我想要的那样透明/不透明?

Viv*_*ivi 4 emacs transparency elisp key-bindings

我希望在Emacs中有一个命令,使其成为我想要的不透明/透明(请参阅指出透明度在Emacs中可行的神话般的问题,以及链接在那里的EmacsWiki页面,其中包含我在下面使用的代码).

EmacsWiki代码设置"Cc t"以打开和关闭先前设置的透明度:

;;(set-frame-parameter (selected-frame) 'alpha '(<active> [<inactive>]))  
(set-frame-parameter (selected-frame) 'alpha '(85 50))  
(add-to-list 'default-frame-alist '(alpha 85 50))

enter code here(eval-when-compile (require 'cl))  
(defun toggle-transparency ()  
(interactive)  
(if (/= 
    (cadr (find 'alpha (frame-parameters nil) :key #'car)) 
    100)  
   (set-frame-parameter nil 'alpha '(100 100))
 (set-frame-parameter nil 'alpha '(85 60))))  
 (global-set-key (kbd "C-c t") 'toggle-transparency)
Run Code Online (Sandbox Code Playgroud)

我想做的是能够在Emacs中选择%透明度.

如果可能的话,我想要一个命令,我输入例如活动帧的"Cc t N"(其中N是%opaqueness),然后是非活动窗口的"Mc t N".

如果不能这样做,那么可能是一个命令,如果我键入"Cc t",它会询问我给出活动窗口不透明的数字(对于使用"Mc t"的非活动窗口,相同) .

在此先感谢您的时间 :)

如果您不感兴趣,以下只是一些对回答问题不重要的评论:

我真的很想要这个,因为当我告诉我的主管我正在学习Emacs时他说TexShop要好得多,我使用的是80年代的软件.我告诉他有关Emacs的奇迹,他说TexShop拥有所有这些以及更多.除了透明度之外,我将他展示给我的所有内容都匹配(尽管他无法与预览乳胶中的Emacs内部预览相匹配).我偶然发现了透明度的东西,现在我想向他展示Emacs的规则!

我想这对你们中的一些人来说将是一块蛋糕,即使我能够完成它,如果我花了足够的时间来学习lisp或阅读,我也不是程序员而且我只使用Emacs和mac一个星期.我已经迷路了!所以,提前感谢您的时间和帮助 - 我最终将学习lisp!

编辑:我的主管使用TextMate,而不是TeXShop.现在更有意义吗?

hua*_*uan 6

(defun set-frame-alpha (arg &optional active)
  (interactive "nEnter alpha value (1-100): \np")
  (let* ((elt (assoc 'alpha default-frame-alist))
         (old (frame-parameter nil 'alpha))
         (new (cond ((atom old)     `(,arg ,arg))
                    ((eql 1 active) `(,arg ,(cadr old)))
                    (t              `(,(car old) ,arg)))))
    (if elt (setcdr elt new) (push `(alpha ,@new) default-frame-alist))
    (set-frame-parameter nil 'alpha new)))
(global-set-key (kbd "C-c t") 'set-frame-alpha)
Run Code Online (Sandbox Code Playgroud)

使用C-c t的有效框架,并C-u C-c t在非活动帧.

编辑:

使效果的一种方式保持多个会话是使desktop-save-mode添加default-frame-alistdesktop-globals-to-save,通过定制界面: M-x customize-group RET desktop.