Doom-emacs: C ++ ๋ฐ C # ์ž๋™ ์™„์„ฑ

์— ๋งŒ๋“  2020๋…„ 01์›” 28์ผ  ยท  21์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: hlissner/doom-emacs

๋ฌด์—‡์„ ์„ฑ์ทจํ•˜๋ ค๊ณ ํ•˜์‹ญ๋‹ˆ๊นŒ?
๋‚ด emacs๊ฐ€ vscode์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋„๋กํ•˜๋Š” ๊ฒƒ์€ ๋งˆ์น˜ ๋‚ด๊ฐ€ C ++ ๋ฐ C # (ํ†ตํ•ฉ์„ ์œ„ํ•ด) vscode ํ™•์žฅ์„ ์„ค์น˜ํ•˜๊ณ  ์ž๋™ ์™„์„ฑ (๋‚ด๊ฐ€ ์‹ ๊ฒฝ ์“ฐ๋Š” ์ฃผ์š”)์„ ๊ฐ–๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์กฐ์‚ฌ๋ฅผ ๋งŽ์ดํ–ˆ๋Š”๋ฐ ํšŒ์‚ฌ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ €๋ฅผ ๊ต์œก ํ•ด์ฃผ์„ธ์š”.

๋‹น์‹ ์€ ๋ฌด์—‡์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ?
๋‚˜๋Š” .doom.d / init.el์— ๋“ค์–ด๊ฐ€ ์ฃผ์„์„ ์ œ๊ฑฐํ•˜๊ณ  cc์™€ csharp๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  'bin / doom refresh'๋ฅผํ–ˆ์ง€๋งŒ ๊ตฌ๋ฌธ ๊ฐ•์กฐ (ํ…์ŠคํŠธ์˜ ์ƒ‰์ƒ) ๋งŒ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์ •๋ณด


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 THREADS LIBSYSTEMD LCMS2
๋นŒ๋“œ 8 ์›” 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-needed, -z, relro, -z, ์ง€๊ธˆ)
windowsys 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 Thu, 23 Jan 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 -์•”์†Œ ๋น„์Šทํ•œ ์ผ์ข…์˜ ์˜์–‘/)
ํ™˜๊ฒฝ ์„ค์ • envfile envvar-file
elc ํŒŒ์ผ 0
๋ชจ๋“ˆ (: completion company 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 + everywhere) file -templates fold multi-cursors rotate-text snippets : emacs dired electric ibuffer vc : checkers syntax : tools (eval + overlay) (lookup + docsets) lsp magit : lang cc csharp data emacs-lisp markdown (org + dragndrop + present) sh : config (๊ธฐ๋ณธ๊ฐ’ + bindings + 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์™€ ๋™์ผํ•œ ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” 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๋ฅผ ์„ค์น˜ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜, ์•„์น˜ ๋ฆฌ๋ˆ…์Šค์—์„œ ๋‚ด๊ฐ€ ํ•œ ์ผ :

  1. AUR์—์„œ omnisharp-roslyn ๋ณต์ œ
  2. dir ๋ฐ makepkg์— cd -si
    (ccls์™€ ๋™์ผํ•œ ๋ฐฉ๋ฒ•)

.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-roslyn์ด " ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค

omnisharp-roslyn์ด pacman -Qet๊ณผ ํ•จ๊ป˜ ์„ค์น˜๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ

@hlissner ์˜ˆ, ๋ฒ„ํผ์—†์ด ๋ฉ”์ธ ํ™”๋ฉด์—์„œ doom emacs๋ฅผ ์—ฐ ๋‹ค์Œ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ๋“ค์–ด๊ฐ„ ๋‹ค์Œ csharp ํŒŒ์ผ์„ ์—ด์—ˆ๊ณ  SPC-bB์—์„œ ์ฐพ์„ ์ˆ˜์žˆ๋Š” lsplog ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋ฉ”์‹œ์ง€ ๋ฒ„ํผ์ž…๋‹ˆ๋‹ค.
https://pastebin.com/DrwK7SFd

bin ํด๋” ์ค‘ ํ•˜๋‚˜์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋„ฃ์œผ๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @LarryLeb , ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

ํ™•์‹คํžˆํ•˜๊ธฐ ์œ„ํ•ด ์ปดํ“จํ„ฐ์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ive๋Š” arch linux์™€ windows 10์„ ๋ชจ๋‘ ์‹œ๋„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜ ๋‹ค ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Šฆ์€ ๋‹ต๋ณ€ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋Š” OmniSharp๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ccls์™€ ํŒŒ์ด์ฌ ์™„์„ฑ์€ ์ €์—๊ฒŒ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๋„ํ•ด ์ฃผ์‹œ๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฟก๋ฟก

lsp-install-server ์‚ฌ์šฉํ•˜์—ฌ LSP ๋ชจ๋“œ๋ฅผ ํ†ตํ•ด omnisharp-roselyn์„ ์„ค์น˜ํ•˜๋Š” ๋ฐ ๋” ๋‚˜์€ ์šด์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๊ณ  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๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ._

์ข‹์€ ์†Œ์‹์€ OmniSharp์˜ MS ๊ฐœ๋ฐœ์ž๊ฐ€ LSP ๊ฐœ์„ ์„ ์œ„ํ•ด ์ ๊ทน์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (https://github.com/OmniSharp/csharp-language-server-protocol์—์„œ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ ์ปค๋ฐ‹ ๋‹น).


๊ทธ๋™์•ˆ omnisharp-emacs๊ฐ€ ์ตœ์ƒ์˜ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.

์ด์ƒํ•˜๊ฒŒ๋„ lsp-csharp๋Š” ๊ฐ€๋” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค!

@razzmatazz ์ปค๋ฐ‹์ด ์ˆ˜๋ฝ

์•ˆ๋…•ํ•˜์„ธ์š”.

์ด์ƒํ•˜๊ฒŒ๋„ lsp-csharp๋Š” ๊ฐ€๋” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค!

@razzmatazz ์ปค๋ฐ‹์ด ์ˆ˜๋ฝ

์˜ค, ๊ทธ PR์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์•ฝ๊ฐ„์˜ ์ž‘์—…์ด ํ•„์š”ํ•˜๊ณ -๋ฐ”๋ผ๊ฑด๋Œ€-CI์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” PollingFileChangeToken ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ  ๊ธฐ ๋•Œ๋ฌธ์— omnisharp-roslyn์˜ ๊ด€๋ฆฌ์ž์˜ ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ๊ณ„ :

  1. lsp์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.
  2. (csharp + lsp)๋ฅผ : lang์œผ๋กœ ์„ค์ •
  3. omnisharp-roslyn ์„ค์น˜ : brew install omnisharp/omnisharp-roslyn/omnisharp
  4. ์‹คํ–‰ : doom sync
  5. ์‹คํ–‰ : doom env
  6. .cs ํŒŒ์ผ์„ ์—ด๋ฉด ๋กœ๊ทธ์— "LSP :: No LSP server for csharp-mode (check * lsp-log *)"๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋˜๋Š” ๋ฉ”์‹œ์ง€ ๋ฒ„ํผ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
which OmniSharp ์‹คํ–‰ ์‹œ๋„

~ bash$ ์–ด๋–ค omnisharp/ usr / local / bin / omnisharp~

@LarryLeb ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™” ํ•œ ํ›„ -log ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์ „์— C # ๋ฒ„ํผ๋ฅผ ์—ด์—ˆ ์Šต๋‹ˆ๊นŒ?

๋ฉ”์‹œ์ง€์— LSP ์ถœ๋ ฅ์ด ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? ( SPC h e )

@LarryLeb ์™€ ๋™์ผํ•˜๊ฒŒ * lsp-log * ๋ฒ„ํผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@LarryLeb ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™” ํ•œ ํ›„ -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 ๋“ฑ๊ธ‰