Emacs:(interactive“f”)的默认目录

3

我正在编写一个简单的hacky解决方案,以在DesktopAid之上在“项目”(缓冲区和帧(X窗口)集)之间切换。我创建了一个过程来编写项目文件:

(defun project-save-as (project-filename)
  "Save the current session to a new project session file."
  (interactive "FProject file to write: ")
  (copy-file project-default project-filename t)
  ; New project is the new current project.
  (write-cur-project-file project-filename)
  (set-variable 'cur-project-filename project-filename)
  (copy-file cur-project-filename project-default t)
 )

每次导航到项目文件所在的目录很麻烦。有没有一种方法可以设置(interactive)的默认目录而不更改全局变量?

更新: 如果有人感兴趣,这是我的(有点傻)代码 → http://paste.lisp.org/display/129116


1
已经有 eprojectperspective,它们做类似的事情。 - Reactormonk
@Tass:还有其他(interactive "f")可以应用这个知识。 - Mischa Arefiev
1个回答

7

通过传递一个表单来评估您函数参数列表,您可以轻松地创建自己的交互式功能。

在这种情况下,如果您想要避免创建新变量(尽管它看起来像是你会使用变量的事情),您可以直接使用硬编码默认目录参数调用read-file-name

例如:

(interactive
  (list (read-file-name "Project file to write: " "~/")))

非常感谢!完美地工作了。 - Mischa Arefiev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接