1

リストに物事を追加するオプションをユーザーに提供したいのですが、リストはその後のセッションのために保存されます。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"))

それが追加するのは本当に素晴らしいですが、どのように保存するのですか?

4

2 に答える 2

1

ユーザーがミニバッファーsavehist-mode履歴の保存に使用している場合は、を使用savehist-additional-variablesして任意の変数の値を指定できます。

(add-to-list 'savehist-additional-variables 'smart-pair-alist)
于 2013-02-19T09:22:57.593 に答える
1

通常、このような場合、変数のコンテンツを保存して将来のセッションでロードすることは、最善の方法ではありません。(このカテゴリに分類されるの、ミニバッファのコマンド履歴、検索履歴などです。)

代わりに、ユーザーは通常、次のような関数呼び出しを配置できるinitファイルを持っています。

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

これは、いくつかの理由から有利です。

  • 使用するパッケージが変数の内容または形式を変更した場合でも、将来的に安全です。
  • より堅牢です。変数が何らかの形で間違った値を取得した場合、その値は保存されていれば永久に保持されます
  • 自動生成された保存ファイルよりも、(コメントを書く場合のように)手作業で管理されたファイルを管理する方が簡単です。
  • ファイルの保存は、Emacs変数のインタラクティブな構成用に設計されたシステムであるcustomではうまく機能しません。このシステムには、変数を格納および復元する独自の方法があります。
于 2013-02-19T10:43:11.430 に答える