如何设置密钥绑定以使Emacs像我希望的那样透明/不透明?

如何设置密钥绑定以使Emacs像我希望的那样透明/不透明?,emacs,transparency,elisp,key-bindings,Emacs,Transparency,Elisp,Key Bindings,我希望在Emacs中有一个命令,使其像我所希望的那样不透明/透明(请参阅指出在Emacs中透明是可能的,以及链接在那里的页面,其中包含我在下面使用的代码) EmacsWiki代码设置“C-C t”以打开和关闭先前设置的透明度: ;;(set-frame-parameter (selected-frame) 'alpha '(<active> [<inactive>])) (set-frame-parameter (selected-frame) 'alpha '(85

我希望在Emacs中有一个命令,使其像我所希望的那样不透明/透明(请参阅指出在Emacs中透明是可能的,以及链接在那里的页面,其中包含我在下面使用的代码)

EmacsWiki代码设置“C-C 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)
;;(设置帧参数(选定帧)'alpha'([]))
(设置帧参数(选定帧)'alpha'(85 50))
(添加到列表“默认帧列表”(alpha 85 50))
在此处输入代码(编译时求值(要求“cl))
(取消禁用切换透明度()
(互动)
(如果(/=
(cadr(查找'alpha(帧参数nil):关键点#'car))
100)  
(设置帧参数nil'alpha'(100))
(设置帧参数nil'alpha'(85 60)))
(全局设置键(kbd“C-C t”)'切换透明度)
我想做的是在Emacs中选择%透明度

如果可能的话,我想要一个命令,其中我为活动帧键入例如“C-C t N”(其中N是不透明的百分比),然后为非活动窗口键入“M-C t N”

如果不能这样做,那么可能会有一个命令,如果我键入“C-CT”,它会询问我给出活动窗口不透明性的数字(对于使用“M-CT”的非活动窗口也是如此)

提前感谢您抽出时间:)

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

我真的很想这样,因为当我告诉我的主管我在学习Emacs时,他说TexShop好得多,我使用的是80年代的软件。我告诉他关于Emacs的奇迹,他说TexShop拥有所有这些和更多。我匹配了他给我看的所有东西,除了透明度(尽管他无法匹配preview latex中Emacs内部的预览)。我偶然发现了透明的东西,现在我想向他展示Emacs规则

我想这对你们中的一些人来说是小菜一碟,即使我花了足够的时间学习lisp或四处阅读,我也能完成它,但我不是程序员,我只使用Emacs和mac一周。我已经迷路了!因此,提前感谢您的时间和帮助-我最终将学习lisp

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

(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)
将C-C-t用于活动帧,将C-u C-C-t用于非活动帧

编辑: 使效果在会话间持续的一种方法是启用
桌面保存模式
,并通过自定义界面将
默认帧列表
添加到
桌面全局列表以保存

M-x定制组RET桌面。

你的老板错了:Emacs错了。微软视窗,太棒了!并不是说我反对80年代的软件(好吧,一般来说)哈,比那还老!!也许这就是为什么他这么喜欢他的mac电脑。。。无论如何,TexShop中的所有功能都是从Emacs“复制”而来的。他们只是对已经存在的东西收费,而且收费更高,因为有很多人为此做出了贡献。只要给我几个月的时间,当我对Emacs足够好时,他会后悔没有使用它Psorry,我意识到我给软件起的名字错了。我的主管使用的是TextMate,而不是TeXShop….来自TextMate网站(macromates.com):由一个隐秘的UNIX极客创建,他被Mac平台的易用性和优雅所吸引,TextMate被称为Emacs和OS X的巅峰,并导致无数人同时请求Windows和Linux端口,但是TextMate仍然是Mac的独家产品,这就是我们喜欢它的方式!对不起,我还有一个问题。。。我可以用这个替换上面的全部代码吗?或者我需要在.emacs文件中保留部分代码吗?我测试了它,没有其他任何东西,然后是我在问题中包含的代码的前三行,然后是前四行(最后三行不算有;;)的那一行)。在所有这些选项中,问题是当我关闭Emacs并返回到完全不透明(第一个选项)或定义的85 50时,我所做的任何设置都将消失。我确实保存了选项,采用了帧参数作为默认值,但当我关闭程序时,设置仍然丢失。有没有办法使设置永久化,或者我做错了什么?我希望我在编辑中回答了你的问题。请注意,我还对代码进行了一些更改。我会再试一次,然后再与您联系。我下载了lisp手册并试图找出如何更改代码,但我想这不是半个小时的事情……好吧,所以我使用了您编写的代码,然后选择框架作为默认和保存选项,使用菜单选项,而不是您在底部写的选项,只是因为我还不擅长快捷方式,我想尝试一下菜单点击选项,以防它起作用。嗯,它确实起作用了!现在很完美,非常感谢!我会用你在编辑中说的话。我也很高兴有两个代码,所以我可以比较这两个代码并开始学习lisp。我真的很感谢你的帮助,谢谢:)