Como alterar o diretório de trabalho atual?

11

como alterar o diretório de trabalho atual do emacs?

set default-directorynão afeta o diretório de trabalho atual do processo emacs, que pode ser verificado via lsof -p pid.

FunkyBaby
fonte
1
Emacs, ser "um tipo de sistema operacional" não tem realmente um único diretório de trabalho atual. Portanto, o que você vê como o cwd do processo é em grande parte acidental e não está realmente documentado. Olhando para o código C do Emacs, tenho a impressão de que atualmente não há como fazer o que você deseja. Você pode, portanto, M-x report-emacs-bugsolicitá-lo como um novo recurso.
Stefan
1
Supondo que você esteja no Linux, você pode forçar a alteração do cwd trabalhando no nível do sistema operacional; consulte unix.stackexchange.com/questions/281994/… para obter detalhes.
TTimo 25/09

Respostas:

4

Eu acho que a única maneira que o Emacs oferece para controlar cwdo processo é o --chdirargumento da linha de comando. Depois que o processo é iniciado, atualmente não há como modificá-lo.

Stefan
fonte
15

M-x cd

Isso deve resolver seu problema.

ksinkar
fonte
1
De acordo com os documentos, cd"Torne o DIR o diretório padrão do buffer atual". Eu presumiria que é um valor por buffer e não se aplicaria a outros buffers existentes ou aos recém-criados.
Macaco
@mojo talvez, mas se você fizer isso com o buffer padrão quando todos os seus outros buffers estiverem fechados, é só isso que resta. Por isso, ainda é bastante prático
Keldon Alleyne
5

C-h f cd:

cdé uma função Lisp compilada interativa em files.el.

(cd DIR)

Tornar DIRo diretório padrão do buffer atual.

Se o seu ambiente incluir uma CDPATHvariável, tente cada uma dessa lista de diretórios (separados por ocorrências de path-separator) ao resolver um nome de diretório relativo. O separador de caminho é dois pontos nos sistemas GNU e GNU-like.

E por favor, explique por que mudar default-directorynão também mudar o "diretório atual" para você: (setq default-directory "/my/favorite/dir").

Desenhou
fonte
Refiro-me ao cwd do processo emacs, que é uma entrada no bloco de controle do processo, e pode ser facilmente verificado via = lsof -p pid =. O = default-directory = é uma coisa interna do emacs. Por que eu preciso alterar o cwd é porque o tmux usa o cwd de um processo em primeiro plano como o diretório inicial de uma nova janela / painel.
precisa saber é o seguinte
Entendo. Então sua pergunta não era clara (e ainda é para mim). O que significa alterar o diretório de trabalho atual do processo Emacs? Deseja alterá-lo após o processo existir? Mais de uma vez?
Tirou
está literalmente mudando o = cwd = do emacs. "Mais de uma vez"? O que você quer dizer com isso. = cwd = não foi projetado para ser uma coisa fixa. Em c, homem 2 chdir. Em python, os.chdir. Eu quero saber como fazer isso no elisp (para emacs).
precisa saber é o seguinte
Veja a resposta de @ Stefan.
Drew