Używanie Emacsa jako IDE


169

Obecnie mój przepływ pracy z Emacsem, gdy koduję w C lub C ++, obejmuje trzy okna. Największy po prawej zawiera plik, z którym pracuję. Lewa strona jest podzielona na dwie części, dolna to powłoka, której używam do wpisywania poleceń kompilacji lub tworzenia poleceń, a na górze często jest jakaś dokumentacja lub plik README, z którym chcę się zapoznać podczas pracy. Teraz wiem, że są tam dość doświadczeni użytkownicy Emacsa i jestem ciekawy, jakie inne funkcje Emacsa są przydatne, jeśli zamierzamy używać go jako kompletnego IDE. W szczególności większość IDE zwykle spełnia te funkcje w takiej czy innej formie:

  • Edytor kodu źródłowego
  • Kompilator
  • Debugowanie
  • Wyszukiwanie dokumentacji
  • Kontrola wersji
  • Funkcje obiektowe takie jak wyszukiwanie klas i inspektor obiektów

W przypadku kilku z nich jest całkiem oczywiste, jak Emacs może dopasować te funkcje, ale co z resztą? Ponadto, jeśli trzeba się skupić na konkretnym języku, powiedziałbym, że powinien to być C ++.

Edycja: Jeden użytkownik wskazał, że powinienem był być bardziej szczegółowy, kiedy powiedziałem „a co z resztą”. Przede wszystkim interesowała mnie skuteczna kontrola wersji, a także wyszukiwanie dokumentacji. Na przykład w SLIME dość łatwo jest wykonać szybkie wyszukiwanie hiperspeckie w funkcji Lisp. Czy istnieje szybki sposób na wyszukanie czegoś w dokumentacji C ++ STL (jeśli na przykład zapomniałem dokładnej składni hash_map )?


5
Pytania i wszystkie odpowiedzi całkowicie pomijają główny punkt IDE. Ale najpierw nie zrozumcie mnie źle: myślę, że nie ma ani jednego IDE (poza kilkoma rzadkimi wersjami Lisp / Scheme), które byłyby bliskie temu, co może zaoferować Emacs. JEDNAK nowoczesne IDE robią takie rzeczy: natychmiastowe podświetlanie prawdopodobnych błędów kodowania (nawet w przypadku częściowych niekompilowalnych AST). IntelliJ IDEA to robi: jeśli użyjesz, powiedzmy, @NotNull , ostrzeże Cię w czasie rzeczywistym o prawdopodobnych naruszeniach. Potem jest całe „kodowanie z zamiarem” : po prostu (jeszcze) nie działa pod Emacsem.
SyntaxT3rr0r,

18
Kolejny obszar, w którym dobre IDE może naprawdę zabłysnąć: kontekstowe uzupełnianie kodu (jeszcze raz, nawet w przypadku bezstronnych, niekompilowalnych plików źródłowych). Kontekstowe uzupełnianie kodu powoduje, że hipis-rozszerza się każdego dnia, jakby nie było to nawet zabawne: po prostu zawstydza Emacsa. Po raz kolejny jest mi bardzo przykro, że "edytory tekstu" IDE są tanim, kiepskim, głupim, żałosnym śmieciem w porównaniu z Emacsem. Ale dobre IDE świecą w wielu obszarach (takich jak refaktoryzacja, kontekstowe uzupełnianie kodu, ostrzeżenia w czasie rzeczywistym itp.), Gdzie Emacsa praktycznie nie ma. Daj mi Emacsa w środku mojego IDE. Tęsknię za tym dniem.
SyntaxT3rr0r,

A co ze zwijaniem się kodu?
AlwaysLearning

Muszę powiedzieć, że komentarze tutaj prawdopodobnie nie są napisane przez programistów. Czytałem, jak Emacs nie może tego i nie może tego, ale inne IDE mogą. Dla mnie brzmi to tak: programista, osoba rozwiązująca problemy językiem programowania; ma problem, że jakiś program nie ma funkcji i dlatego jest gorszy, ale nie chcą tworzyć tej funkcji. Ludzie, dlaczego kurwa jesteście programistami w pierwszej kolejności ?? !!
czerwony 777

Odpowiedzi:


76

