Questions tagged «frames»

是Emacs的图形系统级“窗口”。它最初包含一个窗口,通常还包含一个菜单栏,工具栏和回显区域。


3
如何打印Emacs框架?
该函数ps-print-buffer-with-faces打印一个Emacs缓冲区。有没有一种方法可以打印带有多个缓冲区的框架?我想同时使用RPN堆栈和跟踪缓冲区打印Emacs calc框架。
28 frames  calc  print 

2
缓冲区,文件,窗口和框架之间有什么区别?
当本网站提出问题,人们有时谈论的“窗口”时,他们的意思是“帧”和“缓冲区”或“文件”时,他们的意思是“窗口”。所以: 问: 缓冲区,文件,窗口和框架之间有什么区别? (我本着“ 问答”组合的精神提出这个问题:促进正确使用这些术语。)
28 buffers  window  frames  files 

6
在窗口布局之间切换
当我配置自定义布局时,只需要临时全屏浏览一个文件,一旦我想要该布局,就需要手动对其进行重排。 我想要一个插件/省略号代码来保存我的布局并能够在保存的布局之间切换。 更新 谢谢你们。 abo-abo建议使用获胜者模式真的很好,我让它在零时间工作。 wasamasa建议了一堆我从未听说过的出色插件,并提供了有关如何使用寄存器的信息。 Jordon Biondo向我解释了如何使用寄存器,而这些东西实际上正是我想要的最简单的方法。 谢谢你们。
24 window  package  frames 

2
在框架底部显示单词列表?
我想在我打开的每个emacs框架的底部(尽管顶部也可以)水平地在单独的行上显示3个单词列表。我已经想到了6种方法来解决这个问题,但是它们都有问题: 我的第一个想法是在模式行中添加一行,但是AFAICT不能在模式行中使用换行符,它只能转换为“ ^ J”。 我的第二个想法是使该行横穿屏幕顶部并使用标题行,但它也不支持换行符。 我可以在窗口的最后三行上显示一个叠加层,但是要使其健壮起来似乎很困难-当点到达该叠加层时(而不是窗口的实际末端),需要触发滚动,并且我必须不断地重新定位覆盖层,因为覆盖层位于文本空间而非窗口空间中。 我可以尝试在框架的底部制作专用窗口。我已经尝试过对此进行编码,但是它也不是很健壮,当框架中已经包含分割窗口并且我不得不将Cx,1重新绑定到可忽略的自定义版本的delete-other-windows时,它似乎无法正常工作我的特殊窗户,我肯定还有其他情况。同样,当一个帮助窗口弹出时,它会垂直弹出,因为它认为已经存在一个水平分割线(从技术上讲,它已经存在了,但仅显示一个单行窗口)。 我可以为此设置一个专用框架,但随后我的配置将无法在终端模式下运行,并且必须编写脚本窗口管理器以使其保持在屏幕底部,以使其无法选择,而不影响布局,等等等 我可以将3行的文本直接插入minibuffer中。我得到了部分工作,可以增加迷你缓冲区以适应3条线,并可以显示它们。但是,任何时候只要回显任何消息,这些行就会消失,直到我发出另一个命令,然后它们才重新出现。理想情况下,这3条线和回波区域不会重叠,因此我可以看到两者。如果我可以可靠地过滤哪些消息进入回显区域,这将不太烦人-我在EmacsWiki上找到了一个解决方案,但它似乎不适用于源自emacs C源代码的消息(特别是我想获得删除文件保存消息,因为我经常在计时器上自动保存)。 对于上下文,我的目标是不断显示当前缓冲区中最常用的单词,当前缓冲区中最近的单词以及当前缓冲区中最近使用的单词。我打算能够通过语音命令将它们插入缓冲区。因此,我可以说“最近2”,并让它从单词最近点的列表中选择第二项并插入。我只关心单词列表对于我当前正在编辑的缓冲区是否可见。我不想使用各种代码完成模式使用的弹出窗口,因为我需要列表始终可见。

