3

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

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

4

1 回答 1

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)))

这种方法适用于标准模式线,以及任何支持标准模式线数据的模式线扩展包。我知道智能模式线可以,但我不确定电力线。我不使用这些软件包中的任何一个。

于 2014-09-08T17:02:38.993 回答