Musisz dokładnie określić, co masz na myśli przez „resztę”. Z wyjątkiem inspektora obiektów (o którym wiem), emacs robi to wszystko dość łatwo:

  • redaktor (oczywisty)
  • kompilator - po prostu uruchom M-x compilei wprowadź polecenie kompilacji. Od tego M-x compilemomentu możesz po prostu użyć domyślnego. Emacs przechwytuje błędy kompilatora C / C ++ (działa najlepiej z GCC) i pomoże ci przejść do linii z ostrzeżeniami lub błędami.
  • Debugowanie - podobnie, gdy chcesz debugować, wpisz, M-x gdba utworzy bufor gdb ze specjalnymi powiązaniami
  • Wyszukiwanie dokumentacji - emacs ma doskonałe powiązania CScope do nawigacji w kodzie. Inna dokumentacja: Emacs ma również czytnik stron podręcznika, a do wszystkiego innego jest sieć i książki.
  • kontrola wersji - istnieje wiele powiązań Emacsa dla różnych backendów VCS (przychodzą na myśl CVS, SCCS, RCS, SVN, GIT)

Edycja: zdaję sobie sprawę, że moja odpowiedź dotycząca wyszukiwania dokumentacji naprawdę dotyczyła nawigacji po kodzie. Oto kilka bardziej szczegółowych informacji:

Wyszukiwarka Google bez wątpienia ujawni dalsze przykłady.

Jak pokazuje drugi link, można wyszukiwać funkcje (i cokolwiek) w innej dokumentacji, nawet jeśli nie są one obsługiwane po wyjęciu z pudełka.


3
czy nie powinno to być „kompilacja Mx”?
Svante

1
Myślę, że obecnie GNU Global przewyższa CScope: gnu.org/software/global
Jürgen

@ Jürgen Hötzel: Od jakiegoś czasu nie używałem aktywnie Emacsa. W tamtym czasie używałem GNU global w połączeniu z CScope, IIRC. Nie zdziwiłbym się jednak, gdyby globalny rozwój przekroczył CScope.
Ben Collins

również wsparcie dla konieczności, z <a href=" p4el.sourceforge.net/p4.el.html"> p4.el </ a >
forksandhope

29

Muszę polecić Emacsa Code Browser jako bardziej "tradycyjne" środowisko IDE dla emacsa.

EDYCJA : Również teraz polecam Magit bardziej niż standardowy interfejs VCS w emacsie.


Powinieneś po prostu móc edytować post, wydaje się, że masz wystarczającą liczbę powtórzeń.
baudtack

19

Zamiast uruchamiać polecenie make w oknie powłoki, czy próbowałeś kompilować Mx? Uruchomi polecenie make, wyświetli błędy, aw wielu przypadkach bardzo ułatwi przejście do wiersza kodu, który spowodował błąd, jeśli dane wyjściowe zawierają nazwy plików i numery wierszy.

Jeśli jesteś fanem IDE, możesz również spojrzeć na pakiet speedbara emacsa (Mx speedbar). Jeśli jeszcze tego nie zrobiłeś, dowiedz się, jak używać tabel tagów do poruszania się po kodzie.


15

Istnieją zakamarki emacsa, które raz odkryte sprawiają, że jesteś bardziej produktywny w sposób, o którym nigdy nie pomyślałeś. Jak wspominali inni, używanie tagów to fantastyczny i szybki sposób na przybliżanie kodu źródłowego, a użycie M- / (dabbrev-expand) często robi dokładnie to, czego oczekujesz, wypełniając nazwę zmiennej.

Użycie wystąpienia jest przydatne do uzyskania bufora ze wszystkimi wystąpieniami wyrażenia regularnego w buforze. Jest to bardzo przydatne podczas refaktoryzacji kodu i wyszukiwania fragmentów kodu lub zastosowań zmiennych, lub jeśli używasz znaczników TODO w plikach źródłowych i chcesz je wszystkie odwiedzić.

funkcje typu flush-lines, sort-numeric-fields, replace-regexp i rectangle mogą być bardzo przydatne przy pobieraniu zrzutu z jakiegoś narzędzia i konwertowaniu go na przydatne dane, takie jak program elisp lub arkusz kalkulacyjny rozdzielany przecinkami.

Napisałem stronę o IDE, na przykład o rzeczach, które można zrobić z emacsem

http://justinsboringpage.blogspot.com/2007/09/11-visual-studio-tricks-in-emacs.html

Nauka elisp to kolejny świetny sposób, aby odpowiedzieć sobie na pytanie, co jeszcze emacs może zrobić poza tym, co może zrobić typowe IDE.

