Emacs 模式行显示的问题

Emacs 模式行显示的问题,emacs,Emacs,我在emacs中将此用作我的模式行,但是 ”(:eval(最后一个目录默认目录)) 正在消息缓冲区中显示此信息 重新显示期间出错:(eval(最后一个目录默认目录))发出信号(void函数最后一个目录)[594次] 我怎样才能让它正常工作?如何将文件大小输入到模式行 (setq-default mode-line-format (list " " mode-line-buffer-identification " │ " "dir: " '(:eval (last

我在emacs中将此用作我的模式行,但是
”(:eval(最后一个目录默认目录))

正在消息缓冲区中显示此信息
重新显示期间出错:(eval(最后一个目录默认目录))发出信号(void函数最后一个目录)[594次]

我怎样才能让它正常工作?如何将文件大小输入到模式行

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

确实没有定义函数
last dir
。是否要提取目录名的最后一个组件?如果是这样,您可以使用此选项:

(:eval (file-name-nondirectory (directory-file-name default-directory)))
您可以使用“缓冲区大小”函数添加文件大小:
(:eval(格式“%d”(缓冲区大小)))

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

显示将“%I”添加到模式行格式中的缓冲区大小(以KB或MB为单位)。从文件中

%i——打印缓冲区的大小

%我——像%I,但用k、M、G等来缩写

所以,要获得带有目录名和缓冲区大小的模式行,您可以执行以下操作

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

我建议您阅读模式行格式的文档,执行C-hv
mode-line format
RET,其中解释了可用于设置模式行格式的各种选项。

谢谢,我在每个选项前面加了一个'(:eval,但缓冲区大小是四位数字,请问它们如何显示为“kb”甚至“mb”?