【问题标题】:Emacs function to open file [current date].texEmacs 函数打开文件 [当前日期].tex
【发布时间】:2011-02-16 17:05:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: function emacs elisp


    【解决方案1】:

    以其他人所说的为基础:

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

    主要区别:

    • 不同的格式字符串,它给出日期而不是时间(我认为这是你想要的)
    • 指定目录 (~/) -- 如果你不放这个,你会得到到处都是文件,这取决于你调用函数时当前的工作目录是什么
    • 更好的函数名

    【讨论】:

      【解决方案2】:
      (defun daily ()
        (interactive)
        (let ((daily-name (format-time-string "%T")))
          (find-file (format "%s.tex" daily-name))))
      

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

      【讨论】:

        【解决方案3】:
        (defun daily ()     
          (interactive)     
          (let ((daily-name (format-time-string "%T")))
              (find-file (concat daily-name ".tex"))))
        

        【讨论】:

          【解决方案4】:

          括号在某些地方太少,而在其他地方太多。这是您的函数的更正版本:

          (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")))
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-31
            • 2019-06-19
            • 2016-07-08
            • 2018-03-01
            • 2015-07-19
            • 1970-01-01
            • 2013-09-19
            相关资源
            最近更新 更多