未解決案件
vscode の Python extension だと docstring でクラスやメソッドをドキュメンテーションしとくだけで、バルーンヘルプがサクサク出て来て凄く便利だったので、R でも出来んもんかと「GNU R 関数 ヘルプの作り方」でググってみたら、roxygen2 とかいう Doxygen もどきの記法でドキュメンテーション出来るらしいことが分かった。
で、これを書いてみたが、vscode 標準添付の R mode だとバルーンヘルプが出て来ない。
「roxygen2 vscode」でググってみると、
ただ、これだけではバルーンヘルプが出てくれなくて、
key piece として紹介されている
ところがしかし、この2つをいれても上手く動いてくれない。
まず、hover しても Loading... ってバルーンヘルプが表示されて、そのまま何も起こらない。
どうも R Language Server との上手く通信出来てない模様。
とりあえず、vscode-R は Ctrl+Enter とかしてみると、vscode の TERMINAL の中に R を起動してカーソール行または選択されたテキストをが R に送るのだが、起動メッセージをはじめとしてマルチバイトコードが見事に文字化けしている。
Debug にチェック入れてみると、R LSP Client も同様の問題が生じているのか、
試しに "r.lsp.lang" に "ja_JP.Shift_JIS" とか設定してみたが何も効果はなく、
"Shift_JIS" とか設定してみたところ、
が、しかし、何言ってんだ?このエラーは?
関数じゃない物に call を試みたって言ってるようだが、hover したキーワードの事なのか、vscode の extension 内の変数の事なのか?
文字化けが原因かと思ったら、どうも文字化けとは無関係な原因で失敗しているような雰囲気だ。
これはどうしろと?
ちょっと、楽にはクリア出来そうにはなさそうな雰囲気。
Python 羨ま。
あと、もう一つ困った事としては、vscode-R が CMD 上で CD してから R を起動しようとするため、UNC 上のフォルダで作業しているときに vscode-R から R を呼ぶと
R 自体は setwd() で UNC 食わせても大丈夫なのだが、前述のようにマルチバイトが化けるため、パスにマルチバイトが混じってると setwd() できない。
例によって、Remote-WSL に逃げるべき案件かと思いきや、WSL は UNC は自動で mount されないので
/etc/fstab に
/usr/local/bin/wslpath に
追記: 2020-01-22
まともにラッパー書いてみた
- Qiita / wakuteka / 2017-05-09: こわくないRパッケージ開発!2016
- R packages / Object documentation
で、これを書いてみたが、vscode 標準添付の R mode だとバルーンヘルプが出て来ない。
「roxygen2 vscode」でググってみると、
- Before I Sleep / 2018-02-22: Going Alt-RStats with VSCode
- GitHub / lkuyadeu / vscode-R
- VisualStudio / Marketplace / Visual Studio Code / Programming Language / R
ただ、これだけではバルーンヘルプが出てくれなくて、
key piece として紹介されている
- VisualStudio / Marketplace / Visual Studio Code / Programming Language / R LSP Client
ところがしかし、この2つをいれても上手く動いてくれない。
まず、hover しても Loading... ってバルーンヘルプが表示されて、そのまま何も起こらない。
どうも R Language Server との上手く通信出来てない模様。
とりあえず、vscode-R は Ctrl+Enter とかしてみると、vscode の TERMINAL の中に R を起動してカーソール行または選択されたテキストをが R に送るのだが、起動メッセージをはじめとしてマルチバイトコードが見事に文字化けしている。
Debug にチェック入れてみると、R LSP Client も同様の問題が生じているのか、
received: Content-Length: 206 received payload. handling request: textDocument/hover internal error: {"message":" �֐��łȂ����̂�K�p���悤�Ƃ��܂��� ","call":{}} deliver: ["Response","Response","Message","R6"] received: Content-Length: 62 received payload. unknown notification: $/cancelRequestのような感じでやはりエラーの箇所に文字化けが絡んでそうな雰囲気が。
試しに "r.lsp.lang" に "ja_JP.Shift_JIS" とか設定してみたが何も効果はなく、
"Shift_JIS" とか設定してみたところ、
received: Content-Length: 206 received payload. handling request: textDocument/hover internal error: {"message":"attempt to apply non-function","call":{}} deliver: ["Response","Response","Message","R6"] [Error - 19:37:25] Request textDocument/hover failed. Message: {"message":"attempt to apply non-function","call":{}} Code: -32603のように、エラー中の文字化けは解消した。
が、しかし、何言ってんだ?このエラーは?
関数じゃない物に call を試みたって言ってるようだが、hover したキーワードの事なのか、vscode の extension 内の変数の事なのか?
文字化けが原因かと思ったら、どうも文字化けとは無関係な原因で失敗しているような雰囲気だ。
これはどうしろと?
ちょっと、楽にはクリア出来そうにはなさそうな雰囲気。
Python 羨ま。
あと、もう一つ困った事としては、vscode-R が CMD 上で CD してから R を起動しようとするため、UNC 上のフォルダで作業しているときに vscode-R から R を呼ぶと
'\\host\share\dir' 上記の現在のディレクトリで CMD.EXE を開始しました。 UNC パスはサポートされません。Windows ディレクトリを既定で使用します。みたいに言われて、getwd() が %SYSTEMROOT% の状態で起動してしまう。
R 自体は setwd() で UNC 食わせても大丈夫なのだが、前述のようにマルチバイトが化けるため、パスにマルチバイトが混じってると setwd() できない。
例によって、Remote-WSL に逃げるべき案件かと思いきや、WSL は UNC は自動で mount されないので
Error: Command failed: C:\WINDOWS\System32\wsl.exe -d Ubuntu wslpath -u '\\host\share\dir' wslpath: \\host\share\dir: No such file or directoryこれ、結構辛い。
sudo mount -t drvfs //host/share /mnt/host%3Fshareみたいにぶら下げてるために
/etc/fstab に
//host/share /mnt/host%3Fshare drvfs defaults 0 0のようなエントリーを追加して
/usr/local/bin/wslpath に
#!/usr/bin/env bash MP1='\\host\share' while (( 0 < $# )); do case "$1" in "$MP1"*) echo /mnt/host%3Fshare$(sed -E 's:\\:/:g' <<<"${1:$((${#MP1}+1))}") exit ;; *) ARGS+=( "$1" ) shift ;; esac done /bin/wslpath "${ARGS[@]}"みたいなラッパー書いとけば Remote-WSL 可能になった。
追記: 2020-01-22
まともにラッパー書いてみた
つうことで、Remote-WSL 経由で使う
タグ
コメントをかく