Zedファーストインプレッション
Introduction
Rust製コードエディター「Zed」がオープンソースに ~v1.0リリースへ向けて門戸を開く - 窓の杜 にもある通り、zed-industries/zedが公開されたのでコードをざっくり読んでみたのでメモする。
Rustへの知見が皆無であること、雑なコードリーディング要素があるのでご了承ください。
Feature
https://zed.dev/ には以下のようなことを書いている。
- ハイパフォーマンス
- AIサポート
- LSP
- Package
- vim-mode
- terminal
- theme
- etc.
- チーム開発
- UI/データ構造
- マルチコアサポート
- Tree-sitterサポート
- 共同編集アルゴリズムCRDT
Local Build
docs/src/developing_zed__building_zed.md にある手順通りコマンドを実行したら手元で簡単にBuildできた。
docs/src/system_requirements.md にはMacしかサポートしてないことが記述されている。
Docs
docs/src/configuring_zed.md に設定方法が書いてあるが、基本的にjson5で管理していて細かい設定ができそうなことが伺える。
docs/src/configuring_zed__configuring_vim.md にvim-modeの使い方が書かれている。
docs/src/telemetry.md にサービス改善の為に匿名でzed.devに利用状況を送信することが書かれている。
コードリーディング
ディレクトリごとに雑にコメントを書いていく。
$ tree -L 1 .
.
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Cargo.lock
├── Cargo.toml
├── Dockerfile
├── LICENSE-AGPL
├── LICENSE-APACHE
├── LICENSE-GPL
├── Procfile
├── README.md
├── assets
├── crates
├── debug.plist
├── docker-compose.sql
├── docker-compose.yml
├── docs
├── plugins
├── rust-toolchain.toml
├── script
├── target
└── typos.toml
assets/
font情報やiconやsoundsが入っている。 また、keymapsやsettingsにデフォルトの設定がjsonで格納されている。
crates/
package by featureのような設計になっている。各ディレクトリに Cargo.toml
があり、それぞれのディレクトリでRustが書かれている。
$ tree -L 1 crates/
crates/
├── activity_indicator
├── ai
├── assets
├── assistant
├── audio
├── auto_update
├── breadcrumbs
├── call
├── channel
├── cli
├── client
├── clock
├── collab
├── collab_ui
├── collections
├── color
├── command_palette
├── copilot
├── copilot_ui
├── db
├── diagnostics
├── editor
├── feature_flags
├── feedback
├── file_finder
├── fs
├── fsevent
├── fuzzy
├── git
├── go_to_line
├── gpui
├── gpui_macros
├── install_cli
├── journal
├── language
├── language_selector
├── language_tools
├── live_kit_client
├── live_kit_server
├── lsp
├── media
├── menu
├── multi_buffer
├── node_runtime
├── notifications
├── outline
├── picker
├── plugin
├── plugin_macros
├── plugin_runtime
├── prettier
├── project
├── project_panel
├── project_symbols
├── quick_action_bar
├── recent_projects
├── refineable
├── rich_text
├── rope
├── rpc
├── search
├── semantic_index
├── settings
├── snippet
├── sqlez
├── sqlez_macros
├── story
├── storybook
├── sum_tree
├── terminal
├── terminal_view
├── text
├── theme
├── theme_importer
├── theme_selector
├── ui
├── util
├── vcs_menu
├── vim
├── welcome
├── workspace
├── zed
└── zed_actions
84 directories, 0 files
docs/
各ドキュメントが書かれている。
plugins/
plugins/test_pluginやplugins/json_languageにプラグインの実装例が書いてある。Rustで拡張が書けるらしい。
script/
開発用scriptが置いてある。
Mac前提なのかHomebrewの記述がある。 また、kubectlの記述もあるのでどこかしらへのホスティングを想定されているようです。
雑感
Atomの後継としてatom-archive/xrayに期待してたがArchiveされてしまってがっかりしていた身としてはZedに期待したい。