Ответ phils очистил меня, но в итоге я использовал несколько иной подход. Я отправляю его как отдельный ответ для документации. Вот моя строка автосохранения:
;; Put autosave files (ie #foo#) in one place
(defvar autosave-dir (concat "~/.emacs.d/autosave.1"))
(defvar autosave-dir-nonfile (concat "~/.emacs.d/autosave.nonfile"))
(make-directory autosave-dir t)
(make-directory autosave-dir-nonfile t)
(defun auto-save-file-name-p (filename) (string-match "^#.*#$" (file-name-nondirectory filename)))
(defun make-auto-save-file-name ()
(if buffer-file-name (concat autosave-dir "/" "#" (file-name-nondirectory buffer-file-name) "#")
(expand-file-name (concat autosave-dir-nonfile "/" "#%"
(replace-regexp-in-string "[*]\\|/" "" (buffer-name)) "#"))))
Создание отдельного каталога для не посещаемых файловых буферов является необязательным в этом контексте; они могли бы также пойти в централизованном месте (в данном случае autosave-dir
). Также обратите внимание, что я должен выполнить некоторую базовую очистку имени файла, если имя временного буфера - это что-то вроде «* foo / bar *» (со звездами и / или слэшами).
Наконец, можно автоматически включить автосохранение в буферах временного режима определенных режимов, используя что-то вроде
(add-hook 'org2blog/wp-mode-hook '(lambda () (auto-save-mode t)))
These strtotime inputs work very well:
strtotime( "next monday" );
strtotime( "previous monday" );
strtotime( "today" );
strtotime( "next friday" );
strtotime( "previous friday" );
All you need to do is to wrap the logic inside some if statements.