Verwenden von Emacs als IDE

169

Derzeit umfasst mein Workflow mit Emacs beim Codieren in C oder C ++ drei Fenster. Die größte rechts enthält die Datei, mit der ich arbeite. Die linke Seite ist zweigeteilt, wobei die untere eine Shell ist, die ich zum Eingeben von Kompilierungs- oder Erstellungsbefehlen verwende, und die obere ist häufig eine Art Dokumentation oder README-Datei, die ich während der Arbeit einsehen möchte. Jetzt weiß ich, dass es einige ziemlich erfahrene Emacs-Benutzer gibt, und ich bin gespannt, welche anderen Emacs funktionell nützlich sind, wenn die Absicht besteht, sie als vollständige IDE zu verwenden. Insbesondere erfüllen die meisten IDEs diese Funktionen normalerweise in der einen oder anderen Form:

  • Quellcode-Editor
  • Compiler
  • Debuggen
  • Dokumentationssuche
  • Versionskontrolle
  • OO-Funktionen wie Klassensuche und Objektinspektor

Für einige davon ist es ziemlich offensichtlich, wie Emacs diese Funktionen erfüllen kann, aber was ist mit dem Rest? Wenn sich eine bestimmte Sprache darauf konzentrieren muss, würde ich sagen, dass es C ++ sein sollte.

Bearbeiten: Ein Benutzer wies darauf hin, dass ich genauer hätte sein sollen, als ich sagte, was ist mit dem Rest? Meistens war ich neugierig auf eine effiziente Versionskontrolle sowie auf die Suche nach Dokumentationen. In SLIME ist es beispielsweise ziemlich einfach, eine schnelle Hyperspec-Suche für eine Lisp-Funktion durchzuführen. Gibt es eine schnelle Möglichkeit, etwas in der C ++ STL-Dokumentation nachzuschlagen (wenn ich beispielsweise die genaue Syntax von hash_map vergessen habe )?

user7545
quelle
5
Den Fragen und allen Antworten fehlt der Haupt-IDE-Punkt. Aber versteh mich zuerst nicht falsch: Ich denke, es gibt keine einzige IDE (außer einigen seltenen Lisp / Scheme-IDEs), die dem nahe kommt, was Emacs bieten kann. JEDOCH machen moderne IDEs solche Dinge: Sofortiges Hervorheben wahrscheinlicher Codierungsfehler (selbst bei teilweise nicht kompilierbaren ASTs). IntelliJ IDEA macht es: Wenn Sie beispielsweise @NotNull verwenden , werden Sie in Echtzeit vor möglichen Verstößen gewarnt. Dann gibt es die ganze "Codierung durch Absicht" : Es funktioniert (noch) nicht unter Emacs.
SyntaxT3rr0r
18
Ein weiterer Bereich, in dem eine gute IDE wirklich glänzen kann: die Vervollständigung des Kontextcodes (auch bei unparteiischen, nicht kompilierbaren Quelldateien). Kontext - Code-Vervollständigung p0wns Hippie-expand jeden Tag, als wäre es nicht einmal lustig: Es beschämt Emacs einfach. Ich bin wieder einmal sehr traurig, dass IDE "Texteditoren" im Vergleich zu Emacs billig, lahm, dumm und erbärmlich sind. Gute IDEs glänzen jedoch in vielen Bereichen (wie Refactoring, kontextbezogene Code-Vervollständigung, Echtzeit-Warnungen usw.), in denen Emacs im Grunde nirgendwo ist. Gib mir Emacs in der Mitte meiner IDE, die sagte. Ich sehne mich nach diesem Tag.
SyntaxT3rr0r
Was ist mit dem Zusammenbruch von Code?
AlwaysLearning
Ich muss sagen, die Kommentare hier sind wahrscheinlich nicht von Programmierern geschrieben. Ich habe gelesen, wie Emacs das nicht kann und das nicht kann, aber andere IDEs können es. Es klingt für mich so: ein Programmierer, eine Person, die Probleme mit der Programmiersprache löst; hat das Problem, dass einige Programme keine Funktion haben und daher schlechter sind, aber sie möchten diese Funktion nicht erstellen. Wie, Leute, warum zum Teufel wirst du überhaupt Programmierer? !!
Red777

