Reutilização do buffer direcionado do Emacs ao mover para o diretório anterior

3

Estou seguindo esta sugestão da wiki para configurar o Emacs para que eu possa avançar e retroceder no modo direcionado sem criar novos buffers.

Usar a atecla junto com a (put 'dired-find-alternate-file 'disabled nil)configuração permite que eu mude para diretórios sem novos buffers.

Mas o gancho para a ^chave mencionada no wiki não está funcionando para mim. Ir para o diretório anterior com ^ainda abre novos buffers.

Aqui estão as configurações que estou usando no meu .emacs.d/init.el

; dired settings
(require 'dired-x)
(setq dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$\\|^\\.")
(add-hook 'dired-mode-hook (lambda ()
                             (dired-omit-mode 1)))
(setq dired-listing-switches "-aBhl --group-directories-first")
(put 'dired-find-alternate-file 'disabled nil)
(add-hook 'dired-mode-hook
 (lambda ()
  (define-key dired-mode-map (kbd "^")
    (lambda () (interactive) (find-alternate-file "..")))))
z33m
fonte
Seu código para o atalho de teclado parece bom - se estiver abrindo um novo buffer, provavelmente não está sendo reconhecido por algum motivo - se você fizer C-h k ^isso, provavelmente verá que a função padrão dired-up-directoryainda está sendo chamada. Há alguma mensagem de erro? Eu recebo erros ao tentar carregar dired-x-Key sequence * O starts with non-prefix key *
lawlist
Eu acredito que este é o caso. O define-keyatalho de teclado não está sendo reconhecido por algum motivo. Se eu digitar M-x find-alternate-filee ..voltará sem criar um novo buffer. Também C-h k ^mostra que ^está vinculado a dired-up-directory. Eu não recebo nenhum erro embora.
Z33m

Respostas:

2

Basta usar Dired + . Use C-M-Rpara alternar entre reutilizar buffers Dired. Coloque isso no seu arquivo init se desejar reutilizar por padrão:

 (diredp-make-find-file-keys-reuse-dirs)

Isso também cuida ^. Em resumo, não é necessário codificar nada - basta carregar o Dired + .

Desenhou
fonte
Eu instalei o dired + sobre o gerenciador de pacotes. Parece que a versão do dired + que é instalada não possui essa função. Eu poderia estar recebendo versões desatualizadas dos arquivos do pacote? package-archives
Adicionei
@ z33m - Não sei qual poderia ser o problema. Essa função está presente dired+.eldesde 21/01/2010, como mostra o Log de alterações no arquivo. Visite o arquivo e veja se você não encontra essa função. O C-h fnome dessa função realmente diz que não está definido após o carregamento dired+.el? Observe que esta função não é um comando - você não pode invocá-la usando M-x. Mas você pode avaliar o sexp que escrevi usando M-:(ou usando C-x C-e, digamos, *scratch*ou no seu arquivo init).
Drew
Sim, eu estava tentando executá-lo M-x. Eu adicionei este comando ao meu init.ele está funcionando agora. Obrigado!
Z33m