1878_emacs company backend的选择尝试

Grey

全部学习内容汇总: GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used.

1872_emacs company backend的选择尝试

从C语言开发的使用场景角度,通过测试尝试看看这个company的backend应该来如何配置。

主题由来介绍

emacs使用很多年了,基本上从开始使用的时候 company 就是我emacs中的一个插件。自然,这个插件过去这么多年帮我节省了很多时间。但是,相比很多工具的补全功能来说,我自己使用的配置这个功能实现的的确还不是很理想。如果从语义分析以及补全的角度来讲,使用lsp或许是目前为止我体验到的比较好的一种解决方案。

资料整理过程说明

这一次主要是从尝试的角度来进行对比,找到一个合理的方式。不过,关于这个主题我的确找到了一篇文章,里面的相关链接等或许都值得我们去看看: company-mode for Emacs

要点细节分析

进行company backend配置,可以直接通过代码配置实现,但是我觉得比较好用的还是直接借助于内置的配置界面来处理。进入方式: M-x customize-group,回车后可以进入配置界面。效果如下:

  • 这种配置属于GUI的模式,在操作上更加简单。
  • 箭头都可以点击实现展开。
  • 上面已经有了backend的条目。

  • 以上是backend的一个配置方式,可以有多种选择,还可以实现组合。
  • 如果针对不同的场景选择不同的补全方式,使用elisp应该还是更简单的。
  • 这里后面没有DEL的INS,点击一下,会创建一个新的backend,而后面的数值菜单中可以选择什么引擎。

针对C语言的尝试

默认情况

默认的时候,我的配置中有一堆的backend。但是,在C语言的补全使用中效果并不理想。加上我在代码中也吵了一些别人的配置,让效果更加不好。之前,我用了多年的spacemacs,补全上虽不理想但是至少差强人意。从这样的效果看,至少是能够看得出来,这个东西不是放的配置越多越好。

只用一种

以上是可以选择的一些效果,我尝试进行了一种配置的选择测试,这里简单总结一下我试过的几种backend的效果吧。

clang

  • C语言很有针对性。经过测试,的确如此,甚至能够实现结构体成员的补全。但是我用的机器是Windows,这个补全的速度太慢了!

Programming language keywords

  • void、return等关键词就实现不了补全。

etags

  • TAG文件。不过,单纯的一种,补全的只是TAG文件中分析出来的语素信息,补全不了诸如void以及return等关键词。

dabbrev for code

dabbrev for plain text

  • for code的功能。但是,会导致弹出来的候选项太多,因此我放弃不用。

组合模式

其实,从配置界面能够看到一个很好的组合模式。可以一次性用集中backend来实现后续的补全效果。这也是我后面的选择方式,我把关键词、etags、dabbrev for code组合起来,实现了不错的补全效果。

小结

其实,网络上的好的补全效果看起来几种。clang、lsp、GNUPG Global等。我在Windows上hack的时候都不算顺利,因此之前一直算是勉强用着一点略有加强的补全效果。后续,这部分还是可以进一步深入分析一下的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/334628.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连接两个路由器的有线连法,关键时候可能会发挥不小的作用

路由器网桥连接两个或多个路由器,以扩展网络范围,提供额外的以太网端口和无线接入点。但在开始之前,你必须首先决定如何使用每个路由器。因此,你需要知道你想要实现什么,并清楚地了解你对每台设备的期望。 例如你想扩…

在VS Code中安装Copilot与安装其他扩展的方法一样,只需简单几步

GitHub Copilot是由OpenAI和GitHub开发的人工智能工具。它的目的是通过自动完成代码来帮助开发人员使用集成开发环境(IDE),如Visual Studio Code。它目前仅作为技术预览版提供,因此只有在候补名单上被认可的用户才能访问它。对于用…

MP4转gif图片怎么操作?一个网站帮你搞定

Gif格式图片相较于视频它的体积更小,传播起来更方便。当我们手中有MP4格式的视频想要制作gif动画的时候应该怎么操作呢?通过使用mp4转换gif(https://www.gif.cn/)动图的工具,不用下载任何软件,手机也能在线…

基于Java SSM框架实现点餐系统网站系统项目【项目源码

基于java的SSM框架实现点餐系统网站系统演示 JAVA简介 JAVA语言是目前软件市场上应用最广泛的语言开发程序。可以在多种平台上运用的,兼容性比较强,适应市面上大多数操作系统,不会出现乱码的现像,其扩展性和维护性都更好&#xf…

09.面向对象进阶

面向对象进阶 在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的了解。 property装…

Java进击框架:Spring-Web(八)

Java进击框架:Spring-Web(八) 前言DispatcherServlet拦截器异常视图解析重定向转发 语言环境日志 过滤器带注释的控制器声明映射请求其它注解验证 功能性端点URI Links异步请求CORSHTTP缓存视图技术MVC配置其他Web框架 前言 Spring Web MVC是…

亚马逊广告竞价影响大吗?亚马逊广告竞价设置方法?-站斧浏览器

亚马逊广告竞价影响大吗 频繁调整亚马逊广告竞价可能导致一些负面影响,包括: 广告权重重新评估: 每次调整都会导致亚马逊系统重新评估广告权重,如果调整后的权重下降,可能导致广告排名下降,PPC广告成本上…

24/01/09 qt work

1. 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是…

集合(二)Collection集合Set

一、无序列表Set: 是一个散列的集合,数据会按照散列值存储的,如两个hello的散列值相同,会存储在同一个地址中,所以看到的就是只有一个hello在集合中了。 1、Set集合有两个主要的实现子类:Hashset和Treeset…

贯穿设计模式-建造者模式+代理模式+原型模式

样例代码 涉及到的项目样例代码均可以从https://github.com/WeiXiao-Hyy/Design-Patterns.git获取 需求 个人或公司需要开发票时,会有个人发票和企业发票的区别 -> 建造者模式;不同业务部门可能都需要使用发票数据,需要拷贝同一份发票 -&g…

Day2Qt

1.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数,将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#xff…

XREAL推出其新款AR眼镜:XREAL Air 2 Ultra,体量轻内置音效

这款眼镜堪称科技的杰作,它以钛合金为框架,尽显轻盈与精致。配备的双3D环境传感器,宛如双眼般敏锐,能精准捕捉头部运动,让你在虚拟与现实间自由穿梭。120Hz的超高刷新率与500尼特的亮度,让你在4米之外感受1…