Как заставить Emacs создавать промежуточные каталоги - при сохранении файла?
Есть ли способ создать дерево папок в emacs - аналогично
mkdir -p
в bash?
В принципе - я хочу, чтобы emacs создавал все intemediate dirs - если они не были - когда я сохраняю файл.
Ответ 1
Функция make-directory делает это. Ваша конкретная проблема может быть решена следующим образом:
(add-hook 'before-save-hook
(lambda ()
(when buffer-file-name
(let ((dir (file-name-directory buffer-file-name)))
(when (and (not (file-exists-p dir))
(y-or-n-p (format "Directory %s does not exist. Create it?" dir)))
(make-directory dir t))))))
Ответ 2
Вы также можете просто выполнить mkdir -p из emacs с помощью M-!, чтобы получить командную строку оболочки.
Затем все, что вам нужно сделать, это поместить вашу структуру каталогов в:
M-! dir1/dir2/dir3/dir4.....
Ответ 3
(make-directory DIR и необязательные PARENTS)
Создайте каталог DIR и любые несуществующие родительские директории.
Если DIR уже существует как каталог, выдается сообщение об ошибке, если не установлен параметр PARENTS.