有没有办法让(优秀的)Emacs Powerline中的某些元素被截断?我特别想到默认模式行的which-func-mode
部分。只查看函数名或节名的前N个字符(在Org模式下),定义N就好了。
一个侧面问题是:如果框架太窄(例如,80个字符宽),我们是否可以简单地将组件禁用(即不显示)?
答案 0 :(得分:2)
通常,您可以相应地自定义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)))
此方法适用于标准模式行,以及支持标准模式行数据的任何模式行扩展包。我知道Smart Mode Line可以,但我不确定Powerline。我没有使用这些软件包。