Antworten:

76

Sie müssen genau wissen, was Sie unter "dem Rest" verstehen. Mit Ausnahme des Objektinspektors (der mir bekannt ist) erledigt emacs alle oben genannten Aufgaben ganz einfach:

  • Herausgeber (offensichtlich)
  • Compiler - einfach ausführen M-x compileund den Kompilierungsbefehl eingeben. Von da an können Sie einfach M-x compileund standardmäßig verwenden. Emacs erfasst C / C ++ - Compilerfehler (funktioniert am besten mit GCC) und hilft Ihnen beim Navigieren zu Zeilen mit Warnungen oder Fehlern.
  • Debuggen - Wenn Sie debuggen möchten, geben Sie Folgendes ein M-x gdbund es wird ein GDB-Puffer mit speziellen Bindungen erstellt
  • Dokumentationssuche - emacs verfügt über hervorragende CScope-Bindungen für die Code-Navigation. Für andere Dokumentationen: Emacs hat auch einen Manpage-Reader und für alles andere gibt es das Web und Bücher.
  • Versionskontrolle - Es gibt viele Emacs-Bindungen für verschiedene VCS-Backends (CVS, SCCS, RCS, SVN, GIT).

Bearbeiten: Mir ist klar, dass meine Antwort zur Dokumentationssuche wirklich mit der Code-Navigation zusammenhängt. Hier sind einige weitere Informationen auf den Punkt:

Die Google-Suche wird zweifellos weitere Beispiele zeigen.

Wie der zweite Link zeigt, können Funktionen (und was auch immer) in anderen Dokumentationen nachgeschlagen werden, auch wenn sie nicht sofort unterstützt werden.

Ben Collins
quelle
3
sollte das nicht "Mx compile" sein?
Svante
1
Ich denke, GNU Global ist CScope heutzutage überlegen: gnu.org/software/global
Jürgen Hötzel
@ Jürgen Hötzel: Ich habe Emacs schon eine Weile nicht mehr aktiv eingesetzt. Zu dieser Zeit habe ich GNU global in Verbindung mit CScope, IIRC verwendet. Ich wäre nicht überrascht, wenn Global CScope weiterentwickelt hätte.
Ben Collins
auch perforce support, mit <a href=" p4el.sourceforge.net/p4.el.html"> p4.el </ a >
forksandhope
29

Ich muss Emacs Code Browser empfehlen als "traditionellere" IDE-Umgebung für Emacs .

EDIT : Ich empfehle Magit jetzt auch sehr über die Standard-VCS-Schnittstelle in Emacs.

Baudtack
quelle
Sie sollten nur in der Lage sein, den Beitrag zu bearbeiten. Sie scheinen genügend Wiederholungen zu haben.
Baudtack
19

Haben Sie versucht, Mx zu kompilieren, anstatt einen Befehl make im Shell-Fenster auszuführen? Es führt Ihren Befehl make aus, zeigt Fehler an und macht es in vielen Fällen sehr einfach, zu der Codezeile zu springen, die den Fehler verursacht hat, wenn die Ausgabe Dateinamen und Zeilennummern enthält.

Wenn Sie ein Fan von IDEs sind, sollten Sie sich auch das Speedbar-Paket von Emacs (Mx Speedbar) ansehen. Wenn Sie dies noch nicht getan haben, erfahren Sie, wie Sie mithilfe von Tag-Tabellen in Ihrem Code navigieren.

Bryan Oakley
quelle
15

Es gibt Ecken von Emacs, die Sie auf eine Weise produktiver machen, an die Sie nie gedacht haben. Wie andere bereits erwähnt haben, ist die Verwendung von Tags eine fantastische und schnelle Möglichkeit, um Ihren Quellcode zu vergrößern, und die Verwendung von M- / (dabbrev-expand) führt häufig genau das aus, was Sie beim Vervollständigen eines Variablennamens erwarten.

Die Verwendung von "ereignet" ist nützlich, um einen Puffer mit allen Vorkommen eines regulären Ausdrucks in einem Puffer abzurufen. Dies ist sehr praktisch, wenn Sie Code umgestalten und nach Codefragmenten oder Verwendungen von Variablen suchen oder wenn Sie TODO-Marker in Ihren Quelldateien verwenden und alle besuchen möchten.