Na przykład pisałem na blogu o pisaniu funkcji pomocniczych Perforce, takich jak obwinianie (pisanie własnych oznacza, że ​​możesz sprawić, by zachowywały się dokładnie tak, jak chcesz) ...

http://justinsboringpage.blogspot.com/2009/01/who-changed-line-your-working-on-last.html

Napisałem również kod, który dynamicznie tworzy komentarze dla funkcji w punkcie, który jest zgodny ze standardami kodowania, z którymi pracuję.

Żaden z moich kodów elisp nie jest szczególnie świetny, a większość z nich istnieje już w bibliotekach, ale naprawdę przydatna jest możliwość tworzenia niestandardowych rzeczy w emacsie, które pojawiają się w ciągu dnia roboczego.


10

Możesz znaleźć szczegółowy opis integracji emacsa i kontroli wersji na mojej stronie . Pracuję również nad artykułem o używaniu Emacsa jako środowiska programistycznego dla wielu języków - C / C ++, Java, Perl, Lisp / Scheme, Erlang itp ...


8

W przypadku kontroli wersji jest kilka rzeczy, których możesz użyć, w zależności od używanego systemu kontroli wersji. Ale niektóre funkcje są wspólne dla wszystkich.

vc.el to wbudowany sposób obsługi kontroli wersji na poziomie pliku. Posiada zaplecze dla większości systemów kontroli wersji. Na przykład backend Subversion jest dostarczany z Emacsem, a istnieją backendy git i inne dostępne z innych źródeł.

Najbardziej użytecznym poleceniem jest Cx vv (vc-next-action), które wykonuje odpowiednią następną akcję dla odwiedzanego pliku. Może to oznaczać aktualizację z repozytorium lub zatwierdzenie zmian, vc.el również ponownie wiąże Cx Cq, aby pobierać i pobierać pliki, jeśli używasz systemu, który tego potrzebuje (np. RCS).

Innymi bardzo przydatnymi poleceniami są Cx vl i Cx v =, które pokazują dziennik i bieżące różnice dla używanego pliku.

Jednak dla prawdziwej produktywności należy unikać używania jednoplikowych poleceń vc.el innych niż do prostych rzeczy. Istnieje kilka pakietów, które mogą dać ci przegląd stanu całego twojego drzewa i dać ci więcej możliwości, nie wspominając o możliwości tworzenia spójnych zatwierdzeń obejmujących kilka plików.

Większość z nich ma duży wpływ lub jest oparta na oryginalnych pcl-cvs / pcvs dla CVS. Są nawet dwa z nich, że pochodzi z Subversion, psvn.el i dsvn.el . Istnieją pakiety dla git itp.


8

Okay, wszyscy tutaj dają doskonałe wskazówki, jak uczynić emacs świetnym IDE.

Ale każdy powinien pamiętać, że kiedy dostosujesz emacsa z wieloma rozszerzeniami (szczególnie z tymi do sprawdzania typu w locie, wyszukiwania definicji funkcji itp.), Twój emacs będzie ładował się bardzo, bardzo wolno dla edytora.

Aby obejść ten problem, bardzo polecam używanie emacsa w server mode.

Jest dość prosty w użyciu, nie ma potrzeby dostosowywania pliku init. Wystarczy uruchomić emacsa w trybie demona;

emacs --daemon

Spowoduje to utworzenie serwera emacs, który możesz podłączyć z terminala lub z gui. Polecam również utworzenie aliasów, aby ułatwić dzwonienie.

alias ec="emacsclient -t"
alias ecc="emacsclient -c &"
# some people also prefer this but no need to fight here;
alias vi="emacsclient -t"

W ten sposób emacs uruchomi się szybciej niż gedit, obietnica.

Jedynym możliwym problemem jest to, że jeśli używasz demona emacsa od zwykłego użytkownika, prawdopodobnie nie możesz połączyć się z serwerem emacs jako root.

Tak więc, jeśli chcesz otworzyć plik, który ma uprawnienia administratora; użyj trampzamiast tego. Po prostu uruchom klienta emacs z normalnym użytkownikiem i otwórz pliki w ten sposób;

C-x C-f
/sudo:root@localhost/some/file/that/has/root/access/permissions
# on some linux distro it might be `/su:root@...` 

