gpt4 book ai didi

emacs - 如何在 elisp defun 中为交互式目录选择设置默认路径?

转载 作者:行者123 更新时间:2023-12-04 11:15:28 24 4
gpt4 key购买 nike

我想要一个函数以交互方式提示输入现有目录,但不是从默认目录开始,我想要一个函数本地默认路径,如 '~/should/start/here/always/in/this/function' 开始于使用时 (interactive "D")我怎样才能做到这一点?我的第一个想法是创建另一个函数,它首先设置 default-dir 然后调用我的原始函数,但这似乎不对,我不确定在这种情况下会如何提示交互。

最佳答案

由于您是自己编写的,因此您可以执行以下操作:

(defun choose-directory (directory)
"sample that uses interactive to get a directory"
(interactive (list (read-directory-name "What directory? "
choose-directory-default-directory)))
(message "You chose %s." directory))

(defvar choose-directory-default-directory "/home/tjackson/work/data"
"Initial starting point.")

哪个使用 interactive 用 lisp 表达式调用 read-directory 获取目录名称(您可能想要添加其他参数,请查看链接/文档)。

你最初的预感也能奏效,不过,正如你所想的那样,并不那么干净。但是,当您不想或不能修改要更改其行为的函数时,它确实可以很好地工作。我在下面包含了该解决方案,以向您展示如何实现它(您没有提到的唯一难题是 call-interactively ):
;; original version of choose-directory, calling (interactive "D")
(defun choose-directory (directory)
"sample that uses interactive to get a directory"
(interactive "DWhat directory? ")
(message "You chose %s." directory))

(defun wrap-choose-directory ()
(interactive)
(let ((default-directory choose-directory-default-directory))
(call-interactively 'choose-directory)))

关于emacs - 如何在 elisp defun 中为交互式目录选择设置默认路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801556/

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