是否可以自动完成以在Emacs中完成yasnippet?

时间:2015-05-26 10:42:00

标签: emacs autocomplete yasnippet

我已经配置了yasnippet和自动完成绑定,因此它不会发生冲突,自动完成使用<tab>而yasnippet使用<backtab>

(add-to-list 'load-path
              "~/.emacs.d/plugins/yasnippet")
(require 'yasnippet)
(yas-global-mode 1)

;; Remove Yasnippet's default tab key binding
(define-key yas-minor-mode-map (kbd "<tab>") nil)
(define-key yas-minor-mode-map (kbd "TAB") nil)
;; Set Yasnippet's key binding to shift+tab
(define-key yas-minor-mode-map (kbd "<backtab>") 'yas-expand)

我使用密钥lorem_dummy创建了两个yasnippets,使用密钥lorem_image创建了另一个yasnippets,其中一个示例:

# -*- mode: snippet; require-final-newline: nil -*-
# name: lorem_image
# key: lorem_image
# binding: direct-keybinding
# --
<img src="http://lorempixel.com/${1:width}/${2:height}/${3:$$(yas-choose-value '("abstract" "city" "animals" "food" "people" "transport" "business" "sports" "technics"))}/${4:text}" alt="$3">

如果我只是写lorem并按下以在下拉列表中显示两个选项(lorem_dummylorem_image),是否可以使Emacs自动完成工作?因为现在它没有出现yasnippets,但常规自动完成确实有效(变量和其他东西)。

- 更新 -

好的,这很奇怪,在按照“重复问题”链接中的解决方案后,一切似乎完美无缺,但几个小时之后它开始表现得很奇怪,随机,有时候它有效,但有时却没有。我制作了一个显示问题的视频,它有效,然后我重新启动Emacs并再次停止工作。

video

1 个答案:

答案 0 :(得分:1)

ac-source-yasnippet添加到ac-sources,例如

(eval-after-load "auto-complete"
  '(add-to-list 'ac-sources 'ac-source-yasnippet))