Doom-emacs: preenchimento automático c ++ e c #

Criado em 28 jan. 2020  ·  21Comentários  ·  Fonte: hlissner/doom-emacs

O que você está tentando alcançar?
Fazer meu emacs funcionar como vscode, o mesmo que se eu instalasse as extensões vscode c ++ e c # (para a unidade) e tivesse o autocomplete (o principal que me interessa). Pesquisei muito e a única coisa que descobri é que preciso usar o modo empresa, não tenho certeza se há outras formas, se houver, por favor, me instrua.

O que você tentou?
Entrei em .doom.d / init.el e descomentei cc e csharp e fiz uma 'atualização bin / doom', mas estou apenas obtendo realce de sintaxe (cores no texto).

Informação do sistema


emacs versão 26.3
recursos XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFICAR ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XDBE XIM MODULES THREADS LIBSYSTEM2
construir em 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 = genérico -O2 -pipe -fno-plt 'CPPFLAGS = -D_FORTIFY_SOURCE = 2 LDFLAGS = -Wl, -O1, - sort-common, - conforme necessário, -z, relro, -z, agora)
windowsys x
daemonp server-running
doom versão 2.0.9
construir HEAD -> desenvolver 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 Qui, 23 de janeiro de 2020 10:07:05 +0000 x86_64
caminho (/ 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-file
elc-files 0
módulos (: conclusão empresa ivy: ui doom doom-painel doom-quit hl-todo modeline nav-flash ophints (pop-up + todos + padrões) vc-gutter vi-til-fringe janela-selecionar espaços de trabalho: editor (maldade + em todos os lugares) arquivo -modelos dobrar cursores múltiplos rotacionar snippets de texto: emacs dired electric ibuffer vc: checkers sintaxe: tools (eval + overlay) (lookup + docsets) lsp magit: lang cc csharp data emacs-lisp markdown (org + dragndrop + present) sh : config (padrão + ligações + smartparens))
pacotes (n / a)
elpa (s popup pkg-info flycheck f epl dash csharp-mode auto-complete)
desafixar (n / a)
`` `

:lang cc :lang csharp :tools lsp question elisp

Todos 21 comentários

Por que não ficar com o código VS?

porque eu quero usar doom emacs e não quero usar vscode ..

Tente habilitar :lang (cc +lsp) e instalar ccls em seu sistema. Ele usa o mesmo back-end do vscode. Não estou em um PC para verificar, mas acredito que o módulo csharp também suporta +lsp (com omnisharp).

isso está funcionando, mas apenas para c ++, ele diz que não há lsp para csharpmode.

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

Sem +lsp , usamos https://github.com/OmniSharp/omnisharp-emacs , que também acaba usando omnisharp.

Em qualquer caso, você instalou o omnisharp?

Sim, no Arch Linux o que eu fiz:

  1. clone omnisharp-roslyn de AUR
  2. cd em dir e makepkg -si
    (é o mesmo método para ccls)

ao abrir o arquivo .cs, o log diz "LSP :: Nenhum servidor LSP para o modo csharp (verifique lsp-log )"

Isso instala o servidor em seu PATH ?

Tente ativar o modo de depuração: SPC h d d então abra o buffer *lsp-log* (com SPC b B lsp-log ) e veja o que ele diz.

estranhamente não há buffer de log lsp, alguma ideia?

Tente verificar os buffers de erro ou mensagem.
tente executar which OmniSharp

@LarryLeb Você abriu um buffer C # após ativar o modo de depuração, mas antes de verificar o * lsp-log *?

Houve alguma saída LSP em * Mensagens *? ( SPC h e )

' @myrgy executando comandos no terminal linux:
qual omnisharp retorna " que: nenhum omnisharp em (/ usr / local / bin: / usr / local / sbin: / usr / bin: / usr / bin / site_perl: / usr / bin / vendor_perl: / usr / bin / core_perl) "

qual omnisharp-roslyn retorna " que: não omnisharp-roslyn em (/ usr / local / bin: / usr / local / sbin: / usr / bin: / usr / bin / site_perl: / usr / bin / vendor_perl: / usr / bin / core_perl) "

Embora eu possa ver que omnisharp-roslyn está instalado com pacman -Qet

@hlissner sim, eu abri doom emacs na tela principal sem buffers e então entrei no modo de depuração e então abri o arquivo csharp e não há nenhum lsplog encontrado com SPC-bB. Aqui está o buffer de mensagens .
https://pastebin.com/DrwK7SFd

Você pode tentar colocar um link simbólico em uma das pastas bin.

Olá @LarryLeb , você conseguiu consertar o problema?

@myrgy não

só para ter certeza, você pode confirmar se ele está funcionando em sua máquina. Porque eu tentei tanto o arch linux quanto o windows 10, ambos têm o mesmo problema.

Desculpe pelo atraso na resposta. Mas eu não uso OmniSharp. Mas a conclusão ccls e python funciona bem para mim.

agradeceria se você pudesse experimentar e me avisar se funciona

@LarryLeb

Você pode ter mais sorte instalando omnisharp-roselyn através do modo LSP usando lsp-install-server . Eu fiz isso e pude ver o buffer lsp-log - mas, encontrei os mesmos problemas mencionados no tópico abaixo.

Mas, o suporte LSP ainda não foi totalmente aperfeiçoado. Verifique este problema: https://github.com/emacs-lsp/lsp-mode/issues/1125

E mais especificamente, verifique este PR mencionado no tópico do problema acima: https://github.com/emacs-lsp/lsp-mode/issues/1125#issuecomment -607412250

_Parece que razzmatazz conseguiu fazer com que a maioria dos recursos funcionasse para ele._

A boa notícia é que parece que os desenvolvedores MS da OmniSharp estão trabalhando ativamente nas melhorias do LSP (por commits para o branch master em https://github.com/OmniSharp/csharp-language-server-protocol).


Enquanto isso, omnisharp-emacs é a melhor alternativa.

@coltoneakins

Estranho, lsp-csharp funciona às vezes. Mas nem sempre!

Aguardando o commit de @razzmatazz ser aceito : D

@coltoneakins

Estranho, lsp-csharp funciona às vezes. Mas nem sempre!

Aguardando o commit de @razzmatazz ser aceito : D

Oh, esse PR ainda precisa de algum trabalho e - espero - de alguma ajuda dos mantenedores do omnisharp-roslyn também, já que não tenho certeza de como consertar esse problema com PollingFileChangeToken que aparece no CI:

Eu tenho esse problema.

Passos:

  1. Descomente lsp.
  2. Defina (csharp + lsp) para: lang
  3. Instale omnisharp-roslyn: brew install omnisharp/omnisharp-roslyn/omnisharp
  4. Executar: doom sync
  5. Executar: doom env
  6. Abra um arquivo .cs e o log dirá "LSP :: Nenhum servidor LSP para o modo csharp (verifique * lsp-log *)."

Tente verificar os buffers de erro ou mensagem.
tente executar which OmniSharp

~ bash$ which omnisharp/ usr / local / bin / omnisharp~

@LarryLeb Você abriu um buffer C # depois de ativar o modo de depuração, mas antes de verificar o lsp-log ?

Houve alguma saída LSP nas mensagens ? ( SPC h e )

O mesmo que @LarryLeb , não há buffer * lsp-log *.

@LarryLeb Você abriu um buffer C # depois de ativar o modo de depuração, mas antes de verificar o lsp-log ?

Houve alguma saída LSP nas mensagens ? ( 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)

Esta página foi útil?
0 / 5 - 0 avaliações