windows emacs windows-shell windows-explorer

windows - ¿Cómo crear un atajo contextual de shell con el botón derecho "editar con Emacs"?



windows-shell windows-explorer (8)

Al igual que la respuesta de políglota, pero no hay necesidad de iniciar un servidor o cualquier otro desastre.

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT/*/shell] [HKEY_CLASSES_ROOT/*/shell/openwemacs] @="&Edit with Emacs" [HKEY_CLASSES_ROOT/*/shell/openwemacs/command] @="C://Program Files (x86)//Emacs//bin//emacsclientw.exe --alternate-editor=/"C://Program Files (x86)//Emacs//bin//runemacs.exe/" -n /"%1/"" [HKEY_CLASSES_ROOT/Directory/shell/openwemacs] @="Edit &with Emacs" [HKEY_CLASSES_ROOT/Directory/shell/openwemacs/command] @="C://Program Files (x86)//Emacs//bin//emacsclientw.exe --alternate-editor=/"C://Program Files (x86)//Emacs//bin//runemacs.exe/" -n /"%1/""

Notepad ++ agrega automáticamente un atajo de shell para que cuando estés en el Explorador de Windows, puedas hacer clic con el botón derecho en un archivo y seleccionar "editar con Notepad ++". ¿Cómo puedo hacer lo mismo con emacs? Estoy usando GNU Emacs 22.3 para Windows.


Aquí hay otra forma de hacer lo mismo. Funciona en WinXP y Vista.

Agregue esto a su registro:

edit-with-emacs.reg

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT/*/shell/Emacs] @="Edit With &Emacs" [HKEY_CLASSES_ROOT/*/shell/Emacs/command] @="Wscript.exe C://emacs//emacs-22.3//bin//launch-emacs-client.vbs /"%1/""

Coloque este archivo en su directorio emacs bin:

launch-emacs-client.vbs

Set objShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") If WScript.Arguments.Count = 1 Then strComputer = "." Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2") Set colItems = objWMIService.ExecQuery("Select * From Win32_Process") Dim isRunning isRunning = False For Each objItem in colItems If InStr(objItem.CommandLine, "emacs.exe") Then isRunning = True End If Next If isRunning Then objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/emacsclientw.exe -n """ & WScript.Arguments(0) & """") Else objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/runemacs.exe """ & WScript.Arguments(0) & """") End If Else objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/runemacs.exe") End If

Nota: el instalador W32 ejecuta un script similar en la instalación.


Con un poco de adición, también es posible abrir el directorio actual en emacs haciendo clic en el fondo.

<<<Code as posted by polyglot>>> [HKEY_CLASSES_ROOT/Directory/Background/shell/openwemacs] @="Open &with Emacs" [HKEY_CLASSES_ROOT/Directory/Background/shell/openwemacs/command] @="C://Program Files//emacs-24.2//bin//runemacs.exe /"%V/""

Aquí %V es el directorio actual. Usar %1 no funciona en este caso.



Esto es lo que tengo, similar a alguna otra respuesta. Cree un nuevo archivo de texto en algún lugar llamado emacs-conextmenu.reg (o cualquier cosa que desee.reg) y pegue lo siguiente en:

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT/*/shell] [HKEY_CLASSES_ROOT/*/shell/openwemacs] @="&Edit with Emacs" [HKEY_CLASSES_ROOT/*/shell/openwemacs/command] @="Absolute//Path//to//your//emacs//bin//emacsclientw.exe -n /"%1/"" [HKEY_CLASSES_ROOT/Directory/shell/openwemacs] @="Edit &with Emacs" [HKEY_CLASSES_ROOT/Directory/shell/openwemacs/command] @="Absolute//Path//to//your//emacs//bin//emacsclientw.exe -n /"%1/""

Cambia la ruta a la ruta de instalación de tu emacs; recuerde escapar de la "/" (siempre que tenga /, cámbielo a //).

Ahora todo lo que tiene que hacer es hacer doble clic en este archivo * .reg en el explorador y tendrá una entrada en el menú contextual de emacs para cualquier archivo y directorio (¡si es un fanático!).

Tenga en cuenta que para que esto funcione, debe iniciarse emacs y también debe iniciarse emacs-server (inicio de servidor Mx). Sugeriría iniciar emacs con Windows y poner (server-start) en su archivo .emacs.

Como beneficio adicional, el siguiente fragmento de autohotkey ( http://www.autohotkey.com/ ) iniciará el archivo seleccionado en emacs cuando presione ctrl-shift-enter en el explorador de Windows. Esto podría ser más útil si edita muchos archivos en emacs, pero no necesariamente quiere navegar al archivo en emacs.

#IfWinActive ahk_class CabinetWClass ^+Enter:: GetText(tmpvar) If (tmpvar != "") Run, d:/path/to/your/emacs/bin/dir/emacsclientw.exe -n "%tmpvar%" Return Return


Quiero agregar a la respuesta de polyglot anterior: el atajo de AutoHotkey que menciona es muy útil, pero el código está incompleto: la función GetText () fue escrita por alguien en el foro de AutoHotkey ( http://www.autohotkey.com/forum) /viewtopic.php?p=279576#279576 ), y es:

GetText(ByRef MyText = "") { SavedClip := ClipboardAll Clipboard = Send ^c ClipWait 0.1 If ERRORLEVEL { Clipboard := SavedClip MyText = ERRORLEVEL := 1 Return } MyText := Clipboard Clipboard := SavedClip Return MyText } ;to test: #k:: GetText(FileName) msgbox clipboard=%FileName% return

Tenga en cuenta que la demora de ClipWait podría necesitar ser modificada: ¡tuve que configurarlo en 2!


Si no está preparado para el registro, puede hacerlo desde el Explorador de Windows (instrucciones para cualquier editor, no solo para Emacs):

  1. Abra el Explorador de Windows y seleccione la opción de menú Tools/Folder Options...

  2. Haga clic en la pestaña File Types y seleccione la extensión para el tipo de archivo que desea asociar con su editor. Para este ejemplo, usaré la extensión TXT.

  3. Haga clic en el botón Advanced en el marco de detalles para abrir el cuadro de diálogo Edit File Type .

  4. Puede cambiar la acción open actual o especificar una acción nueva como Open with MyEditor .

    Si elige editar, haga clic en el botón Edit... y en el cuadro de texto Application used to peform action , Application used to peform action la ruta completa a su editor, seguido de "%1" . Por ejemplo, C:/SciTe/wscite/SciTE.exe "%1" .

    Si desea crear una nueva acción, haga clic en el botón New... , asigne un nombre a la acción y proporcione la ruta completa a su editor, seguido de "%1" .

  5. Si desea realizar una acción predeterminada para ese tipo de archivo, seleccione la acción, luego haga clic en el botón Set Default .

  6. OK de todos los cuadros de diálogo.

Otra opción sería poner un acceso directo al archivo ejecutable de su editor en su carpeta Send To , %USERSPROFILE%/SendTo . Normalmente creo una nueva carpeta llamada "Editores" y pongo accesos directos a los diversos editores que uso.


Este sitio explica cómo hacerlo con otra aplicación. Solo cambia la ruta y deberías estar todo listo.

Crea esta clave / valor:

[HKEY_CLASSES_ROOT/*/shell/Edit with AppName/command] @=”/”C://Program Files//Notepad2//Notepad2.exe/” /”%1/”"

Aquí hay otra referencia , que es un poco más fácil de seguir.