Language-tools: λ―Έμ„Έν•œ κ²½κ³ λ₯Ό μ–΄λ–»κ²Œ λΉ„ν™œμ„±ν™” ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? (a11y λ“±)

에 λ§Œλ“  2020λ…„ 11μ›” 02일  Β·  12μ½”λ©˜νŠΈ  Β·  좜처: sveltejs/language-tools

μ΄λŸ¬ν•œ κ²½κ³ λŠ” μ’…μ’… 쒋은 것보닀 더 λ§Žμ€ ν•΄λ₯Ό 끼치고 우리의 μ½˜μ†” 뢀동산을 μ˜€μ—Όμ‹œν‚΅λ‹ˆλ‹€.
<!-- svelte-ignore a11y-no-onchange --> λ“±μœΌλ‘œ μ½”λ“œλ₯Ό λ²„λ¦¬λŠ” 것은 ν—ˆμš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

일반적으둜 rollup.configμ—μ„œ 필터링 ν•  수 μžˆμ§€λ§Œ svelte-checkλŠ” μ„ νƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ„ ν•„ν„°λ§ν•˜λŠ” κ°€μž₯ 쒋은 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

  • svelte-check --watchλ₯Ό μ‚¬μš©ν•  λ•Œ μ½˜μ†”μ—μ„œ
  • VScodeμ—μ„œ (λͺ¨λ“  μ‚¬λžŒμ—κ²Œ IDE κΈ°λ³Έ 섀정에 λ§Žμ€ ν•­λͺ©μ„ μˆ˜λ™μœΌλ‘œ μΆ”κ°€ν•˜λ„λ‘ μ§€μ‹œ ν•  ν•„μš” μ—†μŒ)

ꡬ성 νŒŒμΌμ„ μ†Œκ°œ ν•  λ•Œκ°€ λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•„λ‹ˆμš”, lsp-mode μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ €λŠ” neovim의 λ‚΄μž₯ LSPλ₯Ό μ‚¬μš©ν•˜λ©° LSP에 λͺ‡ 가지 μ˜΅μ…˜μ„ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

image

lsp-mode μ—μ„œμ΄ μ˜΅μ…˜μ„ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” κ·Έκ²ƒμ˜ μœ„ν‚€μ—μ„œ λΉ λ₯΄κ²Œ μ½μ—ˆκ³  그것이 κ°€λŠ₯ ν•˜λ‹€κ³  생각 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ Lua LSP에 λͺ‡ 가지 μ˜΅μ…˜μ„ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. https://emacs-lsp.github.io/lsp-mode/page/lsp-lua-language-server/

λͺ¨λ“  12 λŒ“κΈ€

--compiler-warnings μ˜΅μ…˜μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ --compiler-warnings "css-unused-selector:ignore,unused-export-let:ignore" λŠ” λͺ¨λ“  css-unused-selector 및 unused-export-let κ²½κ³ λ₯Ό ν•„ν„°λ§ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ svelte-check readme λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.
VS Code에 λŒ€ν•΄ : λͺ¨λ“  μ‚¬μš©μžκ°€ 상속 ν•  μ €μž₯μ†Œμ— μž‘μ—… 곡간 μ„€μ • json 을 μ–Έμ œλ“ μ§€ μΆ”κ°€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 이것을 svelte.config.js μ•ˆμ— λ„£λŠ” 것을 λ§μ„€μ΄κ³ μžˆλ‹€. μ™œλƒν•˜λ©΄μ΄ μ„€μ • 파일이 μ–΄λ–€ λ°©ν–₯으둜 갈 것인지에 λŒ€ν•œ 곡식적인 ν•©μ˜κ°€ μ—†κΈ° λ•Œλ¬Έμ— 거기에 μ„œλ‘λ₯΄λŠ” 것을 μΆ”κ°€ν•˜κ³  싢지 μ•Šλ‹€.

감사.

--compiler-warnings λŠ” cliλ₯Ό μœ„ν•΄ 일을 ν•  κ²ƒμž…λ‹ˆλ‹€. μž‘μ—… 곡간 μ„€μ • json의 경우 .editorconfig 외에도 자주 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆκΉŒ?

κΈ€μŽ„, λͺ¨λ‘ VS Codeλ₯Ό μ‚¬μš©ν•˜κ³  νŠΉμ • 섀정에 λ™μ˜ν•˜λ©΄ ν™•μ‹€νžˆ μ‚¬μš©ν•  κ²ƒμž…λ‹ˆλ‹€. κ²°κ΅­ μΌμ’…μ˜ ꡬ성 νŒŒμΌμ΄κΈ°λ„ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” μ§€κΈˆ 우리 ν”„λ‘œμ νŠΈ 쀑 ν•˜λ‚˜μ—μ„œ κ·Έκ²ƒμ„ν•©λ‹ˆλ‹€.

