スキップしてメイン コンテンツに移動

lsp-mode と python-language-server と pipx

長く Emacs でプログラムを書いている。 最近は(?)時代遅れ扱いされがちな Emacs ではあるが、特に乗り換えたいというほどのものがなく、何となく使い続けている。 他の環境で使えるようになった良さげな機能があって食指が動いても、それ Emacs でもできるよ、と言われると、じゃあいいかとなる。

今回、導入してみたいのは python-language-server である。 LSP (language server protocol) 自体は、VS Code のためにか何か Microsoft が作ったものだそうだが、 プロトコルの規定なので結局それを Emacs だったり Vim だったりから使えるようにする人が現れて、事実上の標準になっている。 昔何か別のコード補完のパッケージを Emacs に入れたときは重すぎて使い物にならず、 いままで dabbrev 以外の補完は使ってこなかったのだが、これはどうだろうか。

導入に際して引っかかるのは、python-language-server のインストール先である。 だいたい、Python のプロジェクトは、少し前まで Python 2 と 3 を使うものが混在していたために必要に迫られて、 pipenv で環境を切り分けて依存から何から別々に持つ、という方針で扱ってきたので、 その方針でいくとプロジェクトごとかもしれない、と最初は考えた。 しかし、Emacs でこれを使う lsp-mode の設定はパスを一つ指定する必要があるようだ。 どうしよう、と、ここで1ヶ月は放置していたと思う。

そんなある日 pipx というものを知った。 Python で書いたコマンドを隔離した環境にインストールするという。 要するに1つのコマンド用に venv を切ってインストールしてパスを通す、みたいなことをコマンド一発でやってくれるというわけだ。 これだわ。

ということで、インストール方法は

  1. pipx をインストールする。たとえば mac なら brew install pipx でいける。
  2. pipx install python-language-server
  3. Emacs に lsp-mode を入れる。普通に package-list-packages から選択。
  4. .emacs (などの Emacs の設定ファイル)に、次のように書く
    ;;; lsp-mode (language server protocol)
    (use-package lsp-mode
      :hook
      (python-mode . lsp)
      :init
      (setq lsp-keymap-prefix "C-c l")
      :config
      (setq lsp-pyls-server-command (expand-file-name "~/.local/bin/pyls"))
      :commands lsp)
    

となる。 ちなみに ~/.local/bin が pipx がインストールしたコマンドのリンクをおいてくれるパス。

また今回も、Emacs で使えるなら移行しなくていいか、となるパターンのようだ。

このブログの人気の投稿

「函数」音訳説について探してみる

Twitter に書こうかと思ったが、ちょっと長くなるのでこっちに書くことにする。 「函数」が音訳というデマと、本当の語源 というブログ記事について ツイートされてるの を見た。 詳しい内容はリンクを辿って読んでみて欲しい。 その記事中の「函数」音訳説という部分で、引用されているものが意外と新しい1980年代以降のものなので、さすがにもっと古いだろう、と探してみた。 1. 武部良明「漢字の用法」(1976) このほか武部良明『漢字の用法』(角川書店1976)にも同様の記述があるという(未確認)。 とあって、たまたま同書(三版)を持っているので調べてみた。 「関数」ではなく「関・函」の項にあった。 「函」は「いれる」意味。 したがって、「函数」という漢字の組み合わせからは、「対応して定まる数」という意味は出てこない。 「函数」については function という原語の音 fun を、「函」の音カン(現代中国語 han)で写したものとされている。 これに対し現代表記の「関数」は、全体の意味を「かかりあう数」と考え、「函」の部分を、同音で「かかりあう」意味の「関」に書き換えたものである。 2. 遠山啓「関数を考える」(1972) 近所の図書館で見つけた。 会話体の文章の中で、先生役が言っている。 はっきりはわからないが, 中国語の発音では function と似ていて, しかも意味も近いらしいのだ. 3. 遠山啓「数学は変貌する」(1971) 2012年にちくま学芸文庫から出た「現代数学入門」所収。 「関数を考える」が中学生ぐらいを対象にしたシリーズの一冊なので、そこでいきなり初披露ということは無いだろうと見当をつけて遡って探した。 機能とは簡単にいうと働きです。 ライプニッツが初めてファンクションという言葉を使った. ライプニッツはドイツ人ですが, ドイツ語は当時はいなかの言葉みたいで, フランスが文化の中心であったから, フランス語で書いてありますので, フォンクション (fonction) です. もとは日本では「函数」, あとになって「関数」と改めたのです. なぜこんな函の数という妙な言葉を使ったか, これは中国からきた字です. 中国人は各国語を音まで似せて訳すことがうまい. フォンクションは中国語で函数を中国読みしますと非常に似ているのだそ...

2025年の読書

読書メーターの記録 によるとマンガも入れて101冊。 久しぶりに年100冊に乗った。 前年からの勢いのままに菌類関係の本をいくつか読んだが深澤遊の「キノコとカビの生態学」「枯木ワンダーランド」は面白かった。 後半はファーブル昆虫記を読破した。岩波文庫の古い訳で読んだのが良かったのか良くなかったのか。 数学関係は、前半表現論の本を読んで表現とは加群のことであるという言葉で何だかすっきりした。 年の終わり近くはラングランズ予想というか楕円曲線と保型形式とガロワ表現とみたいな内容の本をいくつか。「ラングランズ予想」というそのものズバリなタイトルの本も出たのでその内読みたい。 マンガは、「ヴィンランド・サガ」も「アルテ」も「推しが武道館に行ってくれたら死ぬ」も完結して、読み続けるタイトルが少なくなってきた。

Schur Number

Youtube の Numberphile チャンネルで最近出た Schur Number の動画を見た、 そこでのシューア数の定義は OEIS の "version 1" の方 Smallest number such that for any n-coloring of the integers 1, ..., a(n) no color is sum-free, that is, some color contains a triple x + y = z. だったが、 "version 2" の Largest number such that there is an n-coloring of the integers 1, ..., a(n) such that each color is sum-free, that is, no color contains a triple x + y = z. の方が解り易いからこちらで話を進める。version 2 の方が 1 小さい値になるというだけの違いがある。 動画の内容は \(a(n) = 160\) になる証明が2ペタバイトのデータ量で凄い、みたいなこと。 結局、全ての n-coloring を確認するしかないとか何とか。 ここではそういう難しい部分の話はせずに、1, 4, 13, 44, 160 という増え方が大体 3 倍を超えるぐらいというのを納得する議論をしてみたい。 よりはっきり言うと、1, 4, 13 と増える \(a_{n+1} = 3a_n + 1\) という数列が下限になることを示す。 一つ注意を述べると、n-coloring を考えるというより \(\{1,\ldots,k\}\) の和抜き(sum-free)集合による被覆を考えれば良い。被覆ができれば彩色を作れる(自由度を失うだけ)ので。 そういうわけで \(\{1\}\) の被覆を考え始めるわけだが、そちらも \(\{1\}\) で良い。 次に \(\{1, 2\}\) の被覆を考えるが \(1+1=2\) なので \(\{1,2\}\) は和抜きではない。よって \(\{1, 2\}\) の和抜き集合による被覆は \(...