https://github.com/ctc-oss/omega-edit
Open source library for building editors that can handle massive files, and multiple viewports.
https://github.com/ctc-oss/omega-edit
apache2 c cmake cpp cross-platform edit grpc library protobuf scala
Last synced: 8 months ago
JSON representation
Open source library for building editors that can handle massive files, and multiple viewports.
- Host: GitHub
- URL: https://github.com/ctc-oss/omega-edit
- Owner: ctc-oss
- License: apache-2.0
- Created: 2021-10-12T17:30:49.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T12:25:45.000Z (over 1 year ago)
- Last Synced: 2024-10-29T14:51:40.372Z (over 1 year ago)
- Topics: apache2, c, cmake, cpp, cross-platform, edit, grpc, library, protobuf, scala
- Language: C++
- Homepage: https://ctc-oss.github.io/omega-edit/
- Size: 16.4 MB
- Stars: 8
- Watchers: 4
- Forks: 6
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
Ωedit™ Library
[](https://github.com/ctc-oss/omega-edit/releases)


[](https://codecov.io/gh/ctc-oss/omega-edit)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fctc-oss%2Fomega-edit?ref=badge_shield)
[](https://gitter.im/ctc-oss/community)
## Goal
The goal of this project is to provide an open source library for building editors that can handle massive files, and
multiple viewports.
## User documentation
User documentation is published to https://ctc-oss.github.io/omega-edit/.
## Requirements
### Command line tools
- **C/C++ compiler** (such as clang, gcc, mingw, or MSVC)
- **CMake** (https://cmake.org/download/)
- **conan** C/C++ package manager (https://conan.io)
- **git** for version control (https://git-scm.com)
- **make** or **ninja** for running the build scripts (https://www.gnu.org/software/make/ or https://ninja-build.org)
- **nvm** or **nodeenv** for using specific versions of node.js
- **doxygen** to generate API documentation (https://www.doxygen.nl)
- **graphviz** to generate API documentation (https://graphviz.org)
- **sphinx** to generate user documentation (https://www.sphinx-doc.org)
- **sphinx RTD theme** (https://github.com/readthedocs/sphinx_rtd_theme)
- **breathe** ReStructuredText and Sphinx bridge to Doxygen (https://github.com/michaeljones/breathe)
- **scala/sbt/java** for building and running the gRPC server (https://www.scala-lang.org)
- **yarn** for building, testing, and packaging the node artifacts (https://yarnpkg.com)
### IDE
The Ωedit™ project is built primarily using [CLion](https://www.jetbrains.com/clion/), though [Visual
Studio Code](https://code.visualstudio.com/) also works well.
## Build the core library (C/C++)
:exclamation: These commands should be executed at the root level of the repository :exclamation:
### Install conan:
Conan is the package manager used to install the C/C++ dependencies. It can be installed via pip.
```bash
pip install conan
```
### Configure a build:
Depending on your linking needs, Ωedit™ can be built _either_ as a static (e.g., libomega_edit.a) or shared
(e.g., libomega_edit.so) library. `Release` or `Debug` versions can be created. Example programs and documentation can
also be built if desired. The Scala server _requires_ a shared library.
Here is how to build a debug version of a shared library, with no documentation or example programs.
```bash
cmake -S . -B _build -DCMAKE_BUILD_TYPE=Debug -DBUILD_DOCS=NO -DBUILD_EXAMPLES=NO -DBUILD_SHARED_LIBS=YES
```
### Build the configured build:
This will build the core library, and any example programs or documentation if configured. Note that the config type
(`Debug` or `Release`) must match the config type (`CMAKE_BUILD_TYPE`) used when configuring the build.
```bash
cmake --build _build --config Debug
```
### Run the test suite:
This will run the test suite for the core library. Note that the build config (`Debug` or `Release`) must match the
config type (`CMAKE_BUILD_TYPE`) used when configuring the build.
```bash
ctest --build-config Debug --test-dir _build/core --output-on-failure
```
### Install the core library:
We're installing in a directory named `_install` in the root of the repository. This is is where the Scala server will
look for the shared library by default or it can use the OE_LIB_DIR environment variable if different than the default
location. If you just want to use the library itself, you can install it anywhere you like (e.g., `/usr/local`).
```bash
cmake --install _build --config Debug --prefix _install
```
## Packaging Ωedit™ gRPC Server and Node Client
:exclamation: These commands should be executed at the root level of the repository after building/installing the core
library :exclamation:
Build, test, and package the server and client node packages. The server package will include the shared library built
in the previous step and packages a gRPC server that runs in a Java Virtual Machine (JVM). The client package will
include the node client.
```bash
yarn install
yarn workspace @omega-edit/server package
yarn workspace @omega-edit/client test
```
Node packages will be in `.tgz` files located at:
```
/packages/server/omega-edit-node-server-${VERSION}.tgz
/packages/client/omega-edit-node-client-${VERSION}.tgz
```
More information about the node packages can be found in the [packages](packages/README.md) folder.
## Release Binaries
[Binary releases](https://github.com/ctc-oss/omega-edit/releases) for macOS (Apple Silicon and x86), Windows (x86), and
Linux (ARM, and x86; glibc 2.31 or greater required) are built and published via GitHub CI workflows.
## Versioning
Ωedit™ follows [Semantic Versioning](http://semver.org/).
## ⚡Powered by Ωedit™
- [Apache Daffodil™ Extension for Visual Studio Code](https://github.com/apache/daffodil-vscode) - The Data Editor
component of this Visual Studio Code extension is powered by Ωedit™.
## License
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fctc-oss%2Fomega-edit?ref=badge_large)