Skonfiguruj Emacsa w systemie Windows, aby uruchomić pojedyncze wystąpienie i otwierać pliki w istniejącym wystąpieniu

18

Szczególnie interesuje mnie pełna funkcjonalność systemu Windows, w tym:

  • Automatyczne uruchamianie serwera, jeśli jeszcze go nie uruchomiono
  • Jak wywołać emacsa, aby korzystał z serwera (np. Z wiersza poleceń lub narzędzi innych firm)
  • Obsługa menu kontekstowego (np. Kliknij plik prawym przyciskiem myszy i zezwól na przesłanie go do emacsa w celu przeglądania i edycji)

Czy taka pomoc jest dostępna od razu po wyjęciu z pudełka?

cristobalito
źródło

Odpowiedzi:

21

Automatyczne uruchamianie serwera, jeśli jeszcze go nie uruchomiono

To powinno być takie samo dla każdej kompilacji Emacsa. Dodaj ten fragment do swojego .emacslub .emacs.d/init.el.

(require 'server)
(unless (server-running-p)
  (server-start)) 

A potem po prostu uruchom emacsa, uruchamiając runemacs.exeplik wykonywalny dostarczany z kompilacją.

Jak wywołać emacsa, aby korzystał z serwera (np. Z wiersza poleceń lub narzędzi innych firm)

Kompilacja Windows Emacsa zawiera emacsclientw.exeplik wykonywalny w bin/katalogu. Użyj pełnej ścieżki do tego pliku wykonywalnego jako swojego edytora w dowolnych narzędziach stron trzecich, które musisz skonfigurować.

Obsługa menu kontekstowego (np. Kliknij plik prawym przyciskiem myszy i zezwól na przesłanie go do emacsa w celu przeglądania i edycji)

  1. Kliknij plik prawym przyciskiem myszy, wybierz Open With -> Select Default Program.
  2. W wyskakującym oknie przejdź do emacsclientw.exepliku wykonywalnego wspomnianego powyżej i wybierz go.
  3. Jeśli nie chcesz, aby Emacs był domyślny, wykonaj ponownie kroki 1 i 2, wybierając inny program jako domyślny.

emacsclientw.exe teraz będzie zawsze opcją w menu kontekstowym.

Malabarba
źródło
Dzięki - świetna uwaga na temat serwera, nie myślałam.
cristobalito
Jeśli chodzi o emacsclient.exe, czy nie powinien to być emacsclientw.exe? Pomyślałem też, że musisz uruchomić to z flagą -a, aby określić alternatywny edytor, jeśli serwer nie działa.
cristobalito
Aby serwer działał poprawnie z moją konfiguracją, musiałem również dodać zmienną środowiskową, EMACS_SERVER_FILEktóra wskazywała na mój .emacs.d\serverkatalog.
Ryan
@ Ryan Udało mi się to uruchomić bez potrzeby używania zmiennej środowiskowej - wystarczyło tylko upewnić się, że serwer działa.
cristobalito
Hmm, dla mnie ocenianie (server-running-p)zwrotów :otherw systemie Windows (nawet po próbie ustawienia tej EMACS_SERVER_FILEzmiennej env.
Kaushal Modi
5

Automatyczne uruchamianie serwera, jeśli jeszcze go nie uruchomiono

Gorąco polecam ustawienie zmiennej środowiskowej do ALTERNATE_EDITORcelu runemacs.exe. W ten sposób zawsze możesz wywołać emacsclient, nawet jeśli nie ma serwera. Po prostu dodaj (start serwera) do pliku init. Gdy serwer nie istnieje, emacsclient wywołuje to, ALTERNATE_EDITORco w naszym przypadku jest emacs. Ponieważ emace uruchamia serwer w pliku init, wszelkie nowe wywołania emacsclient będą natychmiastowe.

Jak wywołać emacsa, aby korzystał z serwera (np. Z wiersza poleceń lub narzędzi innych firm)

Użyj, emacsclientw.exe -c -n "your_file"aby otworzyć plik. -cArgumentem tworzy nową ramkę graficzną i -npozwala, aby zamknąć ramkę bez utraty stanu serwera. Możesz nawet wywołać go bez nazwy pliku, aby otworzyć *Scratch*bufor. Działa również ze skrótu na pulpicie. Użycie emacsclient.exe(zauważ brakujące w) spowoduje wyświetlenie wiersza polecenia na kilka sekund za każdym razem, gdy go wywołasz.

Dodawanie do menu kontekstowego

Emacswiki ma ładną stronę na temat dodawania Emacsa do menu kontekstowego tutaj . Polega na edycji węzła rejestru, HKEY_CLASSES_ROOT\*aby dodać akcję do otwarcia za pomocą emacsa.

Vamsi
źródło
5

Inni odpowiedzieli na część dotyczącą serwera. Oto, co robię, aby uzyskać narzędzia podobne do UNIX / GNU / Linux, takie jak grepi diff:

  1. Zainstaluj Cygwin (operacja jednorazowa).
  2. Obciążenie cygwin-mount.el.
  3. Obciążenie setup-cygwin.el.

Należy jednak pamiętać, że istnieją różne wersje Cygwin. Używam starszej wersji (nie wiem, która z nich - trudno powiedzieć, AFAICT). Nie wiem, czy będziesz mieć problemy z najnowszymi wersjami.

Zobacz też:

Rysował
źródło
Uwaga: Nie używaj cygwin EMACS. Zainstaluj wersję
M Smith
Nie polecam instalować Cygwina, ponieważ mogą wystąpić niepożądane skutki uboczne (takie jak uszkodzenie innych portów Windows GNU, takich jak emacs, gcc, ...), po prostu za posiadanie niektórych narzędzi GNU. Zamiast tego zainstaluj porty GnuWin32 . Możesz zainstalować cały pakiet lub wybrane narzędzia do wyboru.
Seki
@Seki - Tak, Eli Zaretskii mówi to samo co ty. Mogę tylko powiedzieć, że nie miałem problemu (i mam poważne wątpliwości co do twojego twierdzenia, że złamałeś Emacsa ). Ale (a) używam starej wersji Cygwin i (b) nie używam większości narzędzi UNIX / GNU Linux dostarczonych przez Cygwin.
Drew
@drew: być może przesadne byłoby mówienie o „łamaniu” emacsa, „powodowaniu dziwnego zachowania” byłoby lepsze. Na przykład Cygwin Make wyhamuje zestaw narzędzi MinGW, jeśli nie dokładnie sprawdzisz swoją ścieżkę, czy narzędzia Cygwin nie są brane pod uwagę lub domyślnie brane pod uwagę, jeśli nie istnieją inne. Nie ogranicza się to do Make, wiele innych narzędzi nie może się mieszać i czasami subtelne jest wskazanie problemu. Krótko mówiąc, albo masz natywny port Emacsa i lepiej mieć natywne narzędzia GNU, albo możesz użyć całej dystrybucji Cygwin, w tym emacsa.
Seki
@Seki: Wygląda na to, że Twoim głównym celem jest to, że Cygwin i MingGW nie grają dobrze razem. To nie jest dla mnie zaskakujące. (FWIW, nie mam nic przeciwko używaniu MingGW zamiast Cygwina. Dla mnie instalacja Cygwina była prosta i nie używam jej wystarczająco dużo, aby napotkać problemy.)
Drew