Doom-emacs: c ++ und c # automatisch vervollständigen

Erstellt am 28. Jan. 2020  ·  21Kommentare  ·  Quelle: hlissner/doom-emacs

Was versuchst du zu erreichen?
Damit meine Emacs wie vscode funktionieren, so als würde ich die vscode-Erweiterungen c ++ und c # (für Unity) installieren und die automatische Vervollständigung haben (die wichtigste, die mir wichtig ist). Ich habe viel recherchiert und nur, dass ich den Firmenmodus verwenden muss, nicht sicher, ob es andere Möglichkeiten gibt, wenn ja, bitte erziehe mich.

Was hast du versucht?
Ich ging in .doom.d / init.el und unkommentierte cc und csharp und habe eine 'bin / doom-Aktualisierung' durchgeführt, bekomme aber nur Syntax-Hervorhebungen (Farben im Text).

System Information


emacs version 26.3
Funktionen XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY ACL GNUTLS LIBXML2 FREETYP M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THSTADS
Bau 29. August 2019
buildopts (--prefix = / usr --sysconfdir = / etc --libexecdir = / usr / lib --localstatedir = / var --with-x-toolkit = gtk3 --with-xft --with-modules 'CFLAGS = -march = x86-64 -mtune = generic -O2 -pipe -fno-plt 'CPPFLAGS = -D_FORTIFY_SOURCE = 2 LDFLAGS = -Wl, -O1, - sort-common, - nach Bedarf, -z, relro, -z, jetzt)
windowsys x
Daemonp-Server läuft
Doom Version 2.0.9
HEAD erstellen -> c6518498b entwickeln 2020-01-28 14:07:08 -0500
dir ~ / .doom.d /
Systemtyp gnu / linux
config x86_64-pc-linux-gnu
Shell / Bin / Bash
uname Linux 5.4.14-arch1-1 # 1 SMP PREEMPT Do, 23. Januar 2020 10:07:05 +0000 x86_64
Pfad (/ usr / local / bin / usr / local / sbin / usr / bin / usr / bin / site_perl / usr / bin / vendor_perl / usr / bin / core_perl /usr/lib/emacs/26.3/x86_64-pc-linux -Gnu/)
config envfile envvar-datei
elc-files 0
module (: abschlussfirma ivy: ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (popup + alle + standardwerte) vc-gutter vi-tilde-fringe fensterauswahl arbeitsbereiche: editor (böse + überall) datei -templates falten mehrere Cursor drehen Textausschnitte: emacs dired electric ibuffer vc: checkers Syntax: tools (eval + overlay) (Lookup + docsets) lsp magit: lang cc csharp Daten emacs-lisp markdown (org + dragndrop + present) sh : config (Standard + Bindungen + Smartparens))
Pakete (n / a)
elpa (s Popup pkg-info flycheck f epl dash csharp-mode auto-complete)
Unpin (n / a)
`` `

:lang cc :lang csharp :tools lsp question elisp

Alle 21 Kommentare

Warum nicht beim VS-Code bleiben?

weil ich doom emacs verwenden möchte und nicht vscode verwenden möchte ..

Versuchen Sie, :lang (cc +lsp) aktivieren und ccls auf Ihrem System zu installieren. Es verwendet dasselbe Backend wie vscode. Ich bin nicht an einem PC, um zu überprüfen, aber ich glaube, das csharp-Modul unterstützt auch +lsp (mit omnisharp).

Dies funktioniert, aber nur für C ++. Es heißt, es gibt kein LSP für Csharpmode.

:lang (csharp +lsp) erwartet, dass https://github.com/OmniSharp/omnisharp-roslyn installiert wird.

Ohne +lsp wir https://github.com/OmniSharp/omnisharp-emacs , wodurch auch Omnisharp verwendet wird.

Haben Sie auf jeden Fall omnisharp installiert?

Ja, unter Arch Linux, was ich getan habe:

  1. Klon omnisharp-roslyn von AUR
  2. cd in dir und makepkg -si
    (es ist die gleiche Methode für ccls)

Beim Öffnen der CS-Datei sagt das Protokoll "LSP :: Kein LSP-Server für den csharp-Modus ( lsp-log überprüfen)"

Installiert das den Server in Ihrem PATH ?

Versuchen Sie, den Debug-Modus zu aktivieren: SPC h d d öffnen Sie dann den Puffer *lsp-log* (mit SPC b B lsp-log ) und sehen Sie, was darin steht.

Seltsamerweise gibt es keinen LSP-Protokollpuffer, irgendwelche Ideen?

Versuchen Sie, Fehler- oder Nachrichtenpuffer zu überprüfen.
Versuchen Sie, which OmniSharp auszuführen

@LarryLeb Haben Sie nach dem Aktivieren des Debug-Modus einen C #

Gab es eine LSP-Ausgabe in * Nachrichten *? ( SPC h e )

' @myrgy Ausführen von Befehlen im Linux-Terminal:
welches omnisharp zurückgibt " welches: kein omnisharp in (/ usr / local / bin: / usr / local / sbin: / usr / bin: / usr / bin / site_perl: / usr / bin / vendor_perl: / usr / bin / core_perl) ""

welches omnisharp-roslyn zurückgibt " welches: kein omnisharp-roslyn in (/ usr / local / bin: / usr / local / sbin: / usr / bin: / usr / bin / site_perl: / usr / bin / vendor_perl: / usr / bin / core_perl) "

Obwohl ich sehen kann, dass omnisharp-roslyn mit pacman -Qet installiert ist

@hlissner ja, ich habe doom emacs im Hauptbildschirm ohne Puffer geöffnet und bin dann in den Debug-Modus gegangen und habe dann die csharp-Datei geöffnet und es gibt kein lsplog , das mit SPC-bB gefunden werden kann. Hier ist der Nachrichtenpuffer .
https://pastebin.com/DrwK7SFd

Sie können versuchen, einen symbolischen Link in einen der Ordner zu legen.

Hallo @ LarryLeb , hast du es geschafft, das Problem zu beheben?

@myrgy nein

Um sicherzugehen, können Sie bestätigen, dass es auf Ihrem Computer funktioniert. Da ich sowohl Arch Linux als auch Windows 10 ausprobiert habe, haben beide das gleiche Problem.

Entschuldigung für die späte Antwort. Aber ich benutze OmniSharp nicht. Aber ccls und Python-Vervollständigung funktionieren gut für mich.

Ich würde mich freuen, wenn Sie es versuchen und mich wissen lassen könnten, ob es funktioniert

@ LarryLeb

Möglicherweise haben Sie besseres Glück, wenn Sie omnisharp-roselyn über den LSP-Modus mit lsp-install-server installieren. Ich habe dies getan und konnte den Puffer lsp-log - aber ich bin auf dieselben Probleme gestoßen, die im folgenden Thread erwähnt wurden.

Die LSP-Unterstützung wurde jedoch noch nicht vollständig perfektioniert. Überprüfen Sie dieses Problem: https://github.com/emacs-lsp/lsp-mode/issues/1125

Schauen Sie sich insbesondere diese PR an, die im obigen Thread erwähnt wurde: https://github.com/emacs-lsp/lsp-mode/issues/1125#issuecomment -607412250

Es sieht so aus, als ob Razzmatazz es geschafft hat, die meisten Funktionen für ihn zum Laufen zu bringen.

Die gute Nachricht ist, dass anscheinend MS-Entwickler von OmniSharp aktiv an LSP-Verbesserungen arbeiten (gemäß Commits an die Hauptniederlassung unter https://github.com/OmniSharp/csharp-language-server-protocol).


In der Zwischenzeit ist Omnisharp-Emacs die beste Alternative.

@coltoneakins

Seltsam, lsp-csharp funktioniert nur manchmal. Nicht immer!

Warten auf die Annahme von

@coltoneakins

Seltsam, lsp-csharp funktioniert nur manchmal. Nicht immer!

Warten auf die Annahme von

Oh, diese PR braucht noch etwas Arbeit und - hoffentlich - auch Hilfe von Betreuern von Omnisharp-Roslyn, da ich nicht sicher bin, wie ich dieses Problem mit PollingFileChangeToken beheben kann, das in CI auftaucht:

Ich habe dieses Problem.

Schritte:

  1. Kommentar lsp.
  2. Setzen Sie (csharp + lsp) auf: lang
  3. Installieren Sie omnisharp-roslyn: brew install omnisharp/omnisharp-roslyn/omnisharp
  4. Ausführen: doom sync
  5. Ausführen: doom env
  6. Öffnen Sie eine CS-Datei und im Protokoll steht "LSP :: Kein LSP-Server für den csharp-Modus (überprüfen Sie * lsp-log *)."

Versuchen Sie, Fehler- oder Nachrichtenpuffer zu überprüfen.
Versuchen Sie, which OmniSharp auszuführen

~ Bash$ welche omnisharp/ usr / local / bin / omnisharp~

@LarryLeb Haben Sie nach dem Aktivieren des Debug-Modus einen C # lsp-log gesucht haben ?

Gab es eine LSP-Ausgabe in Nachrichten ? ( SPC h e )

Wie bei @LarryLeb gibt es keinen Puffer * lsp-log *.

@LarryLeb Haben Sie nach dem Aktivieren des Debug-Modus einen C # lsp-log gesucht haben ?

Gab es eine LSP-Ausgabe in Nachrichten ? ( SPC h e )

Debug mode on Note: standard-indent, tab-width, evil-shift-width adjusted to 4 DOOM Running doom hook: lsp! DOOM [ui/doom-dashboard] Changed dashboard’s PWD to <path-to-project-instead> LSP :: No LSP server for csharp-mode(check *lsp-log*). Garbage collecting...done (0.089s)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen