LanguageServerProtocol

LSP とは

  • VSCode 独自の機能ではない!
  • スペル間違いやコードの品質維持のために不可欠
  • もともとは IDE である Microsoft Visual Studio Code用に開発され、現在はオープンスタンダード
  • 2016年、Microsoft は Red Hat、Codenvy との協力を発表し、プロトコルの仕様を標準化した

camo.qiitausercontent.com/32b9e773060cdd9af2c4cececefa6aba00e409d0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31383539332f39376664396437322d626130642d366339612d656665652d3864316361633335383131312e706e67

できること

  • コード補完
  • リファクタリング
  • シンボルの定義へのナビゲーション
  • 構文ハイライト
  • エラーと警告のマーカー

LSPの存在意義

  • LSP策定前、特定のIDEやエディターに結びついた言語サービスの実装が一般的だった
  • LSPの登場でエディターやIDEのベンダーが、サポートする言語ごとに独自の言語サービスを開発する必要がなくなった
    • TypeScriptは、最初からlanguage serverの実現を意図しながら開発された言語らしい

自分の取り組み紹介

Copilot と LSP が競合する問題

  • Copilot は LSP とは無関係なため、気を利かせて存在しない変数を提案してきたりする(LSPは依存関係を知っているため、常に正しい) -> Tabnine を使って、1メソッド単位の入力予測にもAIをいれるとともに、優先度を LSP > AI にしている

参照