I'm using ivy and projectile.
When I search for some file with projectile-find-file, and the file does not exist, I would it to be created.
If it is inside directories that also do not exist, ask if create those directories.
How to do that?
I found that some old code for helm https://www.reddit.com/r/emacs/comments/3m8i5r/helmprojectile_quickly_findcreate_new_file_in/
and that it's already commited https://github.com/bbatsov/helm-projectile/commit/1f0dc42645f006e925718785b9abc6991b7ce2c4.
I have such function for find-file
:
(defun my-create-non-existent-directory ()
(let ((parent-directory (file-name-directory buffer-file-name)))
(when (and (not (file-exists-p parent-directory))
(y-or-n-p (format "Directory `%s' does not exist! Create it?" parent-directory)))
(make-directory parent-directory t))
;; wait until directory is created
(while (not (file-directory-p parent-directory))
(sleep-for 1)))
;; https://stackoverflow.com/questions/2592095/how-do-i-create-an-empty-file-in-emacs/11990694#11990694
(shell-command (concat "touch " (shell-quote-argument (buffer-file-name)))))
(add-to-list 'find-file-not-found-functions #'my-create-non-existent-directory)