Получить компанию, чтобы показать предложения для имен Ясниппет

13

Я использую пакеты Фирменный режим и Ясниппет. Когда я печатаю в буфере, я получаю предложения по автозаполнению от компании.

Для Ясниппета у меня есть каталог, который содержит фрагменты. В этом каталоге у меня есть, например, файл foo.yasnippet.

Когда я печатаю fooв буфере и Tabнажимаю, я получаю всплывающее меню для yasnippets, которое я могу выбрать, какой фрагмент ( fooили foo-bar) я хочу вставить. Я хотел бы интегрировать yasnippet fooв завершение компании. Когда я печатаю foo, я хотел бы видеть фрагмент во всплывающем окне завершения компании.

Это возможно? Если так, как я мог достигнуть этого? В Vim это происходит с Neocomplete и VimSnippets. Когда я гуглил, я нашел эту связь с Элиспом, но я не мог понять, как ее применить.

Какие-либо предложения?

ReneFroger
источник
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