2

文字列入力を引数として受け取るインタラクティブな関数がたくさんあります。

(defun zb/run-cmd-X (arg1 argN)
  (interactive "Marg1: Marg2: ")
  ;;; some logic

そのような関数のそれぞれを作る方法zb/run-cmd-1..入力引数の独自の独立した履歴をzb/run-cmd-N持っていますか? そして、この履歴がEmacsの起動間で永続化されていれば完璧です(理想的には外部ファイルのどこかに;同期のため)。arg1...argN

これに対する解決策はありますか?

ありがとう

4

1 に答える 1

3

基本的に、これらの各関数が受け入れる引数に関するドキュメントread-from-minibufferを読みたいと思います。もちろん履歴をサポートする機能は他にもありますが、これらの 2 つは標準/基本オプションです。completing-readHIST

永続性はsavehistライブラリによって提供され、ファイルに書き込みますsavehist-file(デフォルトでは ですが、そのファイルが存在する場合は代わりに~/.emacs.d/history古いファイルが使用されます。この場合、ファイルの名前を最新の優先パスに変更することをお勧めします)。~/.emacs-history

次に例を示します。

(defvar my-ssh-history nil)

(eval-after-load "savehist"
  '(add-to-list 'savehist-additional-variables 'my-ssh-history))

(defun my-ssh (args)
  "Connect to a remote host by SSH."
  (interactive
   (list (read-from-minibuffer "ssh " nil nil nil 'my-ssh-history)))
  (let* ((switches (split-string-and-unquote args))
         (name (concat "ssh " args))
         (termbuf (apply 'make-term name "ssh" nil switches)))
    (set-buffer termbuf)
    (term-mode)
    (term-char-mode)
    (switch-to-buffer termbuf)))

(savehist-mode 1)
于 2013-11-07T13:35:10.457 に答える