【问题标题】:How to set a key binding to make Emacs as transparent/opaque as I want?如何设置键绑定以使 Emacs 像我想要的那样透明/不透明?
【发布时间】:2011-02-25 12:06:00
【问题描述】:

我想在 Emacs 中有一个命令,让它像我想要的那样不透明/透明(请参阅神话般的 question 指出在 Emacs 中可以实现透明,以及链接到那里的 EmacsWiki 页面有我在下面使用的代码)。

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)

当我在 Emacs 中时,我想做的是能够选择 % 透明度。

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

如果不能那样做,那么可能是一个命令,如果我键入“Cc t”,它会询问我提供活动窗口不透明性的数字(对于使用“Mc”的非活动窗口也是如此t")。

提前感谢您的宝贵时间:)

以下只是一些不重要的cmets,如果您不感兴趣,请不要回答:

我真的很想要这个,因为当我告诉我的主管我正在学习 Emacs 时,他说 TexShop 好多了,而且我使用的是 80 年代的软件。我告诉他 Emacs 的奇妙之处,他说 TexShop 拥有一切,甚至更多。除了透明度之外,我匹配了他向我展示的所有内容(尽管他无法匹配来自 preview-latex 的 Emacs 中的预览)。偶然发现了透明的东西,现在想给他看看 Emacs 的规则!

我想这对你们中的一些人来说是小菜一碟,尽管如果我花足够的时间来学习 lisp 或阅读周围的东西,我可以完成它,但我不是程序员,我只使用 Emacs和一周的mac。我已经迷路了!所以提前感谢您的时间和帮助 - 我最终会学习 lisp!

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

【问题讨论】:

  • 你的老板错了:Emacs 是not from the 80's。 Microsoft Windows,那是software from the 80's!并不是说我反对 80 年代的软件(嗯,一般来说)。 ;)
  • 哈,比那个还要老!好吧,也许这就是他如此喜欢他的 mac 的原因......无论如何,TexShop 中的所有功能都只是从 Emacs 中“复制”的。他们只是为已经存在的东西收费,甚至更好,因为很多人都在为它做出贡献(为了?)。给我几个月的时间,当我对 Emacs 足够好时,他会后悔没有使用它! :P
  • 对不起,我意识到我给软件的名称错误。我的主管使用 TextMate,而不是 TeXShop....
  • 来自 TextMate 网站 (macromates.com):TextMate 由一个因易用性和优雅而被吸引到 Mac 平台的壁橱 UNIX 极客创建,被称为 Emacs 和OS X 并导致无数对 Windows 和 Linux 端口的请求,但 TextMate 仍然是 Mac 专用的,这就是我们喜欢它的方式!

标签: emacs transparency elisp key-bindings


【解决方案1】:
(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

编辑:

使效果在会话间持续存在的一种方法是启用desktop-save-mode 并将default-frame-alist 添加到desktop-globals-to-save,通过自定义界面: M-x customize-group RET 桌面.

【讨论】:

  • 抱歉,我还有一个问题......我可以用这个替换上面的整个代码还是需要在我的 .emacs 文件中保留部分代码?
  • 我在没有其他任何东西的情况下对其进行了测试,然后使用我包含在问题中的代码的前三行,然后是前四行(最后三行不包括具有 ;; 的行)。在所有这些选项中,问题是当我关闭 Emacs 并返回到完全不透明(第一个选项)或定义的 85 50 时,我所做的任何设置都会消失。我确实保存了选项,默认采用框架参数,但是当我关闭程序时,设置仍然丢失。有没有办法使设置永久化或者我做错了什么?
  • 我希望我在编辑中回答了您的问题。请注意,我还对代码进行了一些更改。
  • 我会再试一次并回复你。我下载了 lisp 手册并试图弄清楚如何更改代码,但我想这不是半小时的事情......
  • 好的,所以我使用您编写的代码,然后选择框架作为默认值并保存选项,使用菜单选项而不是您在底部写的,只是因为我仍然不擅长快捷方式,我想尝试使用菜单单击选项以防万一。嗯,它确实奏效了!现在完美了,非常感谢!我将使用您在编辑中所说的内容。我也很高兴有两个代码,所以我可以比较两者并开始学习 lisp。非常感谢您的帮助,谢谢:)
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
相关资源
最近更新 更多