Emacs功能打开文件[当前日期] .tex

时间:2011-02-16 17:05:19

标签: function emacs elisp

我正在尝试编写一个使用当前日期创建文件的emacs函数。我是emacs的新手,因此我遇到了变量和语法方面的问题。这就是我所拥有的:

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

我不明白emacs如何使用变量足以让它将时间字符串设置为变量并将该变量提供给find-file函数。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:3)

以别人的意见为基础:

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

主要差异:

  • 不同的格式字符串,它给出日期而不是时间(我认为这是你想要的)
  • 指定目录(~/) - 如果你不这样做,你将获得整个地方的文件,具体取决于你调用函数时当前的工作目录是什么
  • 更好的功能名称

答案 1 :(得分:1)

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

现在拨打M-x daily会打开一个文件“12:34:56.tex”。

答案 2 :(得分:1)

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

答案 3 :(得分: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")))