如何创建实际存储以后会话信息的函数? (elisp的)

时间:2013-02-19 08:41:46

标签: list emacs save elisp

我想让用户选择将内容添加到列表中,然后将其保存以供进一步的会话使用。如何在elisp中执行此操作?

(setq smart-pair-alist
      '(("(" . ")")             ; key 0
        ("[" . "]")             ; key 1
        ("{" . "}")             ; key 2
        ("\"" . "\"")           ; key 3
        ))

(defun smart-pair-adder (open close &optional mode)
  (add-to-list 'smart-pair-alist `(,open . ,close)  t)
  )

(smart-pair-adder "a" "b")

smart-pair-alist评估为:

(("(" . ")") ("[" . "]") ("{" . "}") ("\"" . "\"") ("a" . "b"))

非常好,它增加了,但如何保存?

2 个答案:

答案 0 :(得分:1)

通常,对于这样的事情,保存变量的内容并在将来的会话中加载它并不是最好的方法。 (属于此类别的事情包括迷你缓冲区命令历史记录,搜索历史记录等。)

相反,用户通常会有一个 init文件,其中可以放置如下函数调用:

(smart-pair-adder "a" "b")

这有很多原因:

  • 如果使用的软件包更改了变量的内容或格式
  • ,那么将来是安全的
  • 它更健壮。如果某个变量以某种方式获得了错误的值,那么该值将在保存后永久保留
  • 维护(如编写注释)手动维护文件而不是自动生成的保存文件更容易
  • 使用自定义(一种专为交互式配置Emacs变量而设计的系统),保存文件效果不佳。该系统有自己的存储和恢复变量的方式。

答案 1 :(得分:0)

如果用户使用savehist-mode保存迷你缓冲区历史记录,您可以使用savehist-additional-variables预先设定任意变量的值:

(add-to-list 'savehist-additional-variables 'smart-pair-alist)