Функция Emacs для открытия файла [текущая дата] .tex - PullRequest
4 голосов
/ 16 февраля 2011

Я пытаюсь написать функцию emacs, которая использует текущую дату для создания файла.Я новичок в Emacs и поэтому у меня проблемы с переменными и синтаксисом.Вот что у меня есть:

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

Я не понимаю, как emacs использует переменные достаточно хорошо, чтобы заставить его установить строку времени как переменную и передать эту переменную в функцию find-file.Любая помощь приветствуется.

Ответы [ 4 ]

3 голосов
/ 26 февраля 2011

Чтобы основываться на том, что говорят другие:

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

Основные отличия:

  • Строка другого формата, в которой вместо даты указывается дата (я думаю, это то, что вам нужно)
  • указание каталога (~/) - если вы не укажете это, вы получите файлы повсюду, в зависимости от текущего рабочего каталога на момент вызова функции
  • лучшее имя функции
1 голос
/ 16 февраля 2011
(defun daily ()     
  (interactive)     
  (let ((daily-name (format-time-string "%T")))
      (find-file (concat daily-name ".tex"))))
1 голос
/ 16 февраля 2011
(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 голосов
/ 16 февраля 2011

У вас слишком мало скобок в одних местах и ​​слишком много в других. Это исправленная версия вашей функции:

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