有没有办法在(优秀的)Emacs Powerline 中截断一些元素?我在想,特别是which-func-mode
在默认模式行的部分。最好只看到函数名或节名的前 N 个字符(在 Org 模式下),N 被定义。
一个附带的问题是:如果框架太窄(例如 80 个字符宽),我们是否可以简单地禁用组件(即不显示)?
一般来说,您可以which-func-format
相应地自定义,例如:
(setq which-func-format
`("["
(:propertize (:eval (my-which-func-current))
local-map ,which-func-keymap
face which-func
mouse-face mode-line-highlight
help-echo "mouse-1: go to beginning\n\
mouse-2: toggle rest visibility\n\
mouse-3: go to end")
"]")
)
my-which-func-current
相应地截断当前函数名称的函数在哪里:
(defun my-which-func-current ()
(let ((current (gethash (selected-window) which-func-table)))
(if current
(truncate-string-to-width current 20 nil nil "…")
which-func-unknown)))
这种方法适用于标准模式线,以及任何支持标准模式线数据的模式线扩展包。我知道智能模式线可以,但我不确定电力线。我不使用这些软件包中的任何一个。