如何让Emacs创建中间dirs - 保存文件?

Ado*_*obe 18 emacs

有没有办法在emacs中创建文件夹树 - 类似于

mkdir -p
Run Code Online (Sandbox Code Playgroud)

在bash?

基本上 - 当我保存文件时,我希望emacs创建所有中间目录 - 如果它们不存在 - .

Vic*_*gin 28

功能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))))))
Run Code Online (Sandbox Code Playgroud)

  • 提示创建新目录是一个好主意,而不是在保存时默认执行. (2认同)
  • aartist:将`(make-directory dir t)`替换为`(when(y-or-np(格式为"创建目录?:%s"dir))(make-directory dir t)) (2认同)
  • @Adobe哦,我明白了.问题是函数`basic-save-buffer`在挂钩运行之前发出错误信号.不确定如何正确处理这种情况.我建议使用函数`write-file`(默认绑定到`Cx Cw`)来保存这样的缓冲区 - 一切都会正常工作. (2认同)