Doom-emacs: c ++ и c # автозаполнение

Созданный на 28 янв. 2020  ·  21Комментарии  ·  Источник: hlissner/doom-emacs

Чего вы пытаетесь достичь?
Заставить мои emacs работать как vscode, так же, как если бы я установил расширения vscode c ++ и c # (для единства) и получил автозаполнение (основное, о котором я забочусь). Я много исследовал, и единственное, что я понял, это то, что мне нужно использовать режим компании, не уверен, есть ли другие способы, если да, пожалуйста, научите меня.

Что пробовали?
Я вошел в .doom.d / init.el, раскомментировал cc и csharp и сделал «обновление bin / doom», но получаю только подсветку синтаксиса (цвета текста).

Системная информация


emacs версии 26.3
особенности XPM JPEG TIFF GIF PNG RSVG ИЗОБРАЖЕНИЕ ЗВУК GPM DBUS GSETTINGS GLIB NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM МОДУЛИ LCMSYSTEMD LIB
сборка 29 авг.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, - as-required, -z, relro, -z, сейчас)
windowsys x
демон запущенный на сервере
doom версия 2.0.9
build HEAD -> разработка c6518498b 2020-01-28 14:07:08 -0500
каталог ~ / .doom.d /
тип системы gnu / linux
конфигурация x86_64-pc-linux-gnu
оболочка / bin / bash
uname Linux 5.4.14-arch1-1 # 1 SMP PREEMPT Вт, 23 января 2020 г., 10:07:05 +0000 x86_64
путь (/ 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-файл
elc-файлы 0
модули (: завершение компании 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 + везде) файл -templates свернуть несколько курсоров rotate-text snippets: emacs dired electric ibuffer vc: checkers синтаксис: tools (eval + overlay) (lookup + docsets) lsp magit: lang cc csharp data emacs-lisp markdown (org + dragndrop + present) sh : config (по умолчанию + привязки + smartparens))
пакеты (н / д)
elpa (s popup pkg-info flycheck f epl dash csharp-mode auto-complete)
открепить (н / д)
`` ''

:lang cc :lang csharp :tools lsp question elisp

Все 21 Комментарий

Почему бы не придерживаться кода VS?

потому что я хочу использовать doom emacs и не хочу использовать vscode ..

Попробуйте включить :lang (cc +lsp) и установить ccls в вашей системе. Он использует тот же бэкэнд, что и vscode. Я не нахожусь на ПК для проверки, но считаю, что модуль csharp также поддерживает +lsp (с omnisharp).

это работает, но только для c ++, в нем говорится, что для csharpmode нет lsp.

:lang (csharp +lsp) ожидает установки https://github.com/OmniSharp/omnisharp-roslyn .

Без +lsp мы используем https://github.com/OmniSharp/omnisharp-emacs , что также приводит к использованию omnisharp.

В любом случае, вы установили omnisharp?

да, на Arch Linux, что я сделал:

  1. клон omnisharp-roslyn из AUR
  2. cd в каталог и makepkg -si
    (это тот же метод для ccls)

при открытии файла .cs в журнале говорится: «LSP :: Нет сервера LSP для режима csharp (проверьте

Это устанавливает сервер в ваш PATH ?

Попробуйте активировать режим отладки: SPC h d d затем откройте буфер *lsp-log* (с помощью SPC b B lsp-log ) и посмотрите, что там написано.

Как ни странно, буфера журнала lsp нет, есть идеи?

Попробуйте проверить буферы ошибок или сообщений.
попробуйте запустить which OmniSharp

@LarryLeb Вы открывали буфер C # после активации режима отладки, но до проверки наличия * lsp-log *?

Был ли вывод LSP в * Сообщениях *? ( SPC h e )

' @mygery запущенные команды в терминале Linux:
which omnisharp возвращает " 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 возвращает " which: no omnisharp-roslyn в (/ usr / local / bin: / usr / local / sbin: / usr / bin: / usr / bin / site_perl: / usr / bin / vendor_perl: / usr / bin / core_perl) "

Хотя я вижу, что omnisharp-roslyn устанавливается с помощью pacman -Qet

@hlissner да, я открыл doom emacs на главном экране без буферов, а затем перешел в режим отладки, а затем открыл файл csharp, и с SPC-bB не было найдено lsplog . Вот буфер сообщений .
https://pastebin.com/DrwK7SFd

Вы можете попробовать поместить символическую ссылку в одну из папок bin.

Привет, @LarryLeb , тебе удалось решить проблему?

@mygy нет

на всякий случай, можете ли вы подтвердить, что он работает на вашем компьютере. Поскольку ive пробовал как Arch Linux, так и Windows 10, у них одна и та же проблема.

Извините за задержку с ответом. Но я не использую OmniSharp. Но ccls и завершение python у меня работают нормально.

был бы признателен, если бы вы могли попробовать и сообщить мне, работает ли это

@LarryLeb

Возможно, вам больше повезет с установкой omnisharp-roselyn в режиме LSP с использованием lsp-install-server . Я сделал это, и я мог видеть буфер lsp-log но я столкнулся с теми же проблемами, которые упомянуты в потоке ниже.

Но поддержка LSP еще не доведена до совершенства. Проверьте эту проблему: https://github.com/emacs-lsp/lsp-mode/issues/1125

И, в частности, ознакомьтесь с этим PR, упомянутым в вышеупомянутой теме: https://github.com/emacs-lsp/lsp-mode/issues/1125#issuecomment -607412250

_Похоже, razzmatazz сумел заставить работать на него большинство функций.

Хорошая новость заключается в том, что похоже, что разработчики MS из OmniSharp активно работают над улучшениями LSP (за каждую фиксацию в основной ветке https://github.com/OmniSharp/csharp-language-server-protocol).


А пока лучшей альтернативой является omnisharp-emacs.

@coltoneakins

Странно, но lsp-csharp иногда работает. Но не всегда!

Жду принятия @razzmatazz ! : D

@coltoneakins

Странно, но lsp-csharp иногда работает. Но не всегда!

Жду принятия @razzmatazz ! : D

О, этот PR все еще нуждается в некоторой доработке и, надеюсь, в некоторой помощи со стороны сопровождающих omnisharp-roslyn, так как я не уверен, как исправить эту проблему с помощью PollingFileChangeToken который появляется в CI:

У меня такая проблема.

Шаги:

  1. Раскомментируйте lsp.
  2. Установите (csharp + lsp) на: lang
  3. Установите omnisharp-roslyn: brew install omnisharp/omnisharp-roslyn/omnisharp
  4. Выполнить: doom sync
  5. Выполнить: doom env
  6. Откройте файл .cs, и в журнале будет указано «LSP :: Нет LSP-сервера для режима csharp (проверьте * lsp-log *)».

Попробуйте проверить буферы ошибок или сообщений.
попробуйте запустить which OmniSharp

~ баш$ which omnisharp/ USR / местные / бен / omnisharp~

@LarryLeb Вы открывали буфер C # после активации режима отладки, но до того, как проверили lsp-log ?

Был ли в сообщениях какой-либо вывод LSP? ( SPC h e )

Как и @LarryLeb , здесь нет буфера * lsp-log *.

@LarryLeb Вы открывали буфер C # после активации режима отладки, но до того, как проверили lsp-log ?

Был ли в сообщениях какой-либо вывод LSP? ( 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)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги