筆者はEmacsでPythonのコードを書く時に補完機能としてJedi+CompanyModeを使っているが、筆者の環境では数字に対しておかしな補完が働く。
例えば、
このように、数字を打つと"and"などが補完候補として現れ、Enterキーを押すと
このように、打った数字が消えて"and"になってしまう。
そして慌てて"and"を消してもう一度数字を入力してEnterを押すと、また"and"になるのである。
これは不便である。
CompanyModeでなくAutoCompleteだと同じことにはならないが、やはりおかしな補完が起こることがある。
このように、数字を1文字打つと"if"などが補完候補として現れ、Enterキーを押すと
このように、"if"が足される。
筆者の環境は以下である。
・macOS Sierra バージョン10.12.6
・Emacs 24.5.1 (https://emacsformacosx.comからダウンロード)
※同サイトからダウンロードしたEmacs 25.2でも起こる
・jedi 20160425.2156
・company-jedi 20151216.1921
.emacsは次のものだけにしても再現する。
(require 'package)
(package-initialize);; for Jedi + company
;; for Jedi + auto-complete / company-mode
(require 'company)
(add-hook 'python-mode-hook 'company-mode)
(add-to-list 'company-backends 'company-jedi)
(require 'jedi-core)
(setq jedi:complete-on-dot t)
(add-hook 'python-mode-hook 'jedi:setup)
Webで調べても、同じ症状の話はほとんど見つからない。
唯一見つけたのは、https://github.com/jorgenschaefer/elpy/issues/1115である。昨年に見つけて時々チェックしているが、今年に入って、筆者と同じ症状の報告が追加された。しかし、私には再現できていないという書き込みや、Jediの問題ではない、Python的に間違った補完ではない(??)、Elpyで回避可能といった書き込みがあり、すぐに修正されそうには見えない。
とりあえずの対策として .emacs に
(setq company-idle-delay 0.5)
を加えて、キー入力から0.5秒間は補完が働かないようにした。
コメント