Questions tagged «mode-line»

模式行是有关窗口中显示的缓冲区的有用的摘要信息,包括其名称和当前模式。它位于MiniBuffer窗口之外的每个Emacs窗口的底部。


8
在模式行中隐藏次要模式列表
我使用了许多次要模式,通常我知道每种主要模式都启用了哪个次要模式。如果我真的想查看完整列表,可以运行C-h v minor-mode-list。 同时,我的模式行确实被阻塞,因此当我垂直拆分帧时,有时我无法读取模式行的末尾。 实际问题:如何禁用模式行中次要模式列表的显示?例如,现在看起来可能像这样: -:--- main.c All (7,12) (C/l FlyC SScr Abbrev Fill) [main] 16:19 0.45 我希望它看起来更简洁: -:--- main.c All (7,12) (C/l) [main] 16:19

1
Emacs中的哪段代码可以使“ line-number-mode”在长行缓冲区中以行号显示“ ??”?
我line-number-mode过去在我的modeline中使用了当前行的指示器,但是对于大文件或长行文件,它开始显示两个问号而不是行号。我进行了一点挖掘,发现虽然在line-number-mode中定义simple.el了可自定义变量(并且可能涉及到的所有逻辑),但都在中定义了xdisp.c。将line-number-display-width变量更改为任意高的数字可能会解决此问题,但是我对代码片段和使它打印两个问号的逻辑更感兴趣。如果你们中的任何一个能为我找到它,甚至解释它背后的逻辑,那将是非常有用的。

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

2
在大型缓冲区中获取“行中行号”的更快方法
line-number-at-pos当点接近缓冲区的末端时,该函数(当重复约50次时)会导致半大缓冲区(例如50,000条线)明显减速。减速是指总计约1.35秒。 与其使用100%的elisp函数对行进行计数并转到缓冲区的顶部,我对一种混合方法感兴趣,该方法利用了负责出现在模式行上的行号的内置C功能。不管缓冲区的大小如何,出现在模式行上的行号都会以光速出现。 这是一个测试功能: (defmacro measure-time (&rest body) "Measure the time it takes to evaluate BODY. http://lists.gnu.org/archive/html/help-gnu-emacs/2008-06/msg00087.html" `(let ((time (current-time))) ,@body (message "%.06f" (float-time (time-since time))))) (measure-time (let* ( line-numbers (window-start (window-start)) (window-end (window-end))) (save-excursion (goto-char window-end) (while (re-search-backward "\n" window-start t) (push (line-number-at-pos) line-numbers))) line-numbers))

2
如何为缓冲区和模式行设置不同的字体大小?
我的init.el文件中包含以下行,以设置所有框架中字体的大小: (push '(font . "DejaVu Sans Mono-10") default-frame-alist) 它可以工作,但我想在所有缓冲区中使用较大的字体,同时在模式行中保留较小的字体(这样它可以容纳更多信息并减少干扰)。想法是自动设置此设置,而不必为每个打开的缓冲区使用Cx C- +更改字体大小。 我正在使用从GNU / Linux系统上的主干编译的Emacs 25.0.50.1。 编辑:刚刚添加了一个答案,显示了如何完成。

4
仅使用模式行制作一个新帧
我想创建一个新的框架,其中只包含模式行。特别是没有文件缓冲区。 我为什么需要这个?我使用组织模式的时钟来计时我的工作。组织模式在模式行中显示我正在处理的当前任务的计时器,并实时更新计时器。我使用的不是Emacs,而是其他应用程序,因此当我切换到其他应用程序时(例如,使用浏览器或终端时),我仍然希望能够查看正在运行的计时器。我以为可以创建一个新框架,但是当我现在单击模式行中的计时器时,.org文件将在新框架中打开(该文件已经调整大小以仅显示模式行),而不是跳回到它在第一帧。 这是我的模式行的外观(蓝色条)-这就是我想要的新框架: (最终,我将不得不弄清楚如何使新框架始终显示在顶部,但这超出了此问题的范围) 如果相关,我将使用OSX。
13 mode-line  osx 

2
我可以在Modeline打火机中使用图像吗?
我的模型太混乱了。我可以显示图片而不显示模式名称吗? 我可以使用unicode表情符号(例如🐍表示Python或🐓表示Coq),但是使用Emacs配置的某些计算机没有预先安装正确的字体(理想情况下,我也想在我正在编写的模式,因此我不能期望用户使用正确的字体设置)。 我尝试将:image显示属性添加到玩具次要模式的Modeline打火机中,但是在Modeline中什么也没出现: (define-minor-mode my/test-mode "Test mode." :lighter (propertize " 🐓" 'display '(image :type imagemagick :file "/home/clement/.emacs.d/rooster.png")))

2
将模式行和迷你缓冲区移到顶部
有什么方法可以将模式行和迷你缓冲区从屏幕的底部移到顶部? 上一个问题涵盖了迷你缓冲区。如何在emacs帧的中间显示迷你缓冲区的内容?,所以这个问题主要是关于模式行。 我刚放下笔记本电脑并弄碎了屏幕,因此在底行看不到太多东西。

5
如何计算包含空格的缓冲区中的字符?
我需要查看输入文字时包含多少个字符。我找到了Emacs Wiki的以下页面:Word count,并且有一个非常接近我需要的解决方案:我使用了该页面的第二个解决方案(在模式行中显示单词数),因为它显示了字符。 但这不算空格。是否有解决方案,将在模式行中显示一定数量的字符(包括空格)?理想情况下,设置目标字符数(但这不是必需的)。
12 mode-line 


1
在活动模式行而不是所有模式行中显示内容
为此,我在模式行中设置了一个组织计时器。 (setq-default mode-line-format (quote ( ;; org-timer (:eval (unless (not org-timer-countdown-timer) (propertize (let* ((rtime (decode-time (time-subtract (timer--time org-timer-countdown-timer) (current-time)))) (rmins (nth 1 rtime)) (rsecs (nth 0 rtime))) (format "🕔 %d:%d" rmins rsecs)) 'face '(:foreground "cyan" :weight bold) 'help-echo "org-timer"))) ))) 我希望此组织计时器指示器仅在活动模式行中显示,而不是在所有模式行中显示。怎么做?
10 mode-line 

1
模式行中有多行?
我想让Modeline不在一行中显示所有信息,而是以两行显示-例如,第一行显示光标信息,缓冲区,文件,git和flycheck,第二行显示模式信息(主要和次要模式)。可以吗?我用Google搜索了bindings.el和emacs C源代码,很遗憾没有找到可以更改modeline的行号的地方,有人可以帮忙吗?谢谢。
10 mode-line 

2
暂时调整模式行和迷你缓冲区中的文本大小?
在共享显示器上或通过屏幕共享(例如Google Hangouts)与他人合作时,我经常使用text-scale-adjust(C-x C-+)让他人更轻松地阅读我的屏幕。 我希望能够在选定的帧中暂时增加模式行和迷你缓冲区的文本大小。这样的能力已经存在吗?如果没有的话,我可能会迷惑于如何自己写它……最终。

1
我可以在回声区显示时钟吗?
在大多数情况下,我的回声区域都空着,而我的每个窗口的Modeline都显示了大量的冗余信息(当前时间,系统负载以及其他各种与缓冲区无关的信息)。 我可以在回声区域中显示当前时间(右对齐)(不使用时)吗?

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.