关于 emacs 中的自动完成和 yasnippet

2023-11-22

我在 Emacs 中使用自动完成和 yasnippet,但我对它们的设置感到困惑。我将以下代码放入我的.emacs:

(add-to-list 'load-path "~/.emacs.d/plugins/yasnippet")
(require 'yasnippet)
(yas/global-mode 1)
(global-set-key (kbd "C-i") 'yas/expand)
(setq yas/also-auto-indent-first-line t)

(add-to-list 'load-path "~/.emacs.d/plugins/autocomplete/")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/plugins/autocomplete/ac-dict")
(ac-config-default)
(setq ac-use-menu-map t)
(define-key ac-menu-map "\C-n" 'ac-next)
(define-key ac-menu-map "\C-p" 'ac-previous)

(defun ac-js-mode()
(setq ac-sources '(ac-source-yasnippet
                 ac-source-symbols
                 ac-source-words-in-buffer
                 ac-source-words-in-same-mode-buffers
                 ac-source-files-in-current-dir
                 )))
(add-hook 'js-mode-hook 'ac-js-mode)

我试图将 yasnippet 设置为自动完成弹出菜单中的第一个候选者。但是,如下例所示,这不适用于我当前的设置:当我输入单词时for, formatItem处于第一位置并且for在第二。formatItem只是当前缓冲区中的本地函数。

 for_____________
|formatItem      |
|for            a|
|for            s|
|force          s|
|foreachv       s|
 ----------------

所以我的问题是:如何使 yasnippet 成为自动完成中的第一个候选者?我的身上是否缺少了一些东西.emacs config?

任何帮助表示赞赏。


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

You can check this by looking at the actual value of ac-sources (C-h vac-sources) in a js-mode buffer to see if it has been modified by comparison to your custom value.

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

  • 停止使用ac-config-default并指定所有autocomplete设置,
  • 建议放置有问题的钩子ac-source-yasnippet在。。。之初ac-sources运行后。假设 ac-common-setup 确实是麻烦制造者,则如下所示:
(defadvice ac-common-setup (after give-yasnippet-highest-priority activate)
  (setq ac-sources (delq 'ac-source-yasnippet ac-sources))
  (add-to-list 'ac-sources 'ac-source-yasnippet))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 emacs 中的自动完成和 yasnippet 的相关文章

随机推荐

  • R 中计算 R2(R 平方)的函数

    我有一个包含观察数据和建模数据的数据框 我想计算 R2 值 我期望有一个可以调用的函数 但找不到 我知道我可以自己编写并应用它 但我是否遗漏了一些明显的东西 我想要类似的东西 obs lt 1 5 mod lt c 0 8 2 4 2 3
  • ALSA:防止扬声器欠载的方法

    我正在非交错模式下播放单通道音频 当我将音频数据写入扬声器时 我遇到了问题 ALSA lib pcm c 7339 snd pcm recover underrun occurred 我是这样写的 printf d snd pcm avai
  • 使用存储过程的 Azure documentdb 批量插入

    您好 我正在使用 16 个集合插入大约 3 400 万个 json 对象 每个对象 5 10k 我正在使用存储过程来插入这些文档 我有 22 个容量单位 function bulkImport docs var collection get
  • 平台设备从何处获取名称

    我正在阅读关于围绕总线 设备和驱动程序构建的 Linux 设备模型 我能够了解一些有关设备和驱动程序匹配如何发生的信息 但不清楚总线在这里的作用 总线如何与设备匹配 我对平台设备从何而来还有一个疑问 平台总线只是将每个设备的名称与每个驱动程
  • CompilationRelaxations.NoStringInterning 实际上是如何工作的?

    我在演示 NoStringInterning 时遇到问题 assembly System Runtime CompilerServices CompilationRelaxations System Runtime CompilerServ
  • LINQ 中的*右*外连接

    可以肯定地说 LINQ 中不存在右外连接这样的东西吗 我知道要有效地创建一个 您只需交换左外连接中的表即可 但是您可以将 DefaultIfEmpty 方法应用于等值联接左侧的表以使其成为右外联接吗 经过广泛查找 我找不到任何涉及右外连接的
  • 使用策略模式在 C# 上实现类似多参数 C++ 模板的行为

    我正在尝试使用 C 泛型和基于策略模式的 C 模板来实现这个答案 这是该模式的示例 interface ISomePolicy
  • 我的 C/C++ 应用程序如何确定 root 用户是否正在执行该命令?

    我正在编写一个需要 root 用户权限才能执行的应用程序 如果由非 root 用户执行 它将退出并终止并显示错误消息 例如 pthread getschedparam Operation not permitted 我想让该应用程序更加用户
  • Python 中的切片是如何工作的

    Python 是如何实现的切片表示法工作 那就是 当我写这样的代码时a x y z a a 2 等等 我如何理解哪些元素最终出现在切片中 请在适当的地方添加参考文献 See Why are slice and range upper bou
  • switch 的替代语法

    嘿 PHP 中的 switch 语句有一种替代语法 但此代码不起作用 div div Newspage div div Forum div div 解析错误 语法错误 意外的T INLINE HTML 期待 path to file 行中的
  • mysqli出现问题怎么办?类似 mysqli_fetch_array() 的错误:参数 #1 必须是 mysqli_result 类型等

    在我的本地 开发环境中 MySQLi 查询执行正常 但是 当我将其上传到我的网络主机环境时 出现以下错误 致命错误 在 中的非对象上调用成员函数bind param 这是代码 global mysqli stmt mysqli gt pre
  • Javascript 文件无法在 github 页面上运行 [重复]

    这个问题在这里已经有答案了 我能够在本地计算机上加载我的 javascript 文件 但在 github 页面上 它不起作用 我已将该文件包含在 index html 中 该网站是https abhikulshrestha22 github
  • Java 堆转储:如何通过 1. io.netty.buffer.ByteBuf Util 2. byte[] 数组查找占用内存的对象/类

    我发现我的一个 Spring Boot 项目的内存 RAM 消耗 日益增加 当我将 jar 文件上传到 AWS 服务器时 它占用了 582 MB 的 RAM 最大分配的 RAM 为 1500 MB 但是每天 RAM 都会增加 50MB 到
  • 用作接口替代品的内部类示例

    我被告知的内容激发了我对这个话题的好奇 Java gui 类可以实现数百个侦听器和回调 并且许多书籍教您在 gui 类中实现所有这些接口 或者 这些方面可以在内部类中实现 因此侦听器调用的方法不会混淆 我想知道如何在 ActionScrip
  • 在Python中,在具有特定扩展名的目录中构建文件列表的最快方法

    在 GNU Linux 系统上的 Python 中 递归扫描目录中所有内容的最快方法是什么 MOV or AVI文件 并将它们存储在列表中 您可以使用 os walk 进行递归行走 使用 glob glob 或 fnmatch filter
  • 设置自定义字体

    我正在尝试在程序中将自定义字体 bilboregular ttf 设置为 2 个 jLabels 但字体未成功加载 主要方法调用如下 this should work if the build is in a jar file otherw
  • 如何在 MySQL 中将字符串添加到列值之前?

    我需要一个 SQL 更新语句来更新所有行的特定字段 并在现有值的前面添加一个字符串 test 例如 如果现有值为 try 则应变为 testtry 您可以使用CONCAT函数来做到这一点 UPDATE tbl SET col CONCAT
  • 从现有存储库的子目录创建新的 git 存储库

    我想从现有存储库的子文件夹中创建一个单独的存储库 将子目录分离 移动 到单独的 Git 存储库中恰恰表明了这一点 但是 我无法用它得到一个干净的仓库 我最终遇到了新存储库的两个问题 历史似乎是重复的 我无法保留分支历史记录 这是我所做的 g
  • 用 range() 以相反的顺序打印列表?

    如何生成以下列表range 在Python中 9 8 7 6 5 4 3 2 1 0 Use reversed 函数 高效 因为range实施 reversed reversed range 10 这更有意义 Update list cas
  • 关于 emacs 中的自动完成和 yasnippet

    我在 Emacs 中使用自动完成和 yasnippet 但我对它们的设置感到困惑 我将以下代码放入我的 emacs add to list load path emacs d plugins yasnippet require yasnip