vue-language-serverをvim-lspから使う設定をした

Vue Language Server

  • Vue Language Serverはnpmのパッケージvue-language-serverとして公開されている
    • vlsコマンドとして提供される
  • Vue Language ServerはLanguage Server Protocolのサーバー実装
    • vim-lspをクライアントとしてvimから利用することができる
  • Vue Language ServerはVeturが使用する言語サーバー

Vetur - Visual Studio Marketplace

vim-lspにvue-language-serverを登録する

let s:vls_exe=expand('~/node_modules/.bin/vls')
  
if executable(s:vls_exe)
    au User lsp_setup call lsp#register_server({
        \ 'name': 'vue-language-server',
        \ 'cmd': {server_info->[s:vls_exe]},
        \ 'whitelist': ['vue'],
        \ 'initialization_options': { 'config': {
        \     'html': {}, 'vetur': {'validation': {}, 'completion': {'scaffoldSnippetSources': {}}}
        \     }}
        \ })
else
    echohl ErrorMsg
    echom '`vue-language-server` is not installed.'
    echohl
endif

configが無いと言語サーバーで Cannot read property 'ScaffoldSnippetSources' of undefined などのエラーが発生する

上記のconfigでいくつかの機能を無効にしてるっぽいけど具体的に何するときの何の機能かなのかは確認していない。とりあえずエラーなく起動させるまでやった。

参考にした Vim8でvim-lspとasyncomplete関連でvue-language-serverを使う(細かいオプションは省略) · GitHub

Google Cloud ShellでClangのビルドをしようとしたけど時間がかかりそうだからやめた

2019年4月29日の時点で、google cloud shellにはclang-8がインストール済みだった。 知らずにソースコードからビルドしようとしたけどものすごく時間がかかりそうだったから断念した。 インストール済みだけどパスは通ってない。 export PATH=/usr/lib/llvm-8/bin:$PATHした。

$ sudo apt update
$ sudo apt full-upgrade
$ sudo apt install cmake

$ git clone --depth 1 -b llvmorg-7.1.0 --single-branch https://github.com/llvm/llvm-project.git
$ cd llvm-project
$ mkdir build
$ cd build

$ cmake ^
-G "Unix Makefiles" ^
-DLLVM_ENABLE_PROJECTS=clang ^
-DLLVM_TARGETS_TO_BUILD=x86 ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX "インストールしたいpath"

$ make

ビルドしたいだけだから、git cloneには、depth 1 -b タグ --single-branchのオプションをつけて必要な分だけコピーした。

JavaScriptのフォーマッターPrettierのVimプラグインをインストールした

  • vim-prettierは、デフォルトの設定ではprettierのデフォルトルールとは違う整形ルールを持つ。
  • vim-prettierは、デフォルトの設定では.prettierrcがあればその設定を優先する。

prettier

prettier.io

prettierのインストール

プロジェクトローカルにprettierをインストールする。

npm init
npm install --save-dev prettier

使い方

npx prettier --write index.js
  • --writeはファイルを上書きする
  • --checkはdiffではなく、整形済みかどうかのみを出力する

vim-prettier

github.com

インストール

~/.vim/pack/<pkgname>/start/にgit cloneする。 vimrcに何も指定しなくても:Prettierコマンドを実行すれば使える。

  • g:prettier#exec_cmd_path

    • 指定しなくても、パッケージルートのnode_modules/.bin/prettierが使用された
    • コマンドを探す順は、READMEに書いてあった
    • 現在のパスは :PretierCliPathで確認できる
  • g:prettier#exec_cmd_async default:0

    • デフォルトでは非同期実行ではない
  • <Leader>p:Prettierコマンドがマップされている

Prettierの整形オプション

CLIでオプションなしで実行した場合と、vim-prettierでオプションを既定値で実行した場合とで結果が違う。 引用符の一重と二重とか他にも。 READMEに書いてあった、意図的にcliのdefaultとは違うオプション指定にしてあるそうな。

github.com

prettierrc

.prettierrcを置けば、vim-prettierもそれを読む。

  • g:prettier#config#config_precedence default: prefer-file
    • cli-override
      • 設定ファイルよりもcliフラグが優先される
    • file-override
      • cliフラグが設定ファイルとマージされる
    • prefer-file
      • 設定ファイルがあったらcliフラグは無視される
    • たぶんここでいうcliフラグは、vim-prettierがcliをコールするときに設定するg:prettier#configの各設定値のこと

{}だけを書いた.prettierrcをプロジェクトルートに置けば、prettier#config#config_precedence = prefer-fileのときにvim-prettierの整形ルールがデフォルトのCLIの整形ルールと同一になる。

タイトルが付けられるならブログに書く

自然とタイトルが思い浮んでいないのならtwitterに書く。ブログに短かいエントリーを書いてもいい。題名というかキャッチフレーズ的なものをひらめいて、それから何かを思うことがよくある。ツイートにはタイトルが付けられない。

水泳の練習メニューを変えた

週3日、1回30分でクロールと平泳ぎ。

いままでは、

  1. 10分ゆっくりクロール
  2. 10分ゆっくり平泳ぎ
  3. 10分強めのクロール

これから

  1. 5分以上のゆっくりクロール
  2. 5分以上のゆっくり平泳ぎ
  3. 10分以上の強めのクロール

ゆっくりクロールは準備運動。 ゆっくり平泳ぎは、まだ平泳ぎがうまくできないからじっくり集中する必要がある。日によって10分も保てないことがある。そういうときは5分過ぎたら切り上げていいことにする。 強めのクロールは、だいたい気分がのってきてもうすこし続けたいと思ったりするから最低10分であとは全体の時間が30分ぐらいに収まるようにする。

WSLのDebianでまず最初にnvmをインストールしようとしたらwgetでエラーになる

WSL(Windows Subsystem for Linux)のDebianをインストールした。まず最初にnvmをインストールしようとして、wgetをしたらtrusted host じゃないとエラーになった。wgetがどういう仕組みで信頼済みの認証局を知るのかわからないけど、そういうのはosとかが便利サービスとかパッケージとしていろんなコマンドが利用できるようになっているんじゃないかと思う。その線でインターネットをキョロキョロして、とりあえずあった。

ca-certificatesパッケージをインストールすればwgetも利用できる信頼済み認証局の置き場所が作られた、そこにMozillaとかが選んだメジャーなCAの証明書が用意される。

opensslパッケージの提案(きちんと意味がわかっていない)と、pythonの何かにも含まれているからこれ入れとけばよさそう。