2011-02-16 32 views
3

我想写使用当前日期创建一个文件Emacs的功能。我是emacs的新手,所以我遇到了变量和语法问题。下面是我有:Emacs的函数打开文件[当前日期] .tex

(defun daily() 
    (interactive) 
    (let daily-name (format-time-string "%T")) 
    (find-file (daily-name))) 

我不明白的emacs是如何使用的变量也足以让它设置时间字符串作为一个变量,该变量送入查找文件的功能。任何帮助表示赞赏。

回答

0
(defun daily() 
    (interactive) 
    (let ((daily-name (format-time-string "%T"))) 
    (find-file (format "%s.tex" daily-name)))) 

调用M-x daily现在打开文件“12:34:56.tex”。

0

你有一些地方太少括号,而在其他太多。这是你的函数的修正版本:特别

(defun daily() 
    (interactive) 
    (let ((daily-name (format-time-string "%T"))) 
    (find-file daily-name))) 

注意表达(daily-name)试图通过名字调用一个函数;访问变量daily-name的价值,只是写上了自己的名字,不带括号。

还要注意的是,在这种特殊情况下,可以不完全是一个变量做:

(defun daily() 
    (interactive) 
    (find-file (format-time-string "%T"))) 
1
(defun daily()  
    (interactive)  
    (let ((daily-name (format-time-string "%T"))) 
     (find-file (concat daily-name ".tex")))) 
2

要建立在别人都在说:

(defun daily-tex-file() 
    (interactive) 
    (let ((daily-name (format-time-string "%Y-%m-%d"))) 
    (find-file (expand-file-name (concat "~/" daily-name ".tex"))))) 

主要区别:

  • 不同格式字符串,其给出大TE,而不是时间(这是你想要什么,我认为)
  • 指定目录(~/) - 如果你不把这个,你会得到的文件所有的地方,这取决于当前工作目录是你调用函数
  • 更好的函数名称
相关问题