이것은 μ–Έμ–΄ μ„œλ²„μ—λ„ μ μš©λ©λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ κ°€λŠ λ‹€λž€ μ²΄ν¬μ—λ§Œ? μ–Έμ–΄ μ„œλ²„λ₯Ό svelteserver --stdio --compiler-warnings a11y-autofocus:ignore,a11y-no-onchange:ignore 둜 μ‹€ν–‰ν•˜λ €κ³ ν–ˆμ§€λ§Œ μ–Έμ–΄ μ„œλ²„κ°€ μ—¬μ „νžˆ κ²½κ³ λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

image

이것은 lsp λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” Emacs에 μžˆμŠ΅λ‹ˆλ‹€.

이것은 vscode 및 svelte-checkμ—λ§Œ μ μš©λ©λ‹ˆλ‹€. λ‹€λ₯Έ IDEλŠ” μ–Έμ–΄ μ„œλ²„μ™€ μ–΄λ–»κ²Œ ν†΅ν•©λ©λ‹ˆκΉŒ? μ–Έμ–΄ μ„œλ²„λŠ” μ–Έμ–΄ μ„œλ²„ ν”„λ‘œν† μ½œμ— 따라 μ΄ˆκΈ°ν™” λͺ…령을 μ‹€ν–‰ν•˜λŠ” λ™μ•ˆ μ‹œμž‘μ‹œ ꡬ성 개체 (vscode ν™•μž₯ readme의 ꡬ쑰)λ₯Ό μ˜ˆμƒν•©λ‹ˆλ‹€.

μ•Œμ•˜μ–΄. Emacs의 lsp λͺ¨λ“œλ₯Ό ν¬ν•¨ν•˜μ—¬ λͺ¨λ“  κΈ°λŠ₯을 κ°–μΆ˜ μ–Έμ–΄ μ„œλ²„ ν΄λΌμ΄μ–ΈνŠΈλŠ” JSONRPCλ₯Ό 톡해 μ„œλ²„λ‘œ ꡬ성을 μ „λ‹¬ν•˜λŠ” κΈ°λŠ₯을 μ§€μ›ν•©λ‹ˆλ‹€. 이제 이것이 ꡬ성 될 μœ„μΉ˜λ₯Ό 이해 ν–ˆμœΌλ―€λ‘œ lsp λͺ¨λ“œμ—μ„œ Svelte λͺ¨λ“ˆμ„ ν–₯μƒμ‹œμΌœ ν•΄λ‹Ή ꡬ성 ν‚€λ₯Ό νŽΈλ¦¬ν•œ μ‚¬μš©μž μ˜΅μ…˜μ— μ—°κ²°ν•˜λŠ” 것이 κ°„λ‹¨ν•΄μ•Όν•©λ‹ˆλ‹€. 그에 따라 lsp-mode에 λŒ€ν•œ 문제λ₯Ό μ—΄κ² μŠ΅λ‹ˆλ‹€.

READMEμ—μ„œ 이것을 λͺ…μ‹œ 적으둜 μ–ΈκΈ‰ ν•  κ°€μΉ˜κ°€μžˆμ„ κ²ƒμž…λ‹ˆλ‹€. "μ–Έμ–΄ μ„œλ²„μ˜ ꡬ성은 ꡬ성 개체λ₯Ό μ „λ‹¬ν•˜μ—¬ LSP ν”„λ‘œν† μ½œμ„ 톡해 λ°œμƒν•©λ‹ˆλ‹€. LSP ν΄λΌμ΄μ–ΈνŠΈμ—λŠ” μ„œλ²„μ— λŒ€ν•œ ꡬ성 개체λ₯Ό μ„€μ •ν•˜λŠ” 방법이 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€. 여기에 λŒ€ν•œ 링크가 μžˆμŠ΅λ‹ˆλ‹€. μ§€μ›λ˜λŠ” ꡬ성에 λŒ€ν•œ 사양 [...] "

λ˜ν•œ μ‹€μ œλ‘œ λͺ…λ Ή 쀄 μ˜΅μ…˜μ„ ꡬ문 λΆ„μ„ν•˜κ³  / λ˜λŠ” 전달 될 λ•Œ 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¬ κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. --help 이 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— λͺ…λ Ή 쀄 μ˜΅μ…˜μ΄ μ§€μ›λ˜λŠ”μ§€ μ—¬λΆ€κ°€ λͺ…ν™•ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λ‹Ήμ‹ μ˜ 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

@elianiva 졜근 λ¬Έμ œμ—μ„œ LSPλ₯Ό 직접 μ‹€ν–‰ν•˜κ³  일뢀 섀정을 ꡬ성 ν•  수 μžˆλ‹€κ³  μ–ΈκΈ‰ν–ˆμŠ΅λ‹ˆλ‹€. @ raxod502 κ°€ λ§ν•˜λŠ” 것과 λ™μΌν•œ LSP λͺ¨λ“œλ₯Ό μ‚¬μš©ν•  κ°€λŠ₯성이 μžˆμœΌλ―€λ‘œ 도움이 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

μ•„λ‹ˆμš”, lsp-mode μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ €λŠ” neovim의 λ‚΄μž₯ LSPλ₯Ό μ‚¬μš©ν•˜λ©° LSP에 λͺ‡ 가지 μ˜΅μ…˜μ„ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

