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.mzph.cn/news/608717.shtml

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

相关文章

React Native 桥接原生实现 JS 调用原生方法

一、为什么需要桥接原生 为了满足在React 层无法实现的需求 复杂高性能的组件:复杂表格、视频播放原生层开发能力:传感器编程、widget平台属性:系统信息、设备信息对接第三方应用:相机、相册、地图 真实的开发过程中是不可能完…

Spring循环引用和三级缓存

前言 Spring 解决 Bean 之间的循环引用关系用到了三级缓存,那么问题来了。三级缓存是怎么用的?每一层的作用是什么?非得用三级吗?两级缓存行不行? 理解循环引用 所谓的“循环引用”是指 Bean 之间的依赖关系形成了一…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷④

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷4 目录 需要竞赛软件包环境以及备赛资源可私信博主!!! 2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷4 模块一 …

一键搭建elk

一键启动elk 1. 生成环境的脚本 setup.sh #!/usr/bin/bash# logstash enviroment mkdir -p logstash touch logstash/logstash.conf # shellcheck disableSC1078 echo input {tcp {mode > "server"host > "0.0.0.0"port > 4560codec > jso…

多PC文件夹同步方案

在多个工作终端独立具备svn版本库的情况下,可使用本工具进行一键同步。 相较于传统的SVN中心检出更新方案中移动存储设备硬件及文件目录系统多终端间易损坏,本方案更加稳定 资料同步结构: 使用步骤: 1.修改config.ini配置文件 2…

【C++】HP-Socket(二):框架介绍、功能说明

1、接口 1.1 接口模型 1.2 三类接口 HP-Socket 定义了三类接口 组件接口(如:ITcpServer / IUdpClient):声明组件操作方法,应用程序创建组件对象后通过该接口来使用组件组件实现类(如:CTcpSer…

Mac 安装Nginx教程

Nginx官网 Nginx官网英文 1.在终端输入brew search nginx 命令检查nginx是否安装了 2. 安装命令:brew install nginx 3. 查看Nginx信息命令brew info nginx 4. 启动 nginx方式:在终端里输入 nginx 5.查看 nginx 是否启动成功 在浏览器中访问http://l…

powerdesigner导出sql将name放到comment注释上

1. 批量设置 2. 脚本 Option Explicit ValidationMode True InteractiveMode im_Batch Dim mdl the current modelget the current active model Set mdl ActiveModel If (mdl Is Nothing) ThenMsgBox"There is no current Model " ElseIf Not mdl.IsKindOf(PdPD…

JSON数据处理

1.添加json依赖 springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置&#xff0c;只需引入以下类库springmvc就可以处理json数据&#xff1a; <!--spring-json依赖--> <dependency><groupId>com.fasterxml.jackson.c…

构建自己的私人GPT-支持中文

上一篇已经讲解了如何构建自己的私人GPT&#xff0c;这一篇主要讲如何让GPT支持中文。 privateGPT 本地部署目前只支持基于llama.cpp 的 gguf格式模型&#xff0c;GGUF 是 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品&#xff0c;llama.cpp 不再…

【cmu15445c++入门】(2)c++中的std::move() 左值引用右值引用

左值右值 要理解move语义&#xff0c;必须理解左值和右值的概念。左值的简化定义是左值是对象&#xff0c;指向内存中某个位置。右值是左值之外的任何。 std::move() move语义&#xff0c;在C中是一个有用的方法&#xff0c;它允许在对象之间高效和优化地转移数据所有权。m…

SpringMVC SpringMVC概述

1.1.MVC介绍 MVC是一种设计模式&#xff0c;将软件按照模型、视图、控制器来划分&#xff1a; M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为数据承载Bean&#xff1a;专门存储业务数…

vue3 useAttrs的使用场景,提取共有props

1 场景 多个类似组件都需要传参data&#xff0c;用于请求接口或者处理数据&#xff0c;想让组件干净整洁&#xff0c;把参数data提出来 2 方法 选项式 可以使用mixin混入或者extends继承&#xff08;略&#xff09; 组合式 可以使用hook 无脑式踩坑&#xff08;如下代码…

LabVIEW在设备状态监测与故障诊断中的应用

在现代工业自动化领域&#xff0c;LabVIEW的系统设计平台在设备状态监测与故障诊断中扮演着举足轻重的角色。通过提供一个可视化和数据流编程语言&#xff0c;LabVIEW大大提升了设备安全监测的效率&#xff0c;减少了系统维护成本&#xff0c;同时增强了设备的可靠性和可维护性…

Verilog 高级教程笔记——持续更新中

Verilog advanced tutorial 转换函数 调用系统任务任务描述int_val $rtoi( real_val ) ;实数 real_val 转换为整数 int_val 例如 3.14 -> 3real_val $itor( int_val ) ;整数 int_vla 转换为实数 real_val 例如 3 -> 3.0vec_val $realtobits( real_val ) ;实数转换为…

Yolov5水果分类识别+pyqt交互式界面(附代码)

本文介绍了基于Yolov5模型的水果分类识别系统以及使用PyQt库构建的交互式界面。 首先&#xff0c;Yolov5是一种目标检测算法&#xff0c;它可以通过输入图片&#xff0c;自动识别出其中包含的不同目标&#xff0c;并标注出它们的位置和类别。我们利用Yolov5模型对水果图片进行…

【算法Hot100系列】有效的数独

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

6款实用的Git可视化管理工具

前言 俗话说得好“工欲善其事&#xff0c;必先利其器”&#xff0c;合理的选择和使用可视化的管理工具可以降低技术入门和使用门槛。我们在团队开发中统一某个开发工具能够降低沟通成本&#xff0c;提高协作效率。今天给大家分享6款实用的Git可视化管理工具。 Git是什么&…

01-连接池项目背景:C++的数据库操作

从0开始学习C与数据库的联动 1.原始方式-使用MySQL Connector/C 提供的API查询 1.1 数据库预操作 我的本地电脑上有mysql数据库&#xff0c;里面预先创建了一个database名叫chat&#xff0c;用户名root&#xff0c;密码password。 1.2 Visual Studio预操作 在Windows上使用…

openGauss学习笔记-189 openGauss 数据库运维-常见故障定位案例-TPCC-WAL-内存

文章目录 openGauss学习笔记-189 openGauss 数据库运维-常见故障定位案例-TPCC-WAL-内存189.1 TPCC运行时&#xff0c;注入磁盘满故障&#xff0c;TPCC卡住的问题189.1.1 问题现象189.1.2 原因分析189.1.3 处理分析 189.2 备机处于need repair(WAL)状态问题189.2.1问题现象189.…