模式行显示的问题

时间:2014-02-21 19:02:02

标签: emacs

我在emacs中使用它作为我的模式行,但是      '(:eval (last-dir default-directory))
在消息缓冲区中显示这个     Error during redisplay: (eval (last-dir default-directory)) signaled (void-function last-dir) [594 times]
我怎样才能让它正常工作呢?以及如何将文件大小输入模式行?

(setq-default mode-line-format
 (list
   " "
   mode-line-buffer-identification
   " │ "
   "dir: "
   '(:eval (last-dir default-directory))
    " │ "
   ;; '%02' to set to 2 chars at least; prevents flickering
    "%04l"
     ","
     "%02c"
     " │ "
   '(:eval (format-time-string "%H:%M"))
     " | "
   '(:eval (if (buffer-modified-p) "M" "-"))
   '(:eval (if buffer-read-only    "R" "-"))
   '(:eval (if (window-dedicated-p (selected-window)) "D" "-"))
   " │ "
   mode-line-modes
    ))

2 个答案:

答案 0 :(得分:1)

要显示缓冲区大小(以KB或MB为单位),请在模式行格式中添加“%I”。从文档

  

%i - 打印缓冲区的大小。

     

%I - 与%i一样,但是使用k,M,G等来缩写。

因此,要获取具有目录名称和缓冲区大小的模式行,您可以执行

(setq mode-line-format '((:eval (file-name-nondirectory (directory-file-name default-directory))) ", file is of size %I"))

我建议您阅读模式行格式的文档,执行 Ch v mode-line-format RET 这解释了可用于格式化模式行的各种选项。

答案 1 :(得分:0)

确实没有定义函数last-dir。它是否意味着提取目录名的最后一个组件?如果是这样,你可以改用它:

(:eval (file-name-nondirectory (directory-file-name default-directory)))
<德尔> 您可以使用`buffer-size`函数添加文件大小:(:eval (format "%d" (buffer-size)))

要在模式行中包含缓冲区大小,请使用Iqbal Ansari's answer中所述的%I