Emacs Powerline中的截断(模式行)

时间:2014-09-08 08:27:47

标签: emacs modeline

有没有办法让(优秀的)Emacs Powerline中的某些元素被截断?我特别想到默认模式行的which-func-mode部分。只查看函数名或节名的前N个字符(在Org模式下),定义N就好了。

一个侧面问题是:如果框架太窄(例如,80个字符宽),我们是否可以简单地将组件禁用(即不显示)?

1 个答案:

答案 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。我没有使用这些软件包。