【问题标题】:How to create functions that actually store information for later sessions? (elisp)如何创建实际存储信息以供以后会话的函数? (省略)
【发布时间】:2013-02-19 08:41:45
【问题描述】:

我想让用户选择将内容添加到列表中,然后将其保存以供后续会话使用。如何在 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"))

确实不错,但是怎么保存呢?

【问题讨论】:

    标签: list emacs save elisp


    【解决方案1】:

    通常,对于这样的事情,保存变量的内容并在以后的会话中加载它并不是最好的方法。 (的事情属于这个类别,比如 minibuffer 命令历史、搜索历史等)

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

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

    这有很多好处:

    • 未来是安全的,以防使用的包更改变量的内容或格式
    • 它更健壮。万一变量以某种方式得到错误的值,如果保存该值,该值将永远保留
    • 手动维护的文件比自动生成的保存文件更容易维护(如编写 cmets)
    • custom 是一个为 Emacs 变量的交互式配置而设计的系统,保存文件效果不佳。该系统有自己的存储和恢复变量的方式。

    【讨论】:

    • 重新考虑后我想我同意你的看法!
    【解决方案2】:

    如果用户使用savehist-mode保存minibuffer历史,你可以使用savehist-additional-variables来保存任意变量的值:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2023-03-19
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多