2011-02-16 30 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,而不是時間(這是你想要什麼,我認爲)
  • 指定目錄(~/) - 如果你不把這個,你會得到的文件所有的地方,這取決於當前工作目錄是你調用函數
  • 更好的函數名稱
相關問題