3
使用Emacs守护程序时终端和图形框架的不同主题
我正在尝试在Emacs24中实现以下行为: 我喜欢使用不同的主题(日光与日光),具体取决于我是否通过端子架连接到正在运行的服务器 % emacsclient -t 或带有gtk框架 % emacsclient -c 这似乎在较旧的Emacs中有效,但是当前的Emacs我找不到方法。我经常检查SO(例如/programming//q/18904529/152439和答案)和邮件列表(例如https://lists.gnu.org/archive/html/help-gnu-emacs/ 2012-02 / msg00227.html和https://lists.gnu.org/archive/html/help-gnu-emacs/2012-02/msg00237.html)。 我当前的设置如下所示: (add-to-list 'custom-theme-load-path "~/.emacs.d/themes/solarized") (if (daemonp) (add-hook 'after-make-frame-functions (lambda (frame) (select-frame frame) (if (display-graphic-p frame) (load-theme 'solarized-light t) (load-theme 'solarized-dark t) ) ) ) (load-theme 'solarized-light t) ) 问题是,如果我打开一个图形框架,然后使用打开一个终端框架emacsclient -t,则主题solarized-dark会同时应用于新的终端框架(正确)和已经打开的图形框架(应该保留)最好保持原样)。当终端框架已经打开并且我使用打开一个新的图形框架时,就会发生这种情况emacsclient -c。 编辑:万一当前的Emacs24无法做到这一点,是否有任何计划使其再次成为可能?
20 frames  daemon  themes 


2
您可以使用本机elisp激活/(启用)emacs吗?(例如,在另一个程序中工作时)
我想强迫emacs激活,在某些情况下被收购,以“窃取”焦点。例如,当我完成org-Pomodoro或重要的约会提醒时。 现在,我正在寻找一种“本机”方式来这样做,只是为了减少外部依赖性。(只要Linux对我来说可以,跨平台会更好)。 从emacs内部技术上可行吗? [编辑]解决方案: 如果使用GUI,则效果很好: (x-focus-frame nil) [出于历史原因...]我尝试过: 框架可见性(无效) (make-frame-visible) 并且: (make-frame-invisible) (make-frame-visible) 但是这些似乎仅在Emacs已被激活时才起作用。 框架抬起(无效) 降低帧似乎实际上隐藏了emacs。 (lower-frame) 但是,从定时器提高帧数却没有。即,什么都没有发生。 (raise-frame) 似乎在提高它之前缺少“ activate-emacs”。 [关于外部解决方案的注意事项] 当前,作为一种(解决方法/解决方案?),我使用了一些elisp: (call-process "activateEmacs") 以及相应的bash脚本:(您可能需要先在系统上安装xdotool) #!/bin/sh sleep 0.5 xdotool search --onlyvisible --class emacs windowactivate
16 frames 

1
如何阻止帧被分割?
目前,我使用ruby和rspec。我真的很喜欢在另一个监视器中显示我的编译缓冲区的单独框架的想法。我当前的设置使用“代码”框架(在其中进行实际工作)和“测试结果”框架(在其中查看rspec结果) 问题是,当我尝试在“测试结果”框架中打开某些编译错误或文件时,窗口会在该框架中拆分。我真正想做的是在“代码”框架中打开它。 我已经使用了option display-buffer-reuse-frames。我也尝试设置编译结果窗口dedicated,但是每当emacs尝试打开一个新窗口时,都会创建一个新框架(如果使用Helm,这特别糟糕。) 有一些简单的方法可以做到这一点吗?
16 window  frames 

2
如何在Emacs GUI模式下切换全屏(“全屏”选项在Kubuntu中为灰色)?
这是一个基本的问题,但我真的很茫然(谷歌搜索只显示了OS X的解决方案)。 直到最近,我主要使用终端模式(我可以使用桌面环境的Shell窗口全屏快捷方式进行全屏显示),但是切换到GUI,因为我希望能够选择字体。 有什么建议么?最大化使用窗口标题栏中的按钮并不能全屏显示-我仍然可以看到任务栏和窗口标题栏。 编辑:我应该添加该Full-screen选项(即,右键单击窗口标题栏后)为灰色(请参见下面的展览1)。同样,更改下的Full Screen设置会Special Applications Settings自动恢复为禁用状态。 该No border选项的确提供了部分解决方案,因为它使窗口标题栏消失(尽管任务栏仍然可见)-如果有一种方法可以轻松地使用键盘快捷键并给定KDE和emacs来切换全屏,那就太好了。可定制性,由于我是KDE和emacs n00b,我认为这很可能。 展览1: 更新: 为了防止我可能无意中自定义了任何设置,我最终重置了kde桌面(通过删除相关的血浆文件)。重新启动后,我可以使用Special Window Settings对话框Force将应用程序置于全屏模式(可通过Alt+F3-> More actions-> 调用菜单来访问该对话框Special window settings)。(下面的截图。) 在一般意义上,我还是更喜欢辣椒粉的答案,因为它是更好的解决方案,它涉及创建全局键盘快捷键。只是想包括我的回旋修复程序,以防其他人也发现他们的emacs拒绝接受full screen全局键盘快捷键。 从Special Window Settings对话框强制全屏模式:

3
有什么方法只能运行一次挂钩函数吗?
上下文 我正在使用after-make-frame-functions挂钩在emacs客户端/服务器配置中正确加载主题。具体来说,这是我用来创建代码段(基于此SO答案): (if (daemonp) (add-hook 'after-make-frame-functions (lambda (frame) (select-frame frame) (load-theme 'monokai t) ;; setup the smart-mode-line and its theme (sml/setup))) (progn (load-theme 'monokai t) (sml/setup))) 问题 当emacsclient -c/t开始新的会话时,不仅在新框架中,而且还在所有先前存在的框架(其他emacsclient会话)中执行挂钩,这会产生非常烦人的视觉效果(在所有那些框架中再次加载主题)。更糟糕的是,在终端中已经打开的客户端的主题颜色就完全混乱了。显然,这仅在连接到同一emacs服务器的emacs客户端上发生。出现这种现象的原因很明显,该挂钩在服务器上运行,并且其所有客户端都受到影响。 问题 有什么方法可以只执行一次此功能,也可以不使用钩子而获得相同的结果吗? 部分解决方案 由于@Drew的回答,我现在有了这段代码。但是仍然存在问题,一旦在终端中启动客户端会话,GUI将无法正确加载主题,反之亦然。经过大量测试,我意识到其行为取决于首先启动哪个emacsclient,并且丢弃各种东西后,我认为它可能与所加载的调色板有关。如果您手动重新加载主题,那么一切都可以正常工作,这就是为什么每次在钩子上调用函数时都不会出现此行为的原因,就像在我的初始配置中一样。 (defun emacsclient-setup-theme-function (frame) (progn (select-frame frame) (load-theme 'monokai t) ;; setup the smart-mode-line and its theme (sml/setup) …

1
永远不要在ediff中创建框架
总的来说,我不喜欢框架。现在,我正在使用 (setq ediff-window-setup-function #'ediff-setup-windows-plain) 确保ediff启动时不会创建框架。 但是,某些命令(例如,ediff-show-registry仍然)会打开新的框架。 有什么办法可以完全禁止在其中创建帧ediff?
14 frames  ediff 

2
将窗口“弹出”到框架中
通常,我的窗口会自动拆分,直到我任意决定当前帧没有足够的房地产。发生这种情况时,我手动删除一个窗口,创建一个框架,然后切换到该删除的窗口。如何编写实现此目的的elisp函数? 我试过了: (defun pop-window-into-frame () (interactive) (delete-window) (make-frame-command) (switch-to-prev-buffer)) 但是由于某种原因,这并没有达到我的预期。
13 window  frames 

1
切换缓冲区时,请防止emacs自动切换帧
当我切换缓冲区时,如果该缓冲区已经打开,则emacs将切换到现有框架。 我发现在使用ido切换时如何防止这种情况: (setq ido-default-buffer-method 'selected-window) 但这还不够:例如,如果有一个Lisp错误,emacs将自动切换到* Backtrace *缓冲区,并在已经打开时切换帧。 有没有办法完全阻止emacs切换到现有框架?

3
删除帧时杀死缓冲区
当我关闭框架时,我希望它的缓冲区被杀死。 如果缓冲区显示在其他框架中,则不应终止该缓冲区。 如果在一帧中显示多个缓冲区,则不执行任何操作。 进行此设置的好方法是什么?
12 buffers  frames 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.