会社にヤスニペット名の候補を表示する


13

パッケージの会社モードとYasnippetを使用します。バッファーに入力しているときに、Companyからオートコンプリートの提案を受け取ります。

Yasnippetには、スニペットを含むディレクトリがあります。そのディレクトリには、たとえばファイルがありますfoo.yasnippet

fooバッファーに入力してを押すとTab、ヤスニペットのポップアップメニューが表示され、挿入するスニペット(fooまたはfoo-bar)を選択できます。foo会社の完成にyasnippetを統合したいと思います。を入力するとfoo、Company completionポップアップにスニペットが表示されます。

これは可能ですか?もしそうなら、どうすればこれを達成できますか?Vimでは、NeocompleteとVimSnippetsでそれを実現しています。グーグルで検索したところ、Elispとのこのリンクを見つけましたが、それを適用する方法に頭を悩ますことができませんでした。

助言がありますか?


1
そのelispは、会社(会社に付属)のyasnippet "バックエンド"です。あなたは次のように入力して、それについて読むことができますC-h f company-yasnippet RET
乳母

回答:


29

私の構成には次のスニペットがあり、まさにあなたが望むものだと思われます:

;; Add yasnippet support for all company backends
;; https://github.com/syl20bnr/spacemacs/pull/179
(defvar company-mode/enable-yas t
  "Enable yasnippet for all backends.")

(defun company-mode/backend-with-yas (backend)
  (if (or (not company-mode/enable-yas) (and (listp backend) (member 'company-yasnippet backend)))
      backend
    (append (if (consp backend) backend (list backend))
            '(:with company-yasnippet))))

(setq company-backends (mapcar #'company-mode/backend-with-yas company-backends))

基本的には、アクティブ化した他のすべてのバックエンドとともにyasnippetバックエンドをセットアップするため、対応するバックエンドとスニペットに対して適切な完了を取得します。


1
私はこれについて何も答えを期待していなかったので、パトリック、私はこれに本当に感謝しています。それをありがとう!
-ReneFroger
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.