image

lsp-mode μ—μ„œμ΄ μ˜΅μ…˜μ„ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” κ·Έκ²ƒμ˜ μœ„ν‚€μ—μ„œ λΉ λ₯΄κ²Œ μ½μ—ˆκ³  그것이 κ°€λŠ₯ ν•˜λ‹€κ³  생각 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ Lua LSP에 λͺ‡ 가지 μ˜΅μ…˜μ„ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. https://emacs-lsp.github.io/lsp-mode/page/lsp-lua-language-server/

예, 이것은 lsp-mode에 μ˜ν•΄ μ™„μ „νžˆ μ§€μ›λ˜λ©° μƒλ‹Ήνžˆ 진보 된 λ°©μ‹μœΌλ‘œ μ§€μ›λ©λ‹ˆλ‹€. 각 ꡬ성 ν‚€λŠ” λ³„λ„λ‘œ λ¬Έμ„œν™” 된 μ‚¬μš©μž μ˜΅μ…˜μ— μ‰½κ²Œ 맀핑 될 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ gopls의 μ˜ˆμž…λ‹ˆλ‹€. https://github.com/emacs-lsp/lsp-mode/blob/0349a1cc0976829fab8f73ecc033252be31a7cf6/clients/lsp-go.el#L215 -L221

@dummdidumm λ‚˜λ„ neovim-lsp μ‹œλ„ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμœΌλ©° μž¬μ •μ˜ κ°€λŠ₯ν•œ cmd μ˜΅μ…˜ 덕뢄에 지퍼 포μž₯ μ‹€ 2 νŒ¨ν‚€μ§€μ—μ„œλ„ ν›Œλ₯­ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

lspconfig.tsserver.setup{
  cmd = { "yarn", "typescript-language-server", "--stdio" };
  on_attach = on_attach;
}

lspconfig.svelte.setup{
  cmd = { "yarn", "svelteserver", "--stdio" };
  on_attach = on_attach;
  settings = {
    svelte = {
      compilerWarnings = {
        ["a11y-no-onchange"] = "ignore"; -- <<< This doesn't work, svelte still spams me with this warning
      }
    }
  }
}

language-server 의 readmeμ—λŠ” svelte-vscode νŒ¨ν‚€μ§€μ—μ„œ 찾은 ꡬ성 μ˜΅μ…˜μ΄ μ—†μŠ΅λ‹ˆλ‹€. :생각:
더 λ§Žμ€ νŽΈμ§‘μžκ°€ lsp κ΅¬ν˜„μ„ λ§Œλ“€κΈ° λ•Œλ¬Έμ— language-server 의 readme에도 μ˜΅μ…˜μ΄μžˆλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
neovim-lsp λŒ€ν•œ ꡬ성 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„€λͺ…ν•˜κ³  svelte-vscode νŒ¨ν‚€μ§€μ— μ„€λͺ… 된 lsp μ˜΅μ…˜μ— λŒ€ν•œ 링크λ₯Ό λ§Œλ“œλŠ” readme PR을 μž‘μ„± ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

μ–΄λ–€ 이유둜 svelte.config.js ꡬ문 뢄석 ν•  λ•Œ language-server λŠ” onwarn λ¬΄μ‹œν•˜μ§€λ§Œ preprocess ν•©λ‹ˆλ‹€. μ˜λ„ 된 κ±΄κ°€μš”?
svelte.config.js μ—μ„œ κ΅¬μ„±ν•˜λŠ” 것이 더 κ°„λ‹¨ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
compilerWarnings 은 (λŠ”) neovim-lsp μ—μ„œ μ˜΅μ…˜μ„ μ „λ‹¬ν•˜μ—¬ μž‘μ—…μ„ λ¬΄μ‹œν•©λ‹ˆλ‹€. :μ‹€λ§ν•œ:

const sveltePreprocess = require('svelte-preprocess');

module.exports = {
  preprocess: sveltePreprocess(),
  onwarn: (warning, handler) => {
    if (warning.code === 'a11y-no-onchange') return;
    handler(warning);
  },
};

@ non25 이것은 svelte.compilerWarnings μ•„λ‹ˆλΌ svelte.plugin.svelte.compilerWarnings 이기 λ•Œλ¬Έμ— μž‘λ™ν•©λ‹ˆλ‹€.

lspconfig.svelte.setup{
  cmd = { "yarn", "svelteserver", "--stdio" };
  on_attach = on_attach;
  settings = {
    svelte = {
      plugin = {
        svelte = {
          compilerWarnings = {
            ["a11y-no-onchange"] = "ignore"
          }
        }
      }
    }
  }
}

예λ₯Ό λ“€μ–΄ "sapper dev"λͺ…령을 μ‚¬μš©ν•  λ•Œ μ•½ ν•΄μ§€λŠ” 것을 μ–΄λ–»κ²Œ μ–΅μ œν•©λ‹ˆκΉŒ? "컴파일러 κ²½κ³ "μ˜΅μ…˜μ΄ μ „ν˜€ 보이지 μ•ŠμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