Company-dabbrevをCompany completionポップアップに追加するにはどうすればよいですか?


12

セットアップ:

KAELの2015-07-25のGUIバージョンGNU Emacs 25.0.50.1(x86_64-w64-mingw32)

EmacsW64からコンパイル。

、MELPAの最新バージョンを使用

Windows 7 x64ビット。

状況:

たとえば、バッファfoobarsentenceに入力しています。

そして、その下に新しい行を開始し、「fooba」と入力すると、foobarsentence会社のポップアップ完了ウィンドウから候補が表示されると期待していました。しかし、ありませんfoobarsentence

別の回答から、そのためにcompany-dabbrevを使用できることがわかりましたM-/。しかし、どのようにして提案をcompany-dabbrevポップアップウィンドウに「フィード」できるのかわかりませんでした。質問を明確にするために、スクリーンキャストgifを作成しました。

ここに画像の説明を入力してください

ご覧のとおり、をM-/呼び出しますcompany-dabbrev。しかし、会社の完了ポップアップで提案されていることを確認したいと思います。これがデフォルトではないことに驚いた。

company-dabbrev企業のポップアップウィンドウに提案を「フィード」するための提案はありますか?


これはどのメジャーモードですか?
PythonNut

回答:


24

ここでは、どのように会社の作品に完了(私はより詳細な説明はのマニュアルに記載されていますビットを簡素化していますcompany-backends C-hvcompany-backendsRET

あなたは、会社がポイントで完了を提供しようとするバックエンド(完了エンジン)のリストを持っています。会社はこのバックエンドを次々に試行し、候補を返す最初のバックエンドが完了に使用され、残りのバックエンドは無視されます。そのため、デフォルトでは一度に1つのバックエンドのみが使用されます。

あなたの場合(emacs-lisp-modeのようです)emacs-lispバックエンドは完了候補を返しているためcompany-dabbrev、会社が完了のために使用することはなく、完了することもありませんfoobarsentence。そのため、company-dabbrev以前のcompany-elisp(またはcompany-capf最近のemacsenで)来るように、会社のバックエンドを変更することができます。しかし、私はそれがあなたが望むものではないと思います。なぜならそれは現在の状況を逆転させ、emacs-lispバックエンドから補完を取得しないからです(この場合は読み進めてください)。

会社は、groupedバックエンドと呼ばれるものを使用して、複数のソースからの補完をマージする方法を提供します。通常、のメンバーcompany-backendsは個別のバックエンドですが、バックエンドのリストにすることもできます。その場合、バックエンドからの完了は、同じprefixまたは完了するテキストを返す場合にマージされます(詳細については、ドキュメントを参照してくださいcompany-backends)。

company-elisp(最近のemacsen company-capfが使用されている)からの補完をマージし、company-dabbrev単にこれを行う場合

(add-to-list 'company-backends '(company-capf company-dabbrev))

さらに、:withキーワードを使用して異なるバックエンドをマージできます

(add-to-list 'company-backends '(company-capf :with company-dabbrev))

これは:with、企業が(完成するテキスト)を:with決定する前にバックエンドのみを使用するため、バックエンドなしのリストの例とは異なりprefixます。これは後にバックエンドからの候補者がいることを意味:withかかわらず、バックエンドが戻らないかどうかの、会社によって無視されるprefix前に、バックエンドのいずれも場合、または全く:withリターンA prefix

これをemacs-lispバッファーでローカルに設定したい場合があります(そうすることをお勧めします)


フィードバックのための@wasamasaおかげで、言及する私の答えを編集した:with
イクバルアンサリ

あなたは私の投票に値します。私はあなたの説明を本当に楽しみ、会社についてのことを学びました。ありがとう。
ReneFroger

助けてくれてうれしい
イクバルアンサリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.