0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NeovimでSalesforceのApexのLSPを使用する

Posted at

Apexとは?

salesforceではフローという機能を使用してノーコード開発を行うことができます。
一方でsalesforceApexにはApexというjavaライクな言語を使って機能開発を行う機能もあります。
ぱっと見、ノーコード開発ができならプログラミング言語は不必要かと思われますが、複雑な機能を作り込む場合にはテストを書いたりできるApexの方が開発しやすい場面が多くなります。

LSPとは

Language Server Protcol の略で、VSCodeなどで機能開発を行うときにユーザーにいろんなサポートを提供してくれます。
この機能があるとないとだとかなり開発体験が変わってきます。

例)

  • 変数名を提案してくれる
  • 関数やメソッドにジャンプすることができる
  • 関数やメソッドを使っているところを一覧にして見ることができる
  • 構文エラーなどを検知して知らせてくれる

この記事で扱うこと

Apexは標準でVSCodeを使用することを推奨しており、ApexのLSPもVSCodeの拡張機能に含まれているのでそちらには触れません。
この記事ではneovimでApexのLSPを使用する方法を取り扱っています。
VSCodeのようにパッとできるものではありませんが、この記事を見て皆さんのneovim上でのApexのでの開発体験が良くなれば幸いです。

事前準備

ApexのLSPを使用するためにはjavaが必要です。
要件を調べて必要なバージョンのjavaのインストールを行なっておいてください。

java setupページ: https://developer.salesforce.com/docs/platform/sfvscode-extensions/guide/java-setup.html

ubuntuであれば、以下のコマンドでOKです
(動作保証の一番古い11を入れてますが、お好みで21とか17とか公式の推奨する新しいバージョンも試してみてください)

$ apt install -y openjdk-11-jdk

Neovimの拡張機能について

ApexのLSP導入に関して、以下の拡張機能が必須です。

  • nvim-lspconfig

LSPファイルの準備

  1. 以下のリンクを開きます
    https://github.com/forcedotcom/salesforcedx-vscode/blob/develop/packages/salesforcedx-vscode-apex/out/apex-jorje-lsp.jar

  2. 右のダウンロードボタンからファイルをダウンロードします。
    スクリーンショット 2024-11-18 15.00.55.png

  3. ダウンロードしたファイルを、適当な場所に配置します
    例)
    /root/.local/share/nvim/lsp_servers/apex-jorje-lsp.jar

LSPの設定

  1. nvim-lspconfigの設定を開き、以下のコードを貼り付ける
  nvim_lsp['apex_ls'].setup{
    cmd = { 'java', '-jar', '/root/.local/share/nvim/lsp_servers/apex-jorje-lsp.jar' },
    filetypes = { 'apex' },
    on_attach = custom_attach,
    flags = {
      debounce_text_changes = 150,
    },
    settings = {
      apex = {
        enable_semantic_errors = true,
        enable_completion_statistics = true,
      }
    }
  }
  1. init.luaを開き、clsクラスやtriggerクラスをApexクラスとして認識できるよう以下のコードを追加
vim.filetype.add({
  extension = {
    cls = 'apex',
    trigger = 'apex',
    cmp = 'html',
  }
})
  1. ApexのファイルをNeovimで開いて、:LspInfo コマンドを実行し以下のようにLSPが認識されていればOK
 Client: apex_ls (id: 3, bufnr: [1, 47, 21])
 	filetypes:       apex
 	autostart:       true
 	root directory:  /usr/projects/salesforce/hoge
 	cmd:             /usr/bin/java -jar /root/.local/share/nvim/lsp_servers/apex-jorje-lsp.jar
  1. LSPの動作確認
    Assert. まで入力すると、Assertクラスのメソッドなどが提案されるようになります
    スクリーンショット 2024-11-18 15.18.59.png

LSPがうまく動かない時

ubuntuであれば、以下のディレクトリにLSPのエラー情報が書き込まれています。
/root/.local/state/nvim/lsp.log

必要であればLSPのインデックスデータベースの初期化も試してみてください。
https://developer.salesforce.com/docs/platform/sfvscode-extensions/guide/apex-language-server.html#reset-apex-indexing

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?