前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 OpenGrok 实现 Emacs 中代码符号查找跳转

基于 OpenGrok 实现 Emacs 中代码符号查找跳转

作者头像
RainMark
发布2021-01-29 10:13:39
8330
发布2021-01-29 10:13:39
举报
文章被收录于专栏:RainMark 的文章

背景

一直比较忙,太久没写点东西了,今天介绍下之前做的一个 Emacs 脚本。在公司里主要用 C++ 作为生产语言,平时用 Mac 电脑工作,但是代码开发都是在远端服务器上。公司代码异常庞大,思考不逊色 Linux 内核代码量,并且源代码级别依赖的项目更是几十个。作为 Spacemacs 老用户平时都是用它做主力生产工具,尽管源代码在远端服务器上,我仍然用本地 Mac 上带 GUI 的 Spacemacs 开发,通过 Oxfs 可以非常容易的将服务器上文件系统挂到本地进行开发,不卡顿。

开发过程中为了更好的代码跳转体验,尝试过暴力 grep,到 ripgrep,然后是 cscope,也折腾过 cquery,以及 ccls,在我这种远端开发模式下都不好用,要么是查找不精确,要么是太慢,要么是难以捕捉出 clang 编译数据库,公司用的 Scons 版本太老,也不好升级。最好是能够几个命令就能搞定才是我想要的。

opengrok

一有空就会去搜罗一番,看看是否大家有更好方案,一直未果。偶然机会发现了 opengrok,看了项目主页做的同类工具对比,真是厉害啊。

提供了函数定义,引用查找,全文检索,文件查找,甚至 Web UI,直接通过浏览器浏览源代码,并随意跳转。这方便程度非常高啊。上个图给大家感受下。



一开始我用 opengrok 浏览一些陌生代码,写代码时候用它查找一些依赖的函数定义,查看参数等,还是比较方便。时间久了以后还是觉得麻烦,要是在 Spacemacs 里直接快捷键跳转该多好。有了这个想法首先要调研下别人是否做了类似事情。Google 几轮下来,还是有人做了 Emacs 对 opengrok 适配,能用的基本上只有 eopengrok.el,该项目在 Emacs 中封装了 opengrok 命令行,实现我想要的功能。

有个致命的问题,我编辑的代码在远端开发机上,opengrok 必须得部署在开发机上,我本地调用开发机上 opengrok 命令麻烦,要写转换脚本,解决两端目录还不一致等问题。再加上opengrok 基于 java开发,开发机上各种环境都比较老旧,且不好动,真是麻烦。

opengrok-restful

未果后,发现了 opengrok 提供了 restful api,突然想到我 Emacs 直接走 restful api 与 opengrok 交互岂不美哉,我本地查找符号,查找定义时,只是和开发机做一次 http 交互,这可太清晰简单明了。

说干就干,暴力开发了一段时间后,基本上成型可用,项目提交代码到 github 上了,希望感兴趣的童鞋也来尝试使用鸭~

https://github.com/RainMark/opengrok-restful

目前基本实现了各个项目之间项目查找符号定义,引用,文件查找等,个人平时使用感觉还行,上个图看下。


本文由博客群发一文多发等运营工具平台 OpenWrite 发布

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • opengrok
  • opengrok-restful
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档