7

有没有办法在模式行的右端定位一个值?

根据我目前的理解,如果值的大小增加,模式线会将其值“推”得更远。如果某些值从右侧开始并扩展到中间,我会更喜欢它。

我已经尝试过像 powerline 这样的解决方案,但它们似乎相当分散注意力,并且在设置上更复杂,以显示与标准模式线相同数量的信息。

4

2 回答 2

6

这是一种方法。诀窍是添加空格,直到行尾减去显示文本所需的位置(从 emacs wiki 上的 powerline 代码中提取):

(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"
   )
)
于 2014-04-09T18:50:27.500 回答
2

据我所知,这是不可能通过直接定制普通模式线来实现的。您可以修改mode-line-format变量以在某种程度上改变其外观和内容,但就文本对齐的内置结构而言,我相当确定您仅限于通过任一填充控制模式线组件的宽度或截断。mode-line-format然而,在变量中使用一些巧妙的技巧(使用(:eval ...)和/或(list ...)形式)来实现所需的结果可能是可行的。您可以查阅有关变量的Emacs Lisp 参考手册页面以mode-line-format了解详细信息。除此之外,您还必须使用一些第三方软件包。

于 2013-05-27T22:07:39.163 回答