所有開發活動已轉移到 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)一樣使用常規安裝方式。有關許多其他詳細信息,請查看相應的存儲庫。
其他問題
請參閱常見問題。