我按照http://www.enigmacurry.com/2009/01/21/autocompleteel-python-code-completion-in-emacs/#disqus_thread给出的教程,使用rope和yasnippet设置了对emacs的python支持。
我声明了一个字符串变量a_str="Hello"
。现在我输入a_str。并按Tab键,我在迷你缓冲区中收到以下消息
Symbol's function definition is void: yas/snippet-table
我之前得到了一次下拉,但突然之间已经停止了工作。有什么理由可以发生这种情况吗?
另外,我想知道该行的含义
(setq yas/trigger-key (kbd "C-c <kp-multiply>"))
请帮助 谢谢
答案 0 :(得分:3)
(setq yas/trigger-key (kbd "C-c <kp-multiply>"))
表示:为字符串C-c <kp-multiply>
描述的键绑定生成内部表示,并将该值赋给变量yas/trigger-key
。
(<kp-multiply>
通常是键盘上的*
键。)
然后,您可以在密钥绑定中使用yas/trigger-key
。 e.g:
(local-set-key yas/trigger-key 'some-function)
至于你的主要错误,有些东西没有被正确加载(这样yas/snippet-table
确实存在于代码中,但在使用之前没有被加载),或者Yasnippet与另一个之间存在不兼容性试图使用它的库(在这种情况下可能是自动完成)。
我在你链接的评论主题的底部看到,当时有关于自动完成0.2超过0.1的变化导致类似错误的讨论。我还看到教程作者链接到他自己的Emacs配置的git存储库,并且仍在使用版本0.1的自动完成。
所以我建议先检查每个库的版本。本教程使用:
Rope版本尚不清楚,仅被描述为“最新的开发版本(截至2008年12月)”
或者,您可能更喜欢直接从该git存储库中获取版本(特别是当repo中的yasnippet版本说它是版本0.2.2而不是0.5.9时)。
如果您使用它们,那么您可以尝试升级内容(并且可能会在列出一组兼容版本的线程中添加注释,如果您想出一个更近期的工作组合)。
如果失败了,这是另一个可能有用的git存储库: