Doom-emacs: c ++ y c # autocompletar

Creado en 28 ene. 2020  ·  21Comentarios  ·  Fuente: hlissner/doom-emacs

¿Qué estás intentando lograr?
Hacer que mi emacs funcione como vscode, lo mismo que si instalo las extensiones de vscode c ++ y c # (para la unidad) y tengo autocompletar (la principal que me importa). Investigué mucho y lo único que obtuve es que necesito usar el modo de empresa, no estoy seguro de si hay otras formas, de ser así, por favor, infórmeme.

Que has probado
Entré en .doom.d / init.el y descomenté cc y csharp e hice una 'actualización bin / doom' pero solo obtengo resaltado de sintaxis (colores en el texto).

Información del sistema


emacs versión 26.3
características XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADMS LIB2SYSTEMD LC
construir 29 de agosto de 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, - según sea necesario, -z, relro, -z, ahora)
windowsys x
servidor daemonp en ejecución
Doom versión 2.0.9
build HEAD -> desarrollar c6518498b 2020-01-28 14:07:08 -0500
dir ~ / .doom.d /
tipo de sistema gnu / linux
config x86_64-pc-linux-gnu
shell / bin / bash
uname Linux 5.4.14-arch1-1 # 1 SMP PREEMPT Jue, 23 de enero de 2020 10:07:05 +0000 x86_64
ruta (/ 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 -ñu/)
config envfile archivo envvar
archivos elc 0
módulos (: empresa de finalización ivy: ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (popup + all + defaults) vc-gutter vi-tilde-fringe window-select workspaces: editor (evil + anywhere) file -plantillas pliegues múltiples-cursores rotar-fragmentos de texto: emacs dired electric ibuffer vc: checkers sintaxis: herramientas (eval + overlay) (lookup + docsets) lsp magit: lang cc csharp data emacs-lisp markdown (org + dragndrop + present) sh : config (predeterminado + enlaces + smartparens))
paquetes (n / a)
elpa (s popup pkg-info flycheck f epl dash csharp-mode auto-complete)
desanclar (n / a)
''

:lang cc :lang csharp :tools lsp question elisp

Todos 21 comentarios

¿Por qué no seguir con el código VS?

porque quiero usar doom emacs y no quiero usar vscode ..

Intente habilitar :lang (cc +lsp) e instalar ccls en su sistema. Utiliza el mismo backend que vscode. No estoy en una PC para verificar, pero creo que el módulo csharp también admite +lsp (con omnisharp).

esto funciona pero solo para c ++, dice que no hay lsp para csharpmode.

:lang (csharp +lsp) espera que se instale https://github.com/OmniSharp/omnisharp-roslyn .

Sin +lsp , usamos https://github.com/OmniSharp/omnisharp-emacs , que también termina usando omnisharp.

En cualquier caso, ¿ha instalado omnisharp?

sí, en arch linux lo que hice:

  1. clon omnisharp-roslyn de AUR
  2. cd en dir y makepkg -si
    (es el mismo método para ccls)

cuando abre el archivo .cs, el registro dice "LSP :: No hay servidor LSP para el modo csharp (verifique lsp-log )"

¿Eso instala el servidor en su PATH ?

Intente activar el modo de depuración: SPC h d d luego abra el búfer *lsp-log* (con SPC b B lsp-log ) y vea lo que dice.

curiosamente no hay búfer de registro lsp, ¿alguna idea?

Intente comprobar los búferes de mensajes o errores.
intenta ejecutar which OmniSharp

@LarryLeb ¿

¿Hubo alguna salida LSP en * Messages *? ( SPC h e )

' @myrgy ejecutando comandos en la terminal de Linux:
which omnisharp devuelve " which: no omnisharp in (/ usr / local / bin: / usr / local / sbin: / usr / bin: / usr / bin / site_perl: / usr / bin / vendor_perl: / usr / bin / core_perl) "

which omnisharp-roslyn devuelve " which: no omnisharp-roslyn in (/ usr / local / bin: / usr / local / sbin: / usr / bin: / usr / bin / site_perl: / usr / bin / vendor_perl: / usr / bin / core_perl) "

Aunque puedo ver que omnisharp-roslyn está instalado con pacman -Qet

@hlissner sí, abrí doom emacs en la pantalla principal sin búferes y luego entré en modo de depuración y luego abrí el archivo csharp y no hay lsplog que se pueda encontrar con SPC-bB. Aquí está el búfer de mensajes .
https://pastebin.com/DrwK7SFd

Puede intentar poner un enlace simbólico en una de las carpetas bin.

Hola @LarryLeb , ¿has logrado solucionar el problema?

@myrgy nope

solo para estar seguro, ¿puede confirmar que está funcionando en su máquina? Debido a que he probado tanto Arch Linux como Windows 10, ambos tienen el mismo problema.

Lo siento por la respuesta tardía. Pero yo no uso OmniSharp. Pero la finalización de ccls y python funciona bien para mí.

agradecería si pudiera probarlo y avisarme si funciona

@LarryLeb

Es posible que tenga más suerte instalando omnisharp-roselyn a través del modo LSP usando lsp-install-server . Hice esto y pude ver el búfer lsp-log , pero encontré los mismos problemas mencionados en el hilo a continuación.

Pero el soporte de LSP aún no se ha perfeccionado del todo. Consulte este problema: https://github.com/emacs-lsp/lsp-mode/issues/1125

Y más específicamente, consulte este PR mencionado en el hilo del problema anterior: https://github.com/emacs-lsp/lsp-mode/issues/1125#issuecomment -607412250

_Parece que Razzmatazz logró que la mayoría de las funciones le funcionen.

La buena noticia es que parece que los desarrolladores de MS de OmniSharp están trabajando activamente en las mejoras de LSP (según las confirmaciones de la rama maestra en https://github.com/OmniSharp/csharp-language-server-protocol).


Mientras tanto, omnisharp-emacs es la mejor alternativa.

@coltoneakins

Extraño, lsp-csharp funciona a veces. ¡Pero no siempre!

¡Esperando que @razzmatazz se comprometa a ser aceptado! :RE

@coltoneakins

Extraño, lsp-csharp funciona a veces. ¡Pero no siempre!

¡Esperando que @razzmatazz se comprometa a ser aceptado! :RE

Oh, ese PR todavía necesita algo de trabajo y, con suerte, algo de ayuda de los mantenedores de omnisharp-roslyn también, ya que no estoy seguro de cómo solucionar ese problema con PollingFileChangeToken que aparece en CI:

Tengo este problema.

Pasos:

  1. Descomente lsp.
  2. Establezca (csharp + lsp) en: lang
  3. Instalar omnisharp-roslyn: brew install omnisharp/omnisharp-roslyn/omnisharp
  4. Ejecutar: doom sync
  5. Ejecutar: doom env
  6. Abra un archivo .cs y el registro dice "LSP :: No hay servidor LSP para el modo csharp (marque * lsp-log *)".

Intente comprobar los búferes de mensajes o errores.
intenta ejecutar which OmniSharp

~ golpe$ que omnisharp/ usr / local / bin / omnisharp~

@LarryLeb ¿ lsp-log ?

¿Hubo alguna salida LSP en Mensajes ? ( SPC h e )

Al igual que @LarryLeb , no hay búfer * lsp-log *.

@LarryLeb ¿ lsp-log ?

¿Hubo salida LSP en Mensajes ? ( 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)

¿Fue útil esta página
0 / 5 - 0 calificaciones