Flush-Lines, Sort-Numeric-Felder, Replace-Regexp und Rechteck-Funktionen können sehr nützlich sein, um einen Speicherauszug von einem Tool zu nehmen und ihn in nützliche Daten wie ein Elisp-Programm oder eine durch Kommas getrennte Tabelle zu konvertieren.

Ich habe eine Seite über IDE geschrieben, wie man sie mit Emacs machen kann

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

Das Erlernen von Elisp ist eine weitere großartige Möglichkeit, um selbst zu beantworten, was Emacs über das hinaus tun können, was eine typische IDE leisten kann.

Zum Beispiel habe ich über das Schreiben von Perforce-Hilfsfunktionen wie "Schuld" gebloggt (wenn Sie Ihre eigenen schreiben, können Sie dafür sorgen, dass es sich genau so verhält, wie Sie es möchten) ...

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

Ich habe auch Code geschrieben, der dynamisch Kommentare für eine Funktion erstellt, die den Codierungsstandards entspricht, mit denen ich arbeite.

Keiner meiner Elisp-Codes ist besonders gut und der größte Teil existiert bereits in Bibliotheken, aber es ist wirklich nützlich, Emacs dazu zu bringen, benutzerdefinierte Dinge zu tun, die gerade während eines Arbeitstages auftauchen.

justinhj
quelle
10

Eine detaillierte Beschreibung der Integration von Emacs und Versionskontrolle finden Sie auf meiner Website . Ich arbeite auch an einem Artikel über die Verwendung von Emacs als Entwicklungsumgebung für viele Sprachen - C / C ++, Java, Perl, Lisp / Scheme, Erlang usw.

Alex Ott
quelle
8

Für die Versionskontrolle gibt es verschiedene Möglichkeiten, je nachdem, welches Versionskontrollsystem Sie verwenden. Einige der Funktionen sind jedoch allen gemeinsam.

vc.el ist die integrierte Methode zur Verwaltung der Versionskontrolle auf Dateiebene. Es hat Backends für die meisten Versionskontrollsysteme. Zum Beispiel wird das Subversion-Backend mit Emacs geliefert, und es gibt Git-Backends und andere, die aus anderen Quellen verfügbar sind.

Der nützlichste Befehl ist Cx vv (vc-next-action), der die entsprechende nächste Aktion für die Datei ausführt, die Sie besuchen. Dies kann bedeuten, dass Sie eine Aktualisierung aus dem Repository durchführen oder Ihre Änderungen festschreiben. Vc.el bindet außerdem Cx Cq neu , um Dateien , wenn Sie ein System verwenden, das dies benötigt (wie RCS).

Andere sehr nützliche Befehle sind Cx vl und Cx v = , die Ihnen das Protokoll und den aktuellen Unterschied für die von Ihnen verwendete Datei anzeigen.

Für eine echte Produktivität sollten Sie jedoch die Verwendung der Einzeldatei-Befehle vc.el nicht für einfache Zwecke verwenden. Es gibt verschiedene Pakete, mit denen Sie einen Überblick über den Status Ihres gesamten Baums erhalten und mehr Leistung erhalten. Außerdem können Sie kohärente Commits erstellen, die sich über mehrere Dateien erstrecken.

Die meisten davon sind stark beeinflusst oder basieren auf den ursprünglichen pcl-cvs / pcvs für CVS. Es gibt sogar zwei von ihnen , die mit Subversion, kommt psvn.el und dsvn.el . Es gibt Pakete für Git etc.

dkagedal
quelle
8

Okay, jeder hier gibt perfekte Tipps, um Emacs zu einer großartigen IDE zu machen.

Aber jeder sollte bedenken, dass Ihre Emacs für einen Editor sehr, sehr langsam geladen werden, wenn Sie Ihre Emacs mit vielen Erweiterungen anpassen (insbesondere mit solchen für die schnelle Typprüfung, Funktionsdefinitionssuche usw.).

Um dies zu umgehen, würde ich die Verwendung von Emacs in sehr empfehlen server mode.

Es ist ziemlich einfach zu bedienen, Sie müssen Ihre Init-Datei nicht anpassen. Sie müssen Emacs nur im Daemon-Modus starten.

emacs --daemon

Dadurch wird ein Emacs-Server erstellt, den Sie entweder über das Terminal oder über die GUI verbinden können. Ich würde auch empfehlen, einige Aliase zu erstellen, um das Aufrufen zu vereinfachen.

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

Auf diese Weise werden Emacs noch schneller ausgelöst als Gedit, versprochen.

Das einzig mögliche Problem hierbei: Wenn Sie den Emacs-Daemon von Ihrem Gelegenheitsbenutzer ausführen, können Sie den Emacs-Server wahrscheinlich nicht als verbinden root .

Wenn Sie also eine Datei mit Root-Zugriff öffnen müssen, Verwenden Sie trampstattdessen. Führen Sie einfach Ihren Emacs-Client mit Ihrem normalen Benutzer aus und öffnen Sie Dateien wie diese.

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

Dies hat mir das Leben leichter gemacht. Auf diese Weise kann ich meine umfangreiche angepasste Python-IDE in Millisekunden öffnen. Möglicherweise möchten Sie Ihrem Systemstart auch emacs --daemon hinzufügen oder eine Desktop-Datei für emacsclient erstellen. Das liegt an dir.

Weitere Informationen zu Emacs Daemon und Emacs Client finden Sie im Wiki.

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

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

Muhammet Can
quelle
1
Ich weiß, dass dies fünf Jahre später ist, aber ich habe es damals auch verwendet: Wenn Sie festlegen EDITOR="emacsclient -t" VISUAL="emacsclient -c", können Sie sudo-basierte Bearbeitung mit sudo -eoder durchführen sudoedit, was manchmal der Verwendung von TRAMP vorzuziehen ist (normalerweise aus Prüfungsgründen). Sie können emacsclient auch mit aufrufen --alternate-editor= ( benötigt den Speicherplatz am Ende) und der Daemon wird gestartet, wenn er nicht ausgeführt wird. Dadurch entfällt die Notwendigkeit, den Daemon beim Systemstart zu aktivieren, wenn Sie bereit sind, beim ersten Mal darauf zu warten Führen Sie den Editor bei jedem Start aus.
Darael
7

Ich bin damit einverstanden, dass Sie etwas über das Kompilieren von Mx lernen sollten (binden Sie das und den nächsten Mx-Fehler an eine kurze Tastenfolge).

Erfahren Sie mehr über die Bindungen für die Versionskontrolle (z. B. vc-diff, vc-next-action usw.)

In Register schauen. Sie können sich nicht nur Speicherorte in Puffern merken, sondern auch ganze Fensterkonfigurationen (Cx rw - Fensterkonfiguration zum Registrieren).

HD.
quelle
6

Ein Ausgangspunkt (der möglicherweise nicht offensichtlich ist) für die Erkundung der VC-Funktionen von Emacs ist Mx vc-next-action .

Abhängig vom Status der Datei und dem VC-Backend wird die "nächste logische Versionskontrolloperation" für die aktuelle Datei ausgeführt. Wenn die Datei nicht der Versionskontrolle unterliegt, wird sie registriert. Wenn die Datei geändert wurde, werden die Änderungen übermittelt usw.

Es ist etwas gewöhnungsbedürftig, aber ich finde es sehr nützlich.

Die Standard-Tastenkombination ist Cx vv

Chopmo
quelle
4

Es gibt eine TFS.el für die Emacs-Integration in Microsoft TFS . Es funktioniert mit jedem TFS, einschließlich des TFS, auf dem Codeplex.com ausgeführt wird.

