Python
SublimeText
docker

sublime + docker +pylsで入力補完

はじめに

前回は、sublime + venv + pylsで入力補完できるようにしました。
https://qiita.com/lisp719/items/5a47e3e8342c11fb90b9

今回はdocker環境でのやり方を記事にします。

dockerでpythonの開発環境を立てる

${PWD}でホストとゲストのパスをそろえるのがポイントです。
あとは、pipのpackageをキャッシュしたり適当に。

docker-compose.yml
version: '3'

services:
  app:
    image: python:3.6
    command: python app.py
    ports:
      - "8000:8000"
    volumes:
      - .:${PWD}
      - bin-data:/usr/local/bin
      - pip-data:/usr/local/lib/python3.6/site-packages
    working_dir: ${PWD}

volumes:
  bin-data:
  pip-data:

pylsをインストール

pipでpylsをインストールします。

docker-compose run app pip install python-language-server

入力補完のテスト用にbottleもインストール。

docker-compose run app pip install bottle

sublimeの設定

LSPのインストールまでは前回と同じです。
docker-composeでpylsを立ち上げるようにcommandを指定します。
また、1行に80文字以上書きたかったのでE501はignoreしてます。

LSP.sublime-settings
{
    "clients":
    {
        "pyls":
        {
            "command": ["docker-compose", "run", "--rm", "app", "pyls"],
            "enabled": true,
            "settings":
            {
                "pyls":
                {
                    "plugins":
                    {
                        "pycodestyle": {
                            "ignore": ["E501"]
                        }
                    }
                }
            }
        }
    }
}

動作確認

設定が終わったので適当なpythonファイルを開いてみます。

image.png

入力補完が効いていますね。

おわりに

pyls自体はpython版lsp(language-server-protocol)実装なので、lspプラグインなどがあるエディタなら同じような感じで行けると思います。
また、色んな言語のlspがあるようなので他の言語でも入力補完などが可能っぽいです。

lsp良いですね。