Abrindo um novo arquivo cujo diretório pai ainda não existe

9

Ao abrir um novo arquivo cujo diretório pai ainda não existe, eu abro uma janela de shell ou um buffer de shell do Emacs e, em seguida, mkdiro diretório nele. Eu acho isso complicado. Existe uma maneira mais fácil?

Tim
fonte

Respostas:

16

Você não precisa fazer isso, se essa é a sua pergunta.

C-x C-f /some/new/directory/newfile.txt

Emacs imprime uma mensagem para que você saiba que o diretório /some/new/directory/ainda não existe: Use M-x make-directory RET RET to create the directory and its parents.

Inserir texto no novo buffer para o novo arquivo newfile.txt.

C-x C-s para salvar o arquivo.

O Emacs pergunta se você deseja criar os diretórios intermediários ausentes (por exemplo, new/directory/você clicou yem "yes".

Não é muito complicado, IMO. A interface do usuário precisa solicitar uma confirmação, pois você pode facilmente digitar o nome de um diretório existente.

Desenhou
fonte
Você também pode usar M-x make-dir tab(testado a partir emacs -Qpara ter certeza de que funciona) RET RETe ele criará o diretório sem aviso adicional.
Jonathan Leech-Pepin
11
@ JonathanLeech-Pepin: Sim, é claro. (É o que a mensagem diz.) Mas se você já abriu o novo buffer de arquivo, tente salvá-lo e confirme a criação do diretório y.
Tirou
7

Para idousuários

  • Faça C-x C-f(que deve chamar ido-find-file) e insira um caminho inexistente.
  • Pressione M-m(mnemônico para obter um mnovo diretório?). Hit RET.
  • Continue digitando o novo nome de arquivo que você deseja criar nesse novo diretório. Hit RET.
Kaushal Modi
fonte
1

Nessa situação, o emacs deveria ter dito algo como:

use M-x make-directory RET RET to create the directory and its parents

É complicado?

Eu vou dizer, sim é.

Nsukami _
fonte
0

Se você realmente deseja find-filecriar diretórios-pai automaticamente quando ainda não existe, faça o seguinte no seu arquivo init.

(defun my-find-file (orig-fun &rest args)
  (let* ((filename (car args))
         (directory (file-name-directory filename)))
    (if (not (file-directory-p directory))
        (make-directory directory t))
    (apply orig-fun args)))

(advice-add 'find-file :around 'my-find-file)

Afinal, o Emacs foi projetado para ser extensível e personalizável.

Referência:

Lei Zhao
fonte