Grundlegende Schritte zum Einrichten:

  1. Platziere tfs.el in deinem Ladepfad.

  2. In Ihrer .emacs-Datei:

    (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. Legen Sie auch in Ihrer .emacs-Datei lokale oder globale Tastenkombinationen für tfs-Befehle fest. wie so:

    (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)
Cheeso
quelle
Ähm ... befürwortet dies ernsthaft das Einfügen Ihres Passworts in Klartext in Ihre .emacs-Datei?
TED
@TED ​​- nein, nur eine Illustration. Geheimnisse sollten an anderer Stelle gespeichert und von elisp gelesen werden.
Cheeso
3

Kompilieren, nächster Fehler und vorheriger Fehler sind alles ziemlich wichtige Befehle für die C ++ - Entwicklung in Emacs (funktioniert auch hervorragend bei der Grep-Ausgabe). Etags, Visit-Tags-Table und Find-Tag sind ebenfalls wichtig. Completion.el ist einer der großen unbesungenen Hacks des 20. Jahrhunderts und kann Ihr C ++ - Hacking um eine Größenordnung beschleunigen. Oh und vergessen wir nicht Ediff.

Ich habe noch nicht gelernt, wie man die Versionskontrolle verwendet, ohne eine Shell zu besuchen, aber jetzt, wo ich Commits so viel häufiger ausführe (mit Git), muss ich das wahrscheinlich tun.

jfm3
quelle
3

Möglicherweise finden Sie auch eine Registerkarte nützlich. Es emuliert das einzige Verhalten, das ich beim Wechsel von Eclipse zu Emacs übersehen habe. Gebunden an "," und "." Wenn Sie zur vorherigen und nächsten Registerkartenleiste wechseln, müssen Sie den Puffer nicht ständig mit Strg-x b wechseln.

Leider bietet die erwähnte Webseite nicht die richtige Version zum Herunterladen. Die meisten Ubuntu-Versionen liefern es jedoch in ihren Emacs-Goodies-Paketen.

wr.
quelle
1
Cool, ich suchte nach einer Möglichkeit, eine neuere Version der Tabbar zu bekommen. Für diejenigen, die nicht unter Ubuntu sind, finden Sie es hier. packages.ubuntu.com/karmic/emacs-goodies-el
Ibrahim
3

Ich benutze Emacs unter Windows. Das Kompilierungsmodul ist nett, aber ich wollte, dass die Kompilierung in Bezug auf die vorgeschlagene Kompilierungsbefehlszeile intelligenter ist. Es ist möglich, "Dateivariablen" zu verwenden, um anzugebencompile-command , aber ich wollte etwas, das etwas schlauer ist. Also habe ich eine kleine Funktion geschrieben, um zu helfen. Es wird der Kompilierungsbefehl erraten, der beim Ausführen verwendet werden soll, um den Benutzer dazu aufzufordern compile.

Die Guess-Funktion sucht nach einer vbproj- oder csproj- oder sln-Datei und schlägt msbuild vor, wenn sie gefunden wird. Dann sieht es sich den Namen der Pufferdatei an und schlägt abhängig davon verschiedene Dinge vor. Eine .wxs-Datei bedeutet, dass es sich um ein WIX-Projekt handelt und Sie wahrscheinlich eine MSI erstellen möchten. Die Schätzlogik schlägt daher einen nmake-Befehl für die MSI vor. Wenn es sich um ein Javascript-Modul handelt, wird empfohlen, jslint-for-wsh.js auszuführen, um die .js-Datei zu fusseln. Als Fallback schlägt es nmake vor.

Der Code, den ich verwende, sieht folgendermaßen aus:

(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)

Ich habe versucht, dies als "vor dem Rat" für die Kompilierungsfunktion zu tun, konnte es jedoch nicht zufriedenstellend zum Laufen bringen. Also habe ich eine neue Funktion definiert und sie an dieselbe Tastenkombination gebunden, für die ich sie verwendet habe compile.


BEARBEITEN gibt es jetzt " smarter-compile.el ", was diese Idee noch einen Schritt weiter bringt.

Cheeso
quelle
2

Bei der Dokumentationssuche: Dies hängt von Ihren Programmiersprachen ab.

C-Bibliotheken und Systemaufrufe werden normalerweise in Manpages dokumentiert. Dafür können Sie verwenden M-x man. Einige Dinge können auf Infoseiten besser dokumentiert werden. verwendenM-x info .

Verwenden Sie für elisp selbst C-h f. Verwenden Sie für Python>>> help(<function, class, module>) den Interpreter.

Ich finde, dass die meisten anderen Sprachen Dokumentation in HTML-Form anbieten. Versuchen Sie dazu einen eingebetteten Browser (ich benutze w3m). Stellen Sie Ihre BROWSERUmgebungsvariable auf ein Wrapper-Skript um emacsclient -e "(w3m-goto-url-new-session \"$@\")"(on * nix) ein, falls etwas einen Browser öffnen sollte und Sie möchten, dass es in Emacs geöffnet wird.

Jonas Kölker
quelle
2

Ich weiß, dass dies ein sehr alter Beitrag ist. Diese Frage gilt jedoch für Emacs-Anfänger.

IMO Der beste Weg, Emacs als Idee zu verwenden, ist die Verwendung eines Sprachserverprotokolls mit Emacs. Alle Informationen zu Sprachservern finden Sie auf der verlinkten Website.

Für eine schnelle Einrichtung möchte ich Sie dringend bitten, auf diese Seite eglot zu gehen . IMO eglot macht seinen Job ziemlich gut. Es lässt sich gut in Auto-Completion-Pakete wie Company integrieren. Bietet Referenz und mehr.

Auch für einen Debugger benötigen Sie möglicherweise bestimmte Debugger für bestimmte Sprachen. Sie können gdb aus emacs heraus verwenden. Geben Sie einfach ein M-x gdb.

Verwenden Sie zum Kompilieren Ihres Codes am besten Shell-Befehle. Ich arbeite an diesem Projekt eproj . Es wird eine Weile dauern, bis es fertig ist. Es wird jedoch nur der Shell-Befehl dem Projekttyp zugeordnet. Und erstellt Ihr Projekt über Shell. Das Gleiche gilt für die Ausführung des Befehls. Möglicherweise benötige ich Hilfe beim Abschluss dieses Projekts. Es ist noch nicht einsatzbereit, aber wenn Sie ein bisschen Elisp kennen, können Sie den Code durchgehen.

Abgesehen davon ist es immer am besten, den Befehl emacs compile zu verwenden.

Für die Versionskontrolle habe ich noch kein anderes Paket gesehen, das mit der Kraft von Magit mithalten kann . Es ist spezifisch für Git. Auch für Git gibt es ein weiteres Paket Git-Timemachine, das ich sehr nützlich finde.

Die Objektsuche und Klassensuche erfolgt über das Sprachserverprotokoll.

Ein Projektbaum kann für eine ideenähnliche Schnittstelle mit Treemacs verwendet werden .

Es gibt auch eine Projekt-Interaktionsbibliothek namens Projektil .

Für die automatische Vervollständigung finde ich den Firmenmodus sehr nützlich.

Wirklich Emacs können dazu gebracht werden, alles zu tun.

Sidharth Arya
quelle
1

In den letzten Jahren wurde Clang ein wichtiger Bestandteil der Emacs C ++ - Unterstützung. Atila Neves hatte einen Vortrag auf der CppCon 2015: "Emacs als C ++ IDE"

Es ist ein 16-minütiger Vortrag, in dem er Lösungen für folgende Themen zeigt:

  • Zur Definition springen
  • Automatische Vervollständigung
  • Hervorheben der Syntax im laufenden Betrieb
  • Datei im Projekt suchen

Folien finden Sie hier .

Philipp Claßen
quelle
0

Im Unix- oder X-Windows-Stil weiß ich nicht, dass es eine integrierte IDE gibt, die für alles funktioniert.

Berücksichtigen Sie bei der Interaktion mit Debuggern, die nur eine Komponente einer IDE sind, Realgud . Das andere, was ich nützlich finde, sind Parser für Standortnachrichten. Wenn Sie also einen Call-Stack-Trace haben und an einer bestimmten Stelle im Callstack bearbeiten möchten, kann diese Front-End-Schnittstelle dies tun.

Dieses Programm könnte bei weitem verbessert werden. Dann könnten aber auch Leute daran arbeiten, um es zu verbessern.

Haftungsausschluss: Ich arbeite an Realgud

felsig
quelle
0

Versuchen Sie es mit dem LSP-Modus. Jetzt können Sie andere IDE-Funktionen in Emacs verwenden, die eine Verbindung zum Server herstellen. Suchen Sie nach weiteren Informationen: lsp-Modus

acakojic
quelle