Closed6

Perl Navigator の設定方法 - (Vim or VS Code) + (Carton or Carmel)

kfly8kfly8

vim-lsp + vim-lsp-settings + Carmel + direnvの場合

.vimrc
let g:lsp_settings_filetype_perl = ['perlnavigator']
# .envrcに環境変数流し込み
$ carmel export | cat >> .envrc
kfly8kfly8

vim-lsp + vim-lsp-settings + Carmel + dotnevの場合

.vimrc
let g:lsp_settings_filetype_perl = ['perlnavigator']
# carmel export の出力をdotenv用に調整して、.envに書き込み
carmel export  | perl -anE 'say "export $F[1]"; say "export $F[2]"; say "export $F[3]"' | cat >> .env

※carmel exportのオプションでdotenvで使いやすいようにするオプションを入れてもらう?
※dotenvを普段使ってないので、もっと賢い方法ありそう?

kfly8kfly8

vim-lsp + vim-lsp-settings + Carton + (direnv or dotenv) の場合

.vimrc
let g:lsp_settings_filetype_perl = ['perlnavigator']
# .envrc あるいは .env に次をいれる。サンプルは.envrcの想定で記載
$ carton exec -- perl -e 'print "export PERL5LIB=$ENV{PERL5LIB}\n"' | cat >> .envrc
$ carton exec -- perl -e 'print "export PATH=$ENV{PATH}\n"' | cat >> .envrc
kfly8kfly8

Vscode + (Carton or Carmel) + (direnv or dotenv) の場合

  • settings.jsonに、次の通りincludePathsにlibを追加する
    • $workspaceFolderをprefixに追加することで、マルチワークスペースに対応できる。
settings.json
     "perlnavigator.includePaths": [ 
        "$workspaceFolder/lib"
    ]
  • .envrc, .env には、上記と同様に設定すれば良い

  • 備忘: PerlNavigatorのドキュメントだと、$workspaceRootのままなので修正PRすると良さそう
kfly8kfly8

惜しかった集

perlnavigator.perlPath='carmel exec -- perl' のようにした場合

  • syntax checkerは、↑を使って動くので問題なし
  • コードジャンプは、↑を使って動かないのでコードジャンプしない
kfly8kfly8

VSCode + Carton + direnv/dotenvを使わない場合

  • まず、includePathsに、環境に応じたパスも通す
    • $workspaceFolder/local/lib/perl5/ARCHNAME のARCHNAMEは、perl -MConfig -e 'print $Config{archname}'で取得すれば良い
settings.json
    "perlnavigator.includePaths": [
        "$workspaceFolder/lib",
        "$workspaceFolder/local/lib/perl5",
        "$workspaceFolder/local/lib/perl5/darwin-thread-multi-2level"
    ]
このスクラップは2022/12/28にクローズされました