Function Emacs函数打开文件[当前日期].tex

Function Emacs函数打开文件[当前日期].tex,function,emacs,elisp,Function,Emacs,Elisp,我正在尝试编写一个使用当前日期创建文件的emacs函数。我是emacs的新手,所以在变量和语法方面遇到了麻烦。以下是我所拥有的: (defun daily () (interactive) (let daily-name (format-time-string "%T")) (find-file (daily-name))) 我不明白emacs是如何充分利用变量来将时间字符串设置为变量并将该变量输入find file函数的。感谢您的帮助 (defun daily ()

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

(defun daily ()
    (interactive)
    (let daily-name (format-time-string "%T"))
    (find-file (daily-name)))
我不明白emacs是如何充分利用变量来将时间字符串设置为变量并将该变量输入find file函数的。感谢您的帮助

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

每天调用
M-x
会打开一个文件“12:34:56.tex”。

有些地方括号太少,有些地方括号太多。这是您的函数的正确版本:

(defun daily ()
  (interactive)
  (let ((daily-name (format-time-string "%T")))
    (find-file daily-name)))
特别注意,表达式
(每日名称)
试图用该名称调用函数;要访问变量
daily name
的值,只需自己编写它的名称,不带括号

还请注意,在这种特殊情况下,您可以完全不使用变量:

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

以他人的话为基础:

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

  • 不同格式的字符串,它给出日期而不是时间(我想这是您想要的)
  • 指定目录(
    ~/
    )——如果您不这样做,您会得到到处都是的文件,这取决于您调用函数时当前的工作目录
  • 更好的函数名
(defun daily-tex-file ()
  (interactive)
  (let ((daily-name (format-time-string "%Y-%m-%d")))
    (find-file (expand-file-name (concat "~/" daily-name ".tex")))))