Как заставить 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.