我在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
))
答案 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
。