有没有办法在模式行的右端定位一个值?
根据我的理解,如果值增加,模式线会将其值“推”到更远的位置。如果某些值从右侧开始并扩展到中间,我会更喜欢它。
我尝试过类似电力线的解决方案,但它们似乎相当分散注意力,设置更复杂,以显示与标准模式相同的信息量。
答案 0 :(得分:5)
这是一种方法。诀窍是添加空格直到行的末尾减去显示文本所需的位置(从emacs wiki上的电力线代码中提取):
(defun mode-line-fill (face reserve)
"Return empty space using FACE and leaving RESERVE space on the right."
(unless reserve
(setq reserve 20))
(when (and window-system (eq 'right (get-scroll-bar-mode)))
(setq reserve (- reserve 3)))
(propertize " "
'display `((space :align-to (- (+ right right-fringe right-margin) ,reserve)))
'face face))
;; Set the modeline to tell me the filename, hostname, etc..
(setq-default mode-line-format (list
" "
mode-line-mule-info
'mode-line-modified
"- "
'mode-line-buffer-identification
" (%l, %c) "
'mode-line-modes
" -- "
`(vc-mode vc-mode)
;; Fill until the end of line but 10 characters
(mode-line-fill 'mode-line 10)
"Some text"
)
)
答案 1 :(得分:2)
据我所知,通过直接定制普通模式线是不可能的。您可以修改mode-line-format
变量以在一定程度上改变其外观和内容,但就文本对齐的内置构造而言,我相当肯定您仅限于控制模式的宽度通过填充或截断来排列组件。然而,在mode-line-format
变量中使用一些聪明的hackery(使用(:eval ...)
和/或(list ...)
形式)来实现所需的结果可能是可行的。有关详细信息,请参阅Emacs Lisp Reference Manual page on the mode-line-format
variable。除此之外,你必须使用一些第三方软件包。