Feb 01, 2018

(Emacs)Jediで数字に不正な補完候補が出る

筆者は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
(require 'company)
(add-hook 'python-mode-hook 'company-mode)
(add-to-list 'company-backends 'company-jedi)

;; for Jedi + auto-complete / company-mode
(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秒間は補完が働かないようにした。

See more ...

Posted at 23:10 in PC一般 | WriteBacks (0)
WriteBacks