A modern text editor that combines modal editing with an intuitive, out-of-the-box experience.
- Modern: Built on modern editor infrastructure.
- Intuitive: Behaves the way most people would naturally expect.
- Out of the box: Works well from the start, with no need for hundreds of lines of configuration.
- Consistency: Feels predictable and coherent, so similar actions lead to similar results throughout the editor.
Linux only now.
!!! This project is far from mature, so:
- May not be safe for production.
- Breaking changes affecting configurations, keymaps, and related components may be introduced frequently.
- Modal editing: Mostly like Vim/Neovim but have some differences. No Vi-compatiblility.
- Rich unicode support(utf-8)
- Mouse support
- Syntax highlighting with tree-sitter(c, c++, json)
- Basic word-based auto completion
- Colorscheme
See help for more infomation.
See TODO for planned features.
This project uses CMake build system.
Requirements:
- A C++ compiler which supports C++17 (GCC >= 8 / Clang >= 7). I prefer Clang.
- CMake >= 3.22
- Git
- make or ninja
mkdir build && cd build
# Use Clang(optional)
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
# Debug build
cmake -DCMAKE_BUILD_TYPE=Debug .. && cmake --build . -j$(nproc)
# Release build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build . -j$(nproc)
# Execute app
./mgo
# Execute test
./test
# Package
cmake --build . --target package -j$(nproc)
# This project agressively use FetchConent.
# Set FETCHCONTENT_FULLY_DISCONNECTED=ON to disable checking
# if you want to frequently modify CMakeLists.txt after a full fetch.
cmake -DFETCHCONTENT_FULLY_DISCONNECTED=ON ..