Emacs折叠模式错误

for*_*ger 3 emacs elisp dot-emacs emacs23

我希望能够使用http://www.emacswiki.org/emacs/FoldingMode中的folding.el提供的emacs折叠模式

我将以下内容放在我的.emacs文件中:

(setq load-path (cons (concat (getenv "HOME") "/.emacs.d") load-path))
(load "folding")
(folding-mode-add-find-file-hook)
(folding-add-to-marks-list 'latex-mode   "%{"  "%}"  nil t)
Run Code Online (Sandbox Code Playgroud)

然后,当我选择一个区域并运行时

M-x folding-fold-region
Run Code Online (Sandbox Code Playgroud)

我收到了错误

Wrong type argument: char-or-string-p, nil
Run Code Online (Sandbox Code Playgroud)

Jér*_*dix 5

有两个问题:

  • 你不必为latex-mode重新声明标记,因为这已经在folder.el第4411行完成了.因此你应该删除该行(folding-add-to-marks-list 'latex-mode "%{" "%}" nil t)

  • 未启用Wrong type argument: char-or-string-p, nil时会出现错误folder-mode.默认情况下,添加行(folding-mode-add-find-file-hook)不足以打开文件folder-mode.要打开folder-mode,还应将folded-file局部变量放在要打开的文件的第一行中,例如,在lisp中:

;; -*- folded-file: t; -*-

有了这个局部变量,并(folding-mode-add-find-file-hook)在命令.emacsfolder-mode已启用,打电话时你没有问题了folding-fold-region一个区域.

做一个C-h f folding-mode-add-find-file-hook RET有这个机制的解释.