所有开发活动均已转移到 cxxd 和 cxxd-vim 存储库。为了跟上最新的发展,鼓励使用 cxxd-vim 插件。有关更多详细信息,请参阅常见问题解答的第一部分。
内容
变化
- 2018 年 7 月 13 日
- 核心功能已被提取到单独的存储库:
- cxxd,C/C++语言服务器的实现
- cxxd-vim,为
cxxd
开发的 Vim 前端
Yavide
将包含这些作为依赖项,并将继续正常运行,但所有开发活动和焦点现在都转移到这些项目,因此为了获得更多功能和稳定性,请直接从普通的 Vim 配置开始使用它们。
- 2017 年 12 月 2 日
- 实现了基于 Clang 的索引器
- 实现了基于 Clang 的查找所有引用
- 实现了基于 Clang 的转到定义
- 实现了基于 Clang 的 go-to-include
- 实现了对 clang-tidy 的支持
- 实现了对 JSON 编译数据库的支持
- 实施翻译单元缓存机制
- 各种错误修复和其他较小的改进
- 2017 年 2 月 12 日
- 实施类型扣除服务。
- 将鼠标光标悬停在源代码上将提供有关底层构造(即数据类型、函数签名等)的详细信息。
- 2017 年 2 月 10 日
- 实施了基于 Clang 的修复和诊断服务。
- 实现了可以在多个服务中共享相同 AST 的机制:
- 例如,一旦构建了 AST,语义语法突出显示和 Clang 修复服务将能够共享相同的 AST。
- 当更多基于 Clang 的重量级服务(例如索引器和自动完成引擎)发挥作用时,这一点尤其重要。
- 重构服务器端代码,将特定于编辑器的集成与服务的核心实现分离。
- 2017 年 1 月 19 日
- 完善了语法突出显示的一些粗糙边缘:
- 实现了对处理一组重载函数或函数模板(CursorKind.OVERLOADED_DECL_REF 表达式)的支持
- 实现了对处理依赖类型(TypeKind.DEPENDENT 表达式)的支持
- 为 clang.cindex 实现了非侵入式补丁,支持更灵活的 AST 遍历
- 2016 年 12 月 28 日
- 实现了基于 Clang 的源代码语法突出显示服务(运行
cd /colors/yaflandia && git pull
以获得所需的颜色方案更改)
- 2016 年 7 月 1 日
- 实现了新的通用客户端-服务器(异步)框架,该框架允许分派任何类型的操作在单独的非阻塞后台进程(所谓的服务)中运行,并且完成后结果可以报告回服务器(“Yavide”)。
- 在新的异步框架之上实现了 4 个新服务:
- 即时源代码语法突出显示服务。
- 即时源代码索引服务。
- 基于 Clang 的源代码自动格式化服务。
- 项目建设者服务。
安装
请参阅安装指南。
用法
请参阅用法。
截图
查看一些正在运行的 GIF。
更多详情...
特征
- 针对 C/C++ 开发进行捆绑和调整
- 项目管理
- 项目浏览器
- 项目建设者
- 类浏览器
- 概述当前单元中定义的符号(即宏、结构、类、方法、命名空间等)
- 源代码自动完成
- 由真正的 C/C++ 编译器后端支持,确保完全正确
- 源码导航
- 基于
libclang
源码语法高亮 - 源代码自动格式化
- 源码静态分析
- 源代码管理客户端集成
- 更多杂项功能,例如:
- 括号自动补全
- 上下文感知的普通文本自动完成
- 多选编辑支持
- 代码片段
- 配色方案支持
制作人员
这是系统当前使用的第三方 Vim 插件的按字母顺序排列的列表:
- 一个(https://github.com/vim-scripts/a.vim)
- Clang_complete (https://github.com/Rip-Rip/clang_complete)
- NERDCommenter (https://github.com/scrooloose/nerdcommenter)
- NERDTree(https://github.com/scrooloose/nerdtree)
- SuperTab (https://github.com/ervandew/supertab)
- 标签栏(https://github.com/majutsushi/tagbar)
- UltiSnips (https://github.com/SirVer/ultisnips)
- vim-airline (https://github.com/bling/vim-airline)
- vim-autoclose (https://github.com/Townk/vim-autoclose)
- vim-fugitive (https://github.com/tpope/vim-fugitive)
- vim-gitgutter (https://github.com/airblade/vim-gitgutter)
- vim-multiple-cursors (https://github.com/terryma/vim-multiple-cursors)
- vim-pathogen (https://github.com/tpope/vim-pathogen)
常问问题
为什么开发重点转移到 cxxd 和 cxxd-vim 上?
TL;DR 将一个大型整体Yavide
存储库分成两个独立的存储库( cxxd
和cxxd-vim
)为我们带来了更加模块化、可重用、可测试和灵活的设计。这种方法还有许多其他优点,在此简要说明,但现在重要的部分是前端逻辑(例如 UI 实现)现在与后端实现(C/C++ 语言服务器功能)分离。现在,这两项发展都可以单独并行推动。此外, cxxd-vim
行为就像一个真正的 Vim 插件,因此您不再需要使用 hacky 安装脚本,而是像任何其他 Vim 插件(例如 Vundle)一样使用常规安装方式。有关许多其他详细信息,请查看相应的存储库。
其他问题
请参阅常见问题解答。