¿Cómo configurar emacs como el administrador de archivos predeterminado?


19

Algunos programas como Firefox tienen botones que, al hacer clic, abren un administrador de archivos para explorar archivos. ¿Cómo hago para que se abra en emacs con modo directo en Debian Linux?


99
¿Cuál es tu sistema operativo?
Dibujó el

1
Estoy usando Debian Jessie.
godblessfq

Respuestas:


17

Dependiendo de su entorno de escritorio, el método para establecer una aplicación predeterminada puede diferir. Dicho esto, muchos entornos de escritorio respetan las asociaciones en ~/.local/share/applications/mimeapps.list, donde puede configurar una asociación para los tipos application/x-directoryy / o inode/directory.

Mi mimeapps.listaspecto es ahora ahora:

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

En el mismo directorio tengo un archivo llamado emacs-dired.desktopcon los siguientes contenidos:

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

Cuando mi instancia de Emacs de larga duración ejecuta un servidor ( M-x server-start) y hago clic en, digamos, el icono de carpeta en la lista de Descargas en Icecat diredse abre un nuevo búfer.

Esto realmente funciona para mí ahora. Gracias por hacer la pregunta --- de lo contrario no habría configurado esto.


6

Así es como hacer emacs como administrador de archivos predeterminado en ubuntu.

Primero tenemos que escribir un script que actuará como nuestro administrador de archivos.

#!/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()

Guarda esto como emacsfmen /usr/bin/. Ahora en la terminal en lugar de usar nautiluso nautilus /foo/bar, podemos usar emacsfm o emacsfm /foo/bar.

Ahora tenemos que configurar esto como administrador de archivos predeterminado. Instalar exo-utilsusando

sudo apt-get install exo-utils

y ejecutarlo

exo-preferred-applications

Se abre una nueva ventana. Vaya a Utilidades -> Administrador de archivos -> Otro e ingrese / usr / bin / emacsfm "% s" en él.

Puede ir a las descargas de Chrome y si hace clic show in folderse abrirá emacs dired :-)

Actualizar:

ingrese la descripción de la imagen aquí Referencia: https://help.ubuntu.com/community/DefaultFileManager


Anand, funciona ... pero abre una nueva ventana de emacs cada vez ... es bueno usar emacsclient que abrirá un nuevo búfer en una sesión de emacs ya abierta ...
Madhavan

Creo que la respuesta anterior aborda este punto ...
Madhavan

4

Aunque la pregunta es específicamente para Linux, fui y lo descubrí para Windows (ya que esto me impulsó a encontrar cómo hacerlo por mí mismo).

Curiosamente, no tiene que invocar Dired, simplemente pase una carpeta como archivo. Esto ahorra mucha molestia en Windows, ya %1que pasará c:\Users(por ejemplo) y se romperá \Usi se incluye en la evaldeclaración, mientras que pasarlo como un archivo lo analizará correctamente.

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"

Referencia: Siete foros: cómo cambiar el Administrador de archivos predeterminado


-4

Puedes usar Ranger. Sin embargo, puede configurar xmonad para usar emacs como un valor predeterminado de Windows cuando comience la sesión


77
Amplíe su respuesta para que sea autónoma.
Dan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.