Como definir o emacs como o gerenciador de arquivos padrão?

19

Alguns programas como o Firefox possuem botões que, quando clicados, abrem um gerenciador de arquivos para navegar pelos arquivos. Como faço para abrir no emacs com modo direcionado no Debian Linux?

godblessfq
fonte
9
Qual é o seu sistema operacional?
Tirou
1
Estou usando o debian jessie.
godblessfq

Respostas:

17

Dependendo do ambiente da área de trabalho, o método para definir um aplicativo padrão pode ser diferente. Dito isto, muitos ambientes de área de trabalho respeitam as associações ~/.local/share/applications/mimeapps.list, nas quais você pode configurar uma associação para os tipos application/x-directorye / ou inode/directory.

Minha mimeapps.listaparência se parece agora:

[Default Applications]
application/x-directory=emacs-dired.desktop
inode/directory=emacs-dired.desktop

No mesmo diretório, tenho um arquivo chamado emacs-dired.desktopcom o seguinte conteúdo:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
NoDisplay=true
Exec=emacsclient --eval '(dired "%f")'
Name=Dired
Comment=Emacs Dired

Quando minha longa instância do Emacs executa um servidor ( M-x server-start) e clico em, digamos, no ícone da pasta na lista de Downloads no Icecat, um novo diredbuffer é aberto.

Isso realmente funciona para mim agora. Obrigado por fazer a pergunta --- caso contrário, eu não teria configurado isso.

rekado
fonte
6

É assim que o emacs é o gerenciador de arquivos padrão do ubuntu.

Primeiro temos que escrever um script que atuará como nosso gerenciador de arquivos.

#!/usr/bin/env python
import os
import sys


def main():
    if len(sys.argv) > 1:
        dirname =  sys.argv[1]
    else:
        dirname = '~'
    os.system('emacs --eval \'(dired "{}")\'%'.format(dirname))
    # you can use emacsclient if you are running emacs server

if __name__ == "__main__":
    main()

Guarde isto como emacsfmem /usr/bin/. Agora no terminal, em vez de usar nautilusou nautilus /foo/bar, podemos usar emacsfm ou emacsfm /foo/bar.

Agora precisamos definir isso como gerenciador de arquivos padrão. Instale exo-utilsusando

sudo apt-get install exo-utils

e execute

exo-preferred-applications

Abre uma nova janela. Vá em Utilitários -> Gerenciador de arquivos -> Outro e digite / usr / bin / emacsfm "% s" nele.

Você pode ir para downloads do chrome e, se clicar, show in folderele abrirá o emacs dired :-)

Atualizar:

insira a descrição da imagem aqui Referência: https://help.ubuntu.com/community/DefaultFileManager

ChillarAnand
fonte
Anand, ele funciona .. mas abre uma nova janela emacs toda .. é bom para uso emacsclient que irá abrir um novo buffer em uma sessão emacs já aberta ....
Madhavan
eu acho que, os endereços de resposta anterior este ponto ...
Madhavan
4

Embora a pergunta seja especificamente para Linux, eu descobri isso no Windows (já que isso me levou a descobrir como fazer isso sozinho).

Curiosamente, você não precisa chamar Dired, basta passar uma pasta como o arquivo. Isso economiza muito aborrecimento no Windows, uma vez %1que passará c:\Users(por exemplo) e será interrompido \Use incluído na evaldeclaração, enquanto passá-lo como um arquivo o analisará corretamente.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Drive\shell]
@="Dired"

[HKEY_CLASSES_ROOT\Drive\shell\Dired]
@="Open in Dired"

[HKEY_CLASSES_ROOT\Drive\shell\Dired\command]
@="\"%path/to/emacsclientw%\" %1"

[HKEY_CLASSES_ROOT\Directory\shell]
@="XYplorer"

[HKEY_CLASSES_ROOT\Directory\shell\Dired]
@="Open in XYplorer"

[HKEY_CLASSES_ROOT\Directory\shell\Dired\command]
@="\"%path/to/emacsclientw%\" %1"

Referência: Seven Forums - Como alterar o Gerenciador de Arquivos padrão

Jonathan Leech-Pepin
fonte
-4

Você pode usar o Ranger. No entanto, você pode configurar o xmonad para usar o emacs a padrão do Windows ao iniciar a sessão

mizhac
fonte
7
Expanda sua resposta para torná-la independente.
Dan