gpt4 book ai didi

emacs - 具有输入历史记录的 Elisp 交互功能

转载 作者:行者123 更新时间:2023-12-04 04:35:17 32 4
gpt4 key购买 nike

有一堆交互式函数将字符串输入作为参数:

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

如何制作每个这样的功能 zb/run-cmd-1 .. zb/run-cmd-N自己的 输入参数的独立历史 arg1...argN ?如果此历史记录在 Emacs 启动之间保持不变(理想情况下在外部文件中的某个位置;用于同步),那将是完美的。

有没有现成的解决方案?

谢谢

最佳答案

基本上你想阅读 read-from-minibuffer 的文档。和 completing-read关于 HIST每个函数都接受的参数。当然还有其他功能支持历史记录,但这两个是标准/基本选项。

持久性由 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)

关于emacs - 具有输入历史记录的 Elisp 交互功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19836120/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com