كيفية إنشاء اختصار سياق سياق النقر بزر الماوس الأيمن "تحرير باستخدام Emacs"؟

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

سؤال

يقوم برنامج Notepad++ تلقائيًا بإضافة اختصار shell بحيث يمكنك النقر بزر الماوس الأيمن فوق الملف وتحديد "تحرير باستخدام Notepad++" عندما تكون في Windows Explorer.كيف يمكنني أن أفعل الشيء نفسه مع إيماكس؟أنا أستخدم GNU Emacs 22.3 لنظام التشغيل Windows.

هل كانت مفيدة؟

المحلول

وهنا ما قلته - على غرار بعض الجواب الأخرى. إنشاء ملف نصي جديد يسمى في مكان ما ايماكس-conextmenu.reg (أو أي شيء أولا want.reg) ولصق التالية في:

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

وتغيير المسار إلى مسار التثبيت ايماكس الخاص بك؛ تذكر للهروب من "\" (كلما كان لديك \، تغيير ذلك إلى \\).

والآن كل ما عليك القيام به هو انقر نقرا مزدوجا فوق هذا الملف * ريج في مستكشف ويحق لك دخول قائمة السياق لايماكس عن أي ملف وأي دليل (إذا كنت من محبي dired!).

لاحظ أن لهذا العمل، ايماكس لابد من التي ولديه ايماكس خادم أيضا إلى أن تبدأ (M-س خادم البداية). أود أن أقترح ابتداء ايماكس مع ويندوز ووضع (خادم البدء) في ملف .emacs الخاص بك.

وعلى سبيل المكافأة، المقتطف التالي لأوتوهوتكي ( http://www.autohotkey.com/ ) سيبدأ الملف المحدد في ايماكس عند الضغط على Ctrl-التحول الدخول في ويندوز اكسبلورر. قد يكون هذا أكثر مفيد إذا قمت بتحرير الكثير من الملفات في ايماكس لكنه لا يريد بالضرورة للانتقال إلى الملف في ايماكس نفسها.

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

نصائح أخرى

وكما هو الحال الجواب متعدد اللغات، ولكن لا حاجة لبدء الخادم أو أي من تلك الفوضى.

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

إذا لم تكن مستعدًا لاستكشاف الكهوف في السجل، فيمكنك القيام بذلك من مستكشف Windows (تعليمات لأي محرر، وليس فقط Emacs):

  1. افتح مستكشف Windows وحدد Tools\Folder Options... عنصر القائمة.

  2. اضغط على File Types علامة التبويب وحدد الامتداد لنوع الملف الذي تريد ربطه بالمحرر الخاص بك.في هذا المثال، سأستخدم امتداد TXT.

  3. انقر على Advanced زر في إطار التفاصيل لإظهار Edit File Type الحوار.

  4. يمكنك إما تغيير التيار open الإجراء، أو تحديد إجراء جديد مثل Open with MyEditor.

    إذا اخترت التعديل، فانقر فوق Edit... زر وفي Application used to peform action في مربع النص، ضع المسار الكامل للمحرر الخاص بك، متبوعًا بـ "%1".على سبيل المثال، C:\SciTe\wscite\SciTE.exe "%1".

    إذا كنت تريد إنشاء إجراء جديد، فانقر فوق New... زر، وقم بتسمية الإجراء، ثم قم بإعطاء المسار الكامل للمحرر الخاص بك، متبوعًا بـ "%1".

  5. إذا كنت تريد جعل الإجراء هو الإجراء الافتراضي لهذا النوع من الملفات، فحدد الإجراء، ثم انقر فوق Set Default زر.

  6. OK من كل الحوارات

هناك خيار آخر يتمثل في وضع اختصار لملف المحرر القابل للتنفيذ في ملفك Send To مجلد، %USERSPROFILE%\SendTo.عادةً ما أقوم بإنشاء مجلد جديد هنا يسمى "المحررين" وأضع اختصارات لمختلف المحررين الذين أستخدمهم.

ومع القليل من بالإضافة إلى ذلك، كما فتح الدليل الحالي في ايماكس بالضغط على خلفية يصبح ذلك ممكنا.

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

وهنا %V هو الدليل الحالي. باستخدام %1 لا يعمل في هذه الحالة.

<وأ href = "http://www.mydigitallife.info/2007/05/07/add-notepad2-to-windows-vista-or-xp-right-click-context-menu/" يختلط = " noreferrer نوفولو "> هذا الموقع يوضح كيفية القيام بذلك مع التطبيق آخر. مجرد تغيير المسار ويجب أن تكون كل مجموعة.

إنشاء هذا المفتاح / القيمة:

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

وهنا <لأ href = "http://www.howtogeek.com/howto/windows-vista/add-open-with-notepad-to-the-context-menu-for-all-files/" يختلط = "نوفولو noreferrer"> مرجع آخر ، وهو أسهل قليلا لاحقا.

تحقق من التوزيع إيماكس مع ويندوز التكامل: http://ourcomments.org/Emacs/EmacsW32. أتش تي أم أل

والمثبت لها بإنشاء إدخال القائمة إكسبلورر الذي يفعل ما تريد.

وإليك طريقة أخرى لفعل الشيء نفسه.يعمل في ويندوز إكس بي وفيستا.

أضف هذا إلى السجل الخاص بك:

تحرير مع 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\""

ضع هذا الملف في دليل emacs bin الخاص بك:

إطلاق-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

ملحوظة:ال برنامج تثبيت W32 يقوم بتشغيل برنامج نصي مماثل عند التثبيت.

وأريد أن أضيف إلى الجواب متعدد اللغات من فوق - الاختصار أوتوهوتكي يذكر مفيد جدا، ولكن رمز غير كاملة: كتب وظيفة GetText () من قبل شخص ما في المنتدى أوتوهوتكي (<لأ href = "HTTP: / /www.autohotkey.com/forum/viewtopic.php؟p=279576#279576 "يختلط =" نوفولو noreferrer "> http://www.autohotkey.com/forum/viewtopic.php؟p=279576#279576 )، وهو:

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

لاحظ أن ClipWait تأخير قد تحتاج إلى تعديل: اضطررت الى تعيين إلى 2

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top