【问题标题】:Rope and Yasnippet in EmacsEmacs 中的绳索和 Yasnippet
【发布时间】:2012-04-08 02:16:54
【问题描述】:

我按照http://www.enigmacurry.com/2009/01/21/autocompleteel-python-code-completion-in-emacs/#disqus_thread 提供的教程使用rope 和yasn-p 设置了对emacs 的python 支持。 我声明了一个字符串变量a_str="Hello"。现在当我输入 a_str。然后按 Tab,我在 minibuffer 中收到以下消息

Symbol's function definition is void: yas/snippet-table

我早些时候得到了一个下拉菜单,但突然它停止工作了。为什么会发生这种情况?

另外,我想知道这行的意思

(setq yas/trigger-key (kbd "C-c <kp-multiply>"))

请帮忙 谢谢你

【问题讨论】:

    标签: python emacs elisp rope yasnippet


    【解决方案1】:
    (setq yas/trigger-key (kbd "C-c <kp-multiply>"))
    

    意思是:为字符串C-c &lt;kp-multiply&gt;描述的键绑定生成内部表示,并将该值赋给变量yas/trigger-key

    &lt;kp-multiply&gt; 通常是键盘上的* 键。)

    您随后可以在键绑定中使用yas/trigger-key。例如:

    (local-set-key yas/trigger-key 'some-function)
    

    至于您的主要错误,要么没有正确加载某些内容(例如 yas/snippet-table 确实存在于代码中,但在使用之前未加载),要么 Yasn-p 与另一个不兼容正在尝试使用它的库(在这种情况下可能是自动完成)。

    我在您链接到的 cmets 线程的底部看到,当时有人讨论了由自动完成 0.2 对 0.1 的更改引起的类似错误。我还看到教程作者链接到他自己的 Emacs 配置的 git 存储库,并且仍在使用 0.1 版的自动完成功能。

    所以我建议先检查每个库的版本。本教程使用:

    • pymacs 0.23
    • yasn-p 0.5.9
    • 自动完成 0.1

    绳索版本不清楚,仅被描述为“最新的开发版本(截至 08 年 12 月)”

    或者,您可能更喜欢直接从该 git 存储库中获取版本(特别是当存储库中的 yasn-p 版本表明它是版本 0.2.2,而不是 0.5.9)。

    如果您可以使用它们,那么您可以尝试升级一些东西(如果您想出一个更新的工作组合,也许可以在该线程中添加一条评论,列出一组兼容版本)。

    如果做不到这一点,这里有另一个可能有用的 git 存储库:

    https://github.com/gabrielelanaro/emacs-for-python/

    【讨论】:

    • 但是如果我使用 Ctrl-C *,我会收到消息“C-c * 未定义”
    • 请注意,您询问的代码不会将C-c &lt;kp-multiply&gt; 绑定到函数;它只是设置变量的值。 (人们会期望 Yasn-p 会在某个时候使用该变量来创建绑定,但我必须查看代码以确定是否以及何时/何地发生这种情况。)
    • 感谢您的回复。我设法摆脱了Symbol's function definition is void error by using yasnippet-0.5.9。我使用的是最新版本 0.6.1,我猜这是导致该问题的原因。但我认为自动完成现在正在使用 tab 键,所以我无法使用它来使用 yasn-p 插入 sn-p。有没有办法使用不同的组合键来插入 sn-ps?
    • 我自己没有运行这样的设置,所以我不确定细节。也许其他人可以回答这个问题。从我看到的最好的猜测是,这是yas/trigger-key 变量的用途,其值旨在成为手动插入sn-ps 的关键(并且它被设置为@987654333 以外的其他值@ 以避免与自动完成冲突)。
    • 通过使用(setq yas/trigger-key (kbd "C-c &lt;f8&gt;")) 并重新启动emacs,终于让rope 和yasn-p 都工作了。
    猜你喜欢
    • 2012-04-09
    • 2013-03-24
    • 1970-01-01
    • 2011-12-21
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多