Emacs 默认用 mode-line 显示 buffer 的信息, 但是大部分的信息都是没用的, mode-line 还会在上下分屏的时候, 干扰代码的上下对比.
其实, 我们编程的时候就关心几个必要的信息: 时间、位置、当前模式, 最多再加一个 git 分支.
几年前写了 MinibufferTray, 但是这个插件的实现方式依赖 PyQt5, 而且只在 Linux 下可以正常工作.
今天按照 MinibufferTray 的设计, 重新写了一个新的插件 AwesomeTray, 不再需要 PyQt5, 所有平台都可以工作.
安装好以后, mode-line 默认隐藏, 只在右下角显示必要的信息, 当你在操作 minibuffer 的时候右下角的信息自动隐藏, 当你退出 minibuffer 时, 右下角信息又会自动显示.
安装方法
- 下载 AwesomeTray 里面的 awesome-tray.el 放到 ~/elisp 目录
- 把下面的配置加入到 ~/.emacs 中
(add-to-list 'load-path (expand-file-name "~/elisp"))
(require 'awesome-tray)
(awesome-tray-mode 1)
16 个赞
要是能自定义(一个plist
之类的,而不是改代码),甚至能读取其它包对mode-line
的设置就好了。
如果显示的和 mode-line 那么长的信息, 那和 mode-line 有啥区别?
3 个赞
不像mode-line
那样到处飘啊。。。主要是有的包在mode-line
显示的东西还是有点用,自定义还是可以的吧。
这个在minibuffer
有信息,且超过一行的时候,右下角是怎样的?
现在自定义还没做, 不过也非常简单, 就是字符串.
不想自定义的目的就是不想像 mode-line 那么复杂占地方.
minibuffer 超过一行的时候, 右下角就暂时不显示, 因为平常在 buffer 的时候, minibuffer 很少会超过一行
guo
7
我觉得搞一个快速打开/关闭mode line的快捷键比这个要实用.
1 个赞
自己修改 mode-line 和 mode-line-inactive 的高度就行了.
mode-line 来回开关的意义是什么? 要不就是喜欢 mode-line , 要不就是不喜欢 mode-line, 我不觉得来回开关 mode-line 有啥意义.
1 个赞
能不能让多个window共用一个modeline啊,分屏的话,一个window带一个modeline确实影响。
Reddit这里有一些想法,但是都不太好用的样子
awesome-tray刚试了一下,可我经常用minibuffer显示eldoc,闪来闪去不太能接受的了,先试用几天吧。
xuuexu
11
对了,好像有个bug,刚开emacs,在scratch界面,C-x 2
然后C-x 3
Debugger entered–Lisp error: (wrong-type-argument wholenump -15) make-string(-15 32)
(format “%s %s” (make-string (- (window-width) (length tray-info) awesome-tray-info-padding-right) 32) tray-info)
(insert (format “%s %s” (make-string (- (window-width) (length tray-info) awesome-tray-info-padding-right) 32) tray-info))
(save-current-buffer (set-buffer " Minibuf-0") (erase-buffer) (insert (format “%s %s” (make-string (- (window-width) (length tray-info) awesome-tray-info-padding-right) 32) tray-info)))
(let* ((tray-info (awesome-tray-build-info))) (save-current-buffer (set-buffer " Minibuf-0") (erase-buffer) (insert (format “%s %s” (make-string (- (window-width) (length tray-info) awesome-tray-info-padding-right) 32) tray-info))))
你用一下最新版, 看看有没有问题, 我中午的时候最后一版这种问题都被我排除了.
(setq mode-line-format nil)
就能关掉。
有两个问题不知道是不是我个人的配置问题,
elisp运行 message
函数就变成下面的样子了
还有一个就是分裂窗口的时候,右下角的信息总是显示在最左边的buffer下面
第二个问题, 我已经在最新版版本 (0.4) 中修复了.
第一个问题, 你先更新到 0.4 以后再测试测试, 看看是否还有问题?
第一个问题的重现方式详细写一下, 我没看懂你怎么弄出这种效果来的.
我在 spacemacs 中同时使用了 awesome-tab 和 awesome-tray,去掉了 frame-title 和 mode-line:
(set-frame-parameter (car (frame-list)) 'undecorated t)
(setq-default mode-line-format nil)
(除了 awesome-tray 的配置与主题,跟外观有关的改动就这两句。)
目前的问题是,tab 那一行最右边显示为一条红带,长度会随着 tab 的数量变化。切换了不同组的 tabs,目测 tab 与红色条带的距离是固定的长度。
1 个赞
抱歉没有表达清楚.
就是简单的在*scrach*
buffer 里面运行emacs-lisp函数message
向echo-area输出字符。(最新测试emacs26和27中都会出现)
我知道你的现象, 我的意思, 你能不能把每一个操作的命令都写一下?
我这样好重现你的问题.
你第一次说的时候, 我在 ielm 里面测试 message 没有问题.
我想知道你在 scratch buffer 里面执行的是什么命令? eval-buffer 还是别的?