Ułatwiło mi to życie. W ten sposób mogę otworzyć moje ciężkie, dostosowane środowisko Python w ciągu milisekund. Możesz także dodać emacs --daemon do uruchamiania systemu lub utworzyć plik pulpitu dla emacsclient. To zależy od Ciebie.

Więcej na temat demona emacsa i klienta emacsa można znaleźć na wiki;

http://www.emacswiki.org/emacs/EmacsAsDaemon

http://www.emacswiki.org/emacs/EmacsClient


1
Wiem, że jest to pięć lat później, ale wtedy też go używałem: jeśli ustawisz EDITOR="emacsclient -t" VISUAL="emacsclient -c", możesz edytować w sudo za pomocą sudo -elub sudoedit, co jest czasami lepsze niż użycie TRAMP (zwykle ze względów audytowych). Możesz również wywołać emacsclient z --alternate-editor= ( potrzebuje spacji na końcu) i uruchomi demona, jeśli nie jest uruchomiony, co eliminuje potrzebę umieszczania demona w uruchomieniu systemu, jeśli chcesz czekać na to za pierwszym razem uruchom edytor przy każdym uruchomieniu.
Darael

7

Zgadzam się, że powinieneś dowiedzieć się o kompilacji Mx (powiązanie tego i następnego błędu Mx z krótką sekwencją klawiszy).

Dowiedz się o powiązaniach do kontroli wersji (np. Vc-diff, vc-next-action itp.)

Zajrzyj do rejestrów. Możesz nie tylko zapamiętać lokalizacje w buforach, ale konfiguracje całych okien (Cx rw - window-configuration-to-register).


6

Punktem wyjścia (co może być nieoczywiste) do zbadania cech VC Emacsa jest Mx vc-next-action .

Wykonuje „następną logiczną operację kontroli wersji” na bieżącym pliku, w zależności od stanu pliku i zaplecza VC. Więc jeśli plik nie jest pod kontrolą wersji, rejestruje go, jeśli plik został zmieniony, zmiany zostały przesłane itp.

Trochę się do tego przyzwyczaiłem, ale uważam to za bardzo przydatne.

Domyślne przypisanie klawiszy to Cx vv


4

Istnieje TFS.el do integracji emacsa z Microsoft TFS . Działa z każdym TFS, w tym TFS, na którym działa Codeplex.com.

