Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 关于emacs中的自动完成和yasnippet_Macos_Emacs_Autocomplete_Yasnippet - Fatal编程技术网

Macos 关于emacs中的自动完成和yasnippet

Macos 关于emacs中的自动完成和yasnippet,macos,emacs,autocomplete,yasnippet,Macos,Emacs,Autocomplete,Yasnippet,我在Emacs中使用auto complete和yasnippet,我对它们的设置感到困惑。我在我的.emacs中放置了以下代码: (添加到列表“加载路径”~/.emacs.d/plugins/yasnippet”) (需要“yasnippet”) (yas/全球模式1) (全局设置键(kbd“C-i”)‘yas/扩展) (setq yas/也可自动缩进第一行t) (添加到列表“加载路径”~/.emacs.d/plugins/autocomplete/”) (需要“自动完成配置”) (添加到列表

我在Emacs中使用auto complete和yasnippet,我对它们的设置感到困惑。我在我的
.emacs
中放置了以下代码:

(添加到列表“加载路径”~/.emacs.d/plugins/yasnippet”)
(需要“yasnippet”)
(yas/全球模式1)
(全局设置键(kbd“C-i”)‘yas/扩展)
(setq yas/也可自动缩进第一行t)
(添加到列表“加载路径”~/.emacs.d/plugins/autocomplete/”)
(需要“自动完成配置”)
(添加到列表“ac字典目录”~/.emacs.d/plugins/autocomplete/ac dict”)
(ac配置默认值)
(setq ac使用菜单映射t)
(定义ac键菜单映射“\C-n”ac下一步)
(定义键ac菜单映射“\C-p”'ac上一个)
(定义ac-js-mode()
(设置交流电源(交流电源)
交流电源符号
缓冲区中的交流源字
相同模式缓冲器中的交流源字
当前目录中的ac源文件
)))
(添加钩子“js模式钩子”ac js模式)
我正在尝试将yasnippet设置为自动完成弹出菜单中的第一个候选项。但是,如下面的示例所示,这不适用于我的当前设置:当我为键入单词
时,
formatItem
位于第一位,而
位于第二位
formatItem
只是当前缓冲区中的一个本地函数

 for_____________
|formatItem      |
|for            a|
|for            s|
|force          s|
|foreachv       s|
 ----------------
所以我的问题是:我怎样才能让yasnippet成为auto complete的第一位候选人?我的
.emacs
配置中是否缺少某些内容


非常感谢您的帮助。

ac-config-default
安装钩子来设置合理的默认值
ac-sources
值。这些挂钩(尤其是
ac common setup
)可能会干扰您的设置

您可以通过查看
js模式
缓冲区中
ac源
(C-h v
ac源
)的实际值来检查这一点,以查看是否已通过与自定义值的比较对其进行了修改

如果是这样,我看到两种解决方案:

  • 停止使用
    ac-config-default
    并指定所有
    autocomplete
    设置
  • 建议故障挂钩在运行后将
    ac source yasnippet
    放在
    ac sources
    的开头。假设ac common setup确实是麻烦制造者,则如下所示:
(defadvice ac公共设置(在给予yasnippet最高优先级激活后)
(setq交流电源(delq'交流电源yasnippet交流电源))
(添加到列表“交流电源”交流电源)

我不知道答案,但auto complete有一个内置的学习系统,所以你越是频繁地选择一个完成的候选者,下一次就越高。因此,您可能只需要使用一段时间,所有经常使用的代码段都会自动浮到顶部。谢谢您的回答。正如您所描述的那样。但我不清楚上面给出的方法2。你能告诉我更多的信息吗?谢谢。嗨,在我把你的代码放进我的.emacs后,交流源的实际值似乎就在js文件中C-h v输出的地方:它的值是(交流源yasnippet交流源文件名交流源符号交流源字缓冲区交流源字相同模式缓冲区交流源文件当前目录).Local在buffer set.js中;但是当我输入单词“for”时,弹出菜单仍然会显示我在问题中给出的图表。我对此一无所知。