我已经配置了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_dummy
和lorem_image
),是否可以使Emacs自动完成工作?因为现在它没有出现yasnippets,但常规自动完成确实有效(变量和其他东西)。
- 更新 -
好的,这很奇怪,在按照“重复问题”链接中的解决方案后,一切似乎完美无缺,但几个小时之后它开始表现得很奇怪,随机,有时候它有效,但有时却没有。我制作了一个显示问题的视频,它有效,然后我重新启动Emacs并再次停止工作。
答案 0 :(得分:1)
将ac-source-yasnippet
添加到ac-sources
,例如
(eval-after-load "auto-complete"
'(add-to-list 'ac-sources 'ac-source-yasnippet))