Podstawowe kroki konfiguracji:

  1. Umieść plik tfs.el w ścieżce ładowania.

  2. W pliku .emacs:

    (require 'tfs)
    (setq tfs/tf-exe  "c:\\vs2008\\common7\\ide\\tf.exe")
    (setq tfs/login "/login:domain\\userid,password")
          -or-
    (setq tfs/login (getenv "TFSLOGIN"))  ;; if you have this set
  3. również w swoim pliku .emacs, ustaw lokalne lub globalne przypisania klawiszy dla poleceń tfs. tak:

    (global-set-key  "\C-xvo" 'tfs/checkout)
    (global-set-key  "\C-xvi" 'tfs/checkin)
    (global-set-key  "\C-xvp" 'tfs/properties)
    (global-set-key  "\C-xvr" 'tfs/rename)
    (global-set-key  "\C-xvg" 'tfs/get)
    (global-set-key  "\C-xvh" 'tfs/history)
    (global-set-key  "\C-xvu" 'tfs/undo)
    (global-set-key  "\C-xvd" 'tfs/diff)
    (global-set-key  "\C-xv-" 'tfs/delete)
    (global-set-key  "\C-xv+" 'tfs/add)
    (global-set-key  "\C-xvs" 'tfs/status)
    (global-set-key  "\C-xva" 'tfs/annotate)
    (global-set-key  "\C-xvw" 'tfs/workitem)

Hm ... czy to poważnie opowiada się za umieszczeniem hasła w postaci zwykłego tekstu w pliku .emacs?
TED,

@TED ​​- nie, tylko ilustracja. Sekrety powinny być przechowywane w innym miejscu i można je odczytać z elisp.
Cheeso

3

compile, next-error i previous-error są bardzo ważnymi poleceniami dla programowania C ++ w Emacsie (działa też świetnie na wyjściu grepa). Etykiety, tablica-tagów-wizyt i tag-znalezienia są również ważne. Complete.el to jeden z największych niedocenianych hacków XX wieku, który może przyspieszyć twoje hakowanie C ++ o rząd wielkości. Aha, nie zapominajmy o Ediff.

Jeszcze się nie nauczyłem, jak używać kontroli wersji bez odwiedzania powłoki, ale teraz, gdy korzystam z commits znacznie częściej (z git), prawdopodobnie będę musiał.


3

Przydatny może być również pasek kart . Emuluje jedyne zachowanie, którego przegapiłem podczas przechodzenia z Eclipse do Emacsa. Powiązane z „,” i „”. aby przejść do poprzedniego i następnego paska kart, przywraca ci to ciągłe przełączanie bufora przez Ctrl-x b.

Niestety wspomniana strona internetowa nie zapewnia odpowiedniej wersji do pobrania. Większość wersji Ubuntu dostarcza go jednak w swoich pakietach emacs-goodies.


1
Fajnie, szukałem sposobu na zdobycie nowszej wersji paska kart. Dla tych, którzy nie korzystają z Ubuntu, możesz go znaleźć tutaj. packages.ubuntu.com/karmic/emacs-goodies-el
Ibrahim

3

Używam emacsa w systemie Windows. moduł kompilacji jest fajny, ale chciałem, aby kompilacja była mądrzejsza w kwestii wiersza poleceń kompilacji, który sugeruje. Do określenia można użyć „zmiennych plików”compile-command , ale chciałem czegoś bardziej inteligentnego. Więc napisałem małą funkcję, aby pomóc. Odgaduje polecenie kompilacji, które ma zostać użyte, aby monitować użytkownika podczas działania compile.

Funkcja zgadywania szuka pliku vbproj, csproj lub sln, a jeśli zostanie znaleziona, sugeruje msbuild. Następnie sprawdza nazwę pliku bufora iw zależności od tego sugeruje różne rzeczy. Plik .wxs oznacza, że ​​jest to projekt WIX i prawdopodobnie chcesz zbudować plik MSI, więc logika domysłów sugeruje polecenie nmake dla MSI. Jeśli jest to moduł JavaScript, sugeruje się uruchomienie jslint-for-wsh.js, aby lintować plik .js. Jako rozwiązanie alternatywne sugeruje nmake.

Kod, którego używam, wygląda następująco:

(defun cheeso-guess-compile-command ()
  "set `compile-command' intelligently depending on the
current buffer, or the contents of the current directory."
  (interactive)
  (set (make-local-variable 'compile-command)
       (cond
        ((or (file-expand-wildcards "*.csproj" t)
             (file-expand-wildcards "*.vcproj" t)
             (file-expand-wildcards "*.vbproj" t)
             (file-expand-wildcards "*.shfbproj" t)
             (file-expand-wildcards "*.sln" t))
         "msbuild ")

        ;; sometimes, not sure why, the buffer-file-name is
        ;; not set.  Can use it only if set.
        (buffer-file-name
         (let ((filename (file-name-nondirectory buffer-file-name)))
           (cond

            ;; editing a .wxs (WIX Soluition) file
            ((string-equal (substring buffer-file-name -4) ".wxs")
             (concat "nmake "
                     ;; (substring buffer-file-name 0 -4) ;; includes full path
                     (file-name-sans-extension filename)
                     ".msi" ))

            ;; a javascript file - run jslint
            ((string-equal (substring buffer-file-name -3) ".js")
             (concat (getenv "windir")
                     "\\system32\\cscript.exe c:\\users\\cheeso\\bin\\jslint-for-wsh.js "
                     filename))

            ;; something else - do a typical .exe build
            (t
             (concat "nmake "
                     (file-name-sans-extension filename)
                     ".exe")))))
        (t
         "nmake "))))


(defun cheeso-invoke-compile-interactively ()
  "fn to wrap the `compile' function.  This simply
checks to see if `compile-command' has been previously set, and
if not, invokes `cheeso-guess-compile-command' to set the value.
Then it invokes the `compile' function, interactively."
  (interactive)
  (cond
   ((not (boundp 'cheeso-local-compile-command-has-been-set))
    (cheeso-guess-compile-command)
    (set (make-local-variable 'cheeso-local-compile-command-has-been-set) t)))
  ;; local compile command has now been set
  (call-interactively 'compile))

;; in lieu of binding to `compile', bind to my monkeypatched function
(global-set-key "\C-x\C-e"  'cheeso-invoke-compile-interactively)

Próbowałem to zrobić jako „przed poradą” dla funkcji kompilacji, ale nie mogłem sprawić, by działała zadowalająco. Zdefiniowałem więc nową funkcję i powiązałem ją z tą samą kombinacją klawiszy, której używałem compile.


EDYTUJ jest teraz " smarter-compile.el ", który idzie o krok dalej.


2

O wyszukiwaniu dokumentacji: zależy to od języka (języków) programowania.

Biblioteki C i wywołania systemowe są zwykle udokumentowane na stronach podręcznika. Do tego możesz użyć M-x man. Niektóre rzeczy mogą być lepiej udokumentowane na stronach informacyjnych; używać M-x info.

W przypadku samego elisp użyj C-h f. W przypadku języka Python użyj >>> help(<function, class, module>)w interpretatorze.

Uważam, że większość innych języków oferuje dokumentację w formacie html. W tym celu wypróbuj wbudowaną przeglądarkę (używam w3m). Ustaw swoją BROWSERzmienną środowiskową na skrypt opakowujący emacsclient -e "(w3m-goto-url-new-session \"$@\")"(na * nix), na wypadek gdyby coś mogło otworzyć przeglądarkę i chcesz ją otworzyć w emacsie.


2

Wiem, że to bardzo stary post. Ale to pytanie jest ważne dla początkujących emacsa.

IMO Najlepszym sposobem wykorzystania emacsa jako ide jest użycie protokołu serwera języka z emacsem. Wszystkie informacje o serwerach językowych można znaleźć na połączonej stronie internetowej.

W celu szybkiej konfiguracji zachęcam do przejścia do tej strony eglot . IMO eglot wykonuje swoją pracę całkiem dobrze. Dobrze integruje się z pakietami automatycznego uzupełniania, takimi jak firma. Zawiera odniesienia i nie tylko.

Również w przypadku debugera mogą być potrzebne specjalne debugery dla określonych języków. Możesz używać gdb z poziomu emacsa. Po prostu wpisz M-x gdb.

Do kompilowania kodu najlepiej jest używać poleceń powłoki. Pracuję nad tym projektem eproj . Ukończenie tego zajmie trochę czasu. Ale wszystko, co robi, to odwzorowuje polecenie powłoki na typ projektu. I tworzy Twój projekt za pomocą powłoki. Robi to samo, aby wykonać polecenie. Być może będę potrzebować pomocy przy ukończeniu tego projektu. Nie jest gotowy do użycia, ale jeśli znasz trochę elisp, możesz przejść przez kod.

Pomijając to, zawsze najlepiej jest używać polecenia kompilacji emacsa.

Jeśli chodzi o kontrolę wersji, nie widziałem jeszcze żadnego innego pakietu, który mógłby dorównać mocom magit . To specyficzne dla git. Również dla git istnieje inny pakiet git-timemachine, który jest bardzo przydatny.

Wyszukiwanie obiektów i przeglądanie klas jest zapewniane przez protokół serwera języka.

Drzewo projektu może służyć jako interfejs typu IDE z treemacami .

Istnieje również biblioteka interakcji projektu o nazwie pocisk .

W przypadku automatycznego uzupełniania bardzo przydatny jest tryb firmowy .

Naprawdę można zmusić emacsa do zrobienia wszystkiego.


1

W ostatnich latach Clang stał się ważną częścią wsparcia Emacsa C ++. Atila Neves wygłosił referat na temat CppCon 2015: „Emacs as a C ++ IDE”

Jest to 16-minutowa rozmowa, podczas której przedstawia rozwiązania dotyczące następujących tematów:

  • Przejdź do definicji
  • Autouzupełnianie
  • Podświetlanie składni w locie
  • Znajdź plik w projekcie

Slajdy można znaleźć tutaj .


0

W stylu systemu Unix lub X windows nie wiem, czy istnieje zintegrowane IDE, które działa na wszystko.

Do interakcji z debuggerami wystarczy jeden składnik IDE, rozważ realgud . Inną rzeczą, która wydaje mi się przydatna, są parsery dla komunikatów o lokalizacji, więc jeśli masz ślad stosu wywołań i chcesz edytować w określonym miejscu stosu wywołań, ten interfejs front-end może to zrobić.

Jak dotąd ten program przydałoby się ulepszenie. Ale wtedy mógłby również wykorzystać ludzi pracujących nad tym, aby go ulepszyć.

Zastrzeżenie: pracuję na realgud


0

Wypróbuj tryb lsp. Teraz możesz używać innych funkcji IDE wewnątrz emacsa łączącego się z serwerem. Poszukaj więcej informacji: tryb lsp

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.