2012-04-23 102 views
2

我正在编写一个简单的hacky解决方案,以在DesktopAid之上切换«项目»(缓冲区和框架集(X窗口))。我做了一个程序写一个工程文件:Emacs:交互式“f”的默认目录

(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

有已经'eproject'和'perspective',它做类似的东西。 – Reactormonk 2012-04-23 10:38:41

+0

@Tass:还有其他'(交互式“f”)'我可以应用这些知识 – 2012-04-23 11:13:56

回答

6

您可以轻松地推出自己的interactive功能,通过它传递其计算结果为论据,列表表格功能。

在这种情况下,你可以用硬编码的默认目录参数,如果你想避免创建一个新的变量(尽管它似乎是那种你使用一个变量的东西)直接调用read-file-name

例如为:

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

非常感谢!完美工作。 – 2012-04-23 11:21:18