Doom-emacs: C ++和C#自动完成

创建于 2020-01-28  ·  21评论  ·  资料来源: hlissner/doom-emacs

您想达到什么目的?
让我的emacs像vscode一样工作,就像我安装c ++和c#(用于统一)vscode扩展并具有自动完成功能(我关心的主要功能)一样。 我做了很多研究,唯一得到的是我需要使用公司模式,不确定是否还有其他方法,如果可以,请教育我。

你尝试了什么?
我进入了.doom.d / init.el,未注释cc和csharp,并进行了“ bin / doom刷新”,但仅得到语法高亮显示(文本上的颜色)。

系统信息


emacs版本26.3
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 THBS LIBSYSTEMD LCMS2
建立2019年8月29日
buildopts(--prefix = / usr --sysconfdir = / etc --libexecdir = / usr / lib --localstatedir = / var --with-x-toolkit = gtk3 --with-xft --with-modules'CFLAGS = -march = x86-64 -mtune =通用-O2-管道-fno-plt'CPPFLAGS = -D_FORTIFY_SOURCE = 2 LDFLAGS = -Wl,-O1,-sort-common,-按需,-z,relro, -z,现在)
视窗系统x
daemonp服务器运行
厄运版本2.0.9
建立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星期四,2020年1月23日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 /)
配置envfile envvar文件
ELC文件0
模块(:completion company ivy:ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints(弹出+所有+默认值)vc-gutter vi-tilde-fringe窗口选择工作区:editor(evil + everywhere)文件-templates折叠多光标旋转文本片段: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)
包装(不适用)
埃尔帕(弹出窗口pkg-info flycheck f epl dash csharp-mode自动完成)
取消固定(n / a)
```

:lang cc :lang csharp :tools lsp question elisp

所有21条评论

为什么不坚持使用VS代码?

因为我想使用末日emacs,而不想使用vscode。

尝试启用:lang (cc +lsp)并在系统上安装ccls。 它使用与vscode相同的后端。 我不在PC上进行检查,但我相信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. 从AUR克隆omnisharp-roslyn
  2. cd进入dir和makepkg -si
    (与CCL的方法相同)

打开.cs文件时,日志显示“ LSP :: csharp-mode没有LSP服务器(检查lsp-log )”

这会将服务器安装到您的PATH吗?

尝试激活调试模式: SPC h d d然后打开*lsp-log*缓冲区(带有SPC b B lsp-log )并查看其内容。

奇怪的是没有lsp日志缓冲区,有什么想法吗?

尝试检查错误或消息缓冲区。
尝试运行which OmniSharp

@LarryLeb在激活调试模式之后但在检查* lsp-log *之前是否打开了C#缓冲区?

* Messages *中是否有LSP输出? ( SPC h e

' @myrgy在Linux终端中运行命令:
哪个omnisharp返回“哪个:没有omnisharp in(/ usr / local / bin:/ usr / local / sbin:/ usr / bin:/ usr / bin / site_perl:/ usr / bin / vendor_perl:/ usr / bin / core_perl)

哪个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是的,我在没有缓冲区的主屏幕中打开了末日emacs,然后进入调试模式,然后打开了csharp文件,并且在SPC-bB中找不到lsplog 。 这是消息缓冲区。
https://pastebin.com/DrwK7SFd

您可以尝试将符号链接放入bin文件夹之一。

@LarryLeb ,您好,您是否已解决问题?

@myrgy nope

可以肯定的是,您可以确认它可以在您的计算机上正常工作吗。 因为我已经尝试了Arch Linux和Windows 10,所以都存在相同的问题。

这么晚才回复很抱歉。 但是我不使用OmniSharp。 但是ccls和python完成对我来说很好。

如果您可以尝试,将不胜感激,让我知道它是否有效

@LarryLeb

使用lsp-install-server通过LSP模式安装omnisharp-roselyn可能会更好。 我这样做了,可以看到lsp-log缓冲区-但是,我遇到了下面线程中提到的相同问题。

但是,LSP支持尚未完全完善。 查看此问题: https :

更具体地说,请查看上述问题线程中提到的PR: https :

_看起来Razzmatazz设法使大多数功能都对他有用。_

好消息是,来自OmniSharp的MS开发人员似乎正在积极地进行LSP改进(每次提交到master分支的提交都位于https://github.com/OmniSharp/csharp-language-server-protocol)。


同时,omnisharp-emacs是最好的选择。

@coltoneakins

很奇怪,lsp-csharp有时会起作用。 并非总是如此!

等待@razzmatazz承诺被接受! :D

@coltoneakins

很奇怪,lsp-csharp有时会起作用。 并非总是如此!

等待@razzmatazz承诺被接受! :D

哦,公关仍然需要一些工作,而且希望-也是omnisharp-roslyn维护者的一些帮助,因为我不确定如何使用CI中弹出的PollingFileChangeToken来解决该问题:

我有这个问题。

脚步:

  1. 取消注释lsp。
  2. 将(csharp + lsp)设置为:lang
  3. 安装omnisharp-roslyn: brew install omnisharp/omnisharp-roslyn/omnisharp
  4. 运行: doom sync
  5. 运行: doom env
  6. 打开一个.cs文件,日志中显示“ LSP ::对于csharp-mode没有LSP服务器(检查* lsp-log *)。”

尝试检查错误或消息缓冲区。
尝试运行which OmniSharp

〜重击$其中omnisharp/ usr / local / bin / omnisharp

@LarryLeb在激活调试模式之后但在检查lsp-log之前是否打开了C#缓冲区?

消息中是否有任何LSP输出? ( SPC h e

@LarryLeb一样,没有缓冲区* lsp-log *。

@LarryLeb在激活调试模式之后但在检查lsp-log之前是否打开了C#缓冲区?

消息中是否有任何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 等级