Comment créer un raccourci de shell de contexte avec clic droit & modifier avec Emacs & # 8221 ;?

StackOverflow https://stackoverflow.com/questions/455077

Question

Notepad ++ ajoute automatiquement un raccourci shell pour que, lorsque vous êtes dans l'Explorateur Windows, vous puissiez cliquer avec le bouton droit sur un fichier et sélectionner "modifier avec Notepad ++". Comment puis-je faire la même chose avec emacs? J'utilise GNU Emacs 22.3 pour Windows.

Était-ce utile?

La solution

Voici ce que j'ai - semblable à une autre réponse. Créez un nouveau fichier texte quelque part appelé emacs-conextmenu.reg (ou quelque chose comme vous voulez) et collez le texte suivant dans:

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\""

Changez le chemin du chemin d’installation de votre emacs; N'oubliez pas d'échapper à la " \ " (Chaque fois que vous avez \, changez cela en \\).

Maintenant, il ne vous reste plus qu'à cliquer deux fois sur ce fichier * .reg dans l'explorateur. Vous aurez alors une entrée dans le menu contextuel pour emacs pour tous les fichiers et tous les répertoires (si vous êtes un fan de Dired!).

Notez que pour que cela fonctionne, emacs doit être démarré et emacs-server doit également être démarré (M-x server-start). Je suggérerais de démarrer emacs avec Windows et de mettre (server-start) dans votre fichier .emacs.

En prime, l'extrait suivant pour autohotkey ( http://www.autohotkey.com/ ) va démarrer le fichier sélectionné dans emacs lorsque vous appuyez sur ctrl-shift-entrée dans l’explorateur Windows. Cela pourrait être plus pratique si vous modifiez de nombreux fichiers dans emacs mais ne souhaitez pas nécessairement accéder au fichier dans emacs lui-même.

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

Autres conseils

Tout comme la réponse de polyglot, mais pas besoin de démarrer un serveur ni aucun de ces dégâts.

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\""

Si vous n'êtes pas prêt à modifier le registre, vous pouvez le faire à partir de l'Explorateur Windows (instructions pour tout éditeur, pas seulement Emacs):

  1. Ouvrez l'Explorateur Windows et sélectionnez l'élément de menu Outils \ Options des dossiers ... .

  2. Cliquez sur l'onglet Types de fichiers et sélectionnez l'extension correspondant au type de fichier que vous souhaitez associer à votre éditeur. Pour cet exemple, j'utiliserai l'extension TXT.

  3. Cliquez sur le bouton Avancé dans le cadre de détails pour afficher la boîte de dialogue Modifier le type de fichier .

  4. Vous pouvez modifier l'action open actuelle ou spécifier une nouvelle action telle que Ouvrir avec MyEditor .

    Si vous choisissez de modifier, cliquez sur le bouton Modifier ... , puis dans la zone de texte Application utilisée pour modifier l'action , indiquez le chemin d'accès complet à votre éditeur, suivi de "% 1" . Par exemple, C: \ SciTe \ wscite \ SciTE.exe "% 1" .

    Si vous souhaitez créer une nouvelle action, cliquez sur le bouton Nouveau ... , attribuez un nom à l'action, puis indiquez le chemin complet de votre éditeur, suivi de "% 1 ".

  5. Si vous souhaitez définir une action comme action par défaut pour ce type de fichier, sélectionnez-la, puis cliquez sur le bouton Définir par défaut .

  6. OK dans tous les dialogues.

Une autre option serait de créer un raccourci vers l'exécutable de votre éditeur dans votre dossier Envoyer à , % USERSPROFILE% \ SendTo . Je crée habituellement un nouveau dossier ici appelé "Editors". et mettre des raccourcis vers les différents éditeurs que j'utilise.

Avec un petit ajout, ouvrir le répertoire actuel dans emacs en cliquant sur l’arrière-plan devient possible.

<<<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\""

Ici % V est le répertoire en cours. L'utilisation de % 1 ne fonctionne pas dans ce cas.

Ce site explique comment procéder avec une autre application. Changez simplement le chemin et vous devriez être prêt.

Créer cette clé / valeur:

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

Voici une autre référence , qui est un peu plus facile à suivre.

Découvrez une distribution Emacs avec intégration Windows: http://ourcomments.org/Emacs/EmacsW32. html

Son programme d'installation crée une entrée de menu de l'Explorateur qui fait ce que vous voulez.

Voici une autre façon de faire la même chose. Fonctionne sous Windows XP et Vista.

Ajoutez ceci à votre registre:

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\""

Placez ce fichier dans votre répertoire 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

Remarque: le programme d'installation de W32 exécute un script similaire lors de l'installation.

Je souhaite ajouter à la réponse de polyglot ci-dessus - le raccourci AutoHotkey qu'il mentionne est très pratique, mais le code est incomplet: la fonction GetText () a été écrite par quelqu'un sur le forum AutoHotkey ( http://www.autohotkey.com/forum/viewtopic.php?p=279576#279576 ), et c’est:

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

Notez que le délai de ClipWait pourrait devoir être modifié: je devais le régler sur 2!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top