Skip to content

Commit 9bc7c98

Browse files
committed
Remove Single Header from the Readme
Maintaining the single header build has become a chore, so I am deprecating it for now. It is easy to install Zep as a package, or just copy/paste the source files to projects. I don't have enough time currently to keep the single header alive, sorry ;) I won't actually remove the ability, just not advertise it for now.
1 parent 4b8e8ac commit 9bc7c98

File tree

1 file changed

+8
-22
lines changed

1 file changed

+8
-22
lines changed

README.md

+8-22
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@
77
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/cmaughan/zep/blob/master/LICENSE)
88
[![Join the chat at https://gitter.im/Resonality/zep](https://badges.gitter.im/Resonality/zep.svg)](https://gitter.im/Resonality/zep?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
99

10-
Zep is a simple embeddable editor, with a rendering agnostic design and optional Vim mode. It can be built as a shared modern-cmake library, or included using a single header. The core library is dependency-free (the demo application requires an installed package). Out of the box Zep can draw to a Qt Widget or an an ImGui window - useful for embedding in a game engine. A simple syntax highlighting engine is provided, and can easily be extended. Basic theming support is included, and window tabs and vertical/horizontal splits are also available. Zep is 'opinionated' in how it does things, but is easy to modify and supports many common features. It is heavliy influenced by Vim, but has a good notepad-style editing mode too. A simple search feature (Ctrl+P) is a powerful way to find things, and a Repl mode is useful for implementing a console for game scripting. Intended to eventually sit inside a live-coding environment, Zep also has a minimal mode and several configuration options which can be set in a simple toml-format file.
10+
Zep is a simple embeddable editor, with a rendering agnostic design and optional Vim mode. It is built as a shared modern-cmake library. The core library is dependency-free (the demo application requires an installed package), and it is possible just to copy the files into your project and build it. Out of the box Zep can draw to a Qt Widget or an an ImGui window - useful for embedding in a game engine. A simple syntax highlighting engine is provided, and can easily be extended. Basic theming support is included, and window tabs and vertical/horizontal splits are also available. Zep is 'opinionated' in how it does things, but is easy to modify and supports many common features. It is heavliy influenced by Vim, but has a good notepad-style editing mode too. A simple search feature (Ctrl+P) is a powerful way to find things, and a Repl mode is useful for implementing a console for game scripting. Intended to eventually sit inside a live-coding environment, Zep also has a minimal mode and several configuration options which can be set in a simple toml-format file.
1111

1212
![ImGui](screenshots/sample.png)
1313

1414
Zep supports the standard editing keystrokes you'll find in most editors, along with a reasonable subset of modal Vim editing as an option. The demo project lets you switch between the editing modes on the fly. Zep is not meant to replace Vim. I don't have a lifetime spare to write that, but it has most of the functionality I use day to day, and anything missing gets added over time. A keymapper enables configuration of Zep outside the standard modes offered.
1515

16-
Zep is ideally suited to embedding in a game engine, as an in-game editor, or anywhere you need a simple editor without a massive dependency on something more substantial like NeoVim. The core library is dependency free, small, and requires only a modern C++ compiler. Zep can be included in your project building a dependency-free modern cmake library, and setting `Zep::Zep` in `target_link_libraries`. A header-only implementation of the ImGui and Qt backends is provided as an addendum to the core library; this enables Zep to render in an ImGui or Qt environment. Zep can be included in your project by setting a define and including zep.h, though this is not the recommended path, since th modern CMake library is easier to use and update.
17-
18-
The demos for Qt and ImGui require their additional packages, but the core zep code is easily built and cross platform. The ImGui demo builds and runs on Windows, Linux and Mac OS. If you're a Vim user, you might often suffer the frustration of not being able to use Vim keystrokes in your tools. Zep solves that.
16+
Zep is ideally suited to embedding in a game engine, as an in-game editor, or anywhere you need a simple editor without a massive dependency on something more substantial like NeoVim. The core library is dependency free, small, and requires only a modern C++ compiler. Zep can be included in your project building a dependency-free modern cmake library, and setting `Zep::Zep` in `target_link_libraries`. A header-only implementation of the ImGui and Qt backends is provided as an addendum to the core library; this enables Zep to render in an ImGui or Qt environment. After building and installing Zep on your system, only 2 lines are required in your CMakeLists to use it. An alternative would be to just copy and build the source files for the core library into your project.
1917

18+
The demos for Qt and ImGui require dditional packages, but these aren't required to embed Zep in your application. The ImGui demo builds and runs on Windows, Linux and Mac OS. If you're a Vim user, you might often suffer the frustration of not being able to use Vim keystrokes in your tools. Zep solves that.
2019

2120
Key Features:
2221
* Modal 'vim' or modeless 'standard' editing styles; built around a common core of functionality.
@@ -30,7 +29,6 @@ Key Features:
3029
* CTRL+P search for quick searching files with fuzzy matching
3130
* Text Markers for highlighing errors, etc.
3231
* No dependencies, cross platform, small library
33-
* Single header compile option
3432
* Builds on VC 2017, GCC 6, Clang. C++14 is the basic requirement
3533
* A work in progress extension mode to support an Orca-like environment
3634
* A work in progress tree control for file navigation
@@ -50,9 +48,6 @@ One of my targets for Zep is to get it to the point where I can use it as a stan
5048

5149
Pull requests are appreciated and encouraged ;)
5250

53-
There also is a trivial example of integrating zep into imgui here (Needs an update/sync to the latest -I do recommend using the library over the single header approach)
54-
[Zep Inside ImGui Demo](https://github.com/cmaughan/imgui)
55-
5651
Screenshots
5752
-----------
5853
Live Coding in 'Minimal' Mode:
@@ -80,7 +75,7 @@ Zep is built from simple interacting layers for simplicity.
8075
### Text
8176
The text layer manages manipulation of text in a single buffer. At the bottom level, a gap buffer struture maintains the text information.
8277
The buffer layer is responsible for saving and loading text, and supporting simple search and navigation within the text. Much of the higher
83-
level mode code uses the buffer commands to move around inside the text.
78+
level mode code uses the buffer commands to move around inside the text. A GlyphIterator is used within the buffer in order to walk along it in UTF8 code-points.
8479

8580
A command layer supplies functions to add and remove text, and supports undo; all buffer modifications are done with these simple commands.
8681

@@ -99,7 +94,6 @@ See [Vim Mode](https://github.com/cmaughan/zep/wiki/Vim-Mode), or the top of the
9994

10095
# Building
10196
You can follow the build buttons above to see the build process or look in the travis or appveyor scripts.
102-
There is also a sister project, [Zep Inside ImGui Demo](https://github.com/cmaughan/imgui), which shows how simple it is to add Zep to the standard ImGui demo. In that project, Zep is simply included using the zep.h header. That's the easiest way to get started if you aren't experienced with CMake.
10397

10498
## 1. Get the Source
10599
git clone https://github.com/cmaughan/zep zep
@@ -122,19 +116,10 @@ sudo apt install git
122116
```
123117
brew install cmake
124118
brew install git
125-
(Note that as of 17/10 I don't have a Mac to test/fix the mac build. That should be sorted soon)
126-
```
127-
128-
# 3(a). Single Header Option
129-
To start using zep in your project straight away, you can use the single header option. Add the following to one of your source files:
130-
```
131-
#define ZEP_SINGLE_HEADER_BUILD
132-
#include <zep/src/zep.h>
133119
```
134-
This effectively compiles all of the zep code in a single step. Put it in a file you don't modify often, since it will increase the compile time for that file.
135120

136-
# 3(b). Install the Zep library as a package
137-
Alternatively, you can install the library using a minimum build. Here is a typical build instruction for windows, assuming you have just synced this repo:
121+
# 3 Install the Zep library as a package
122+
Here is a typical build instruction for windows, assuming you have just synced this repo:
138123
```
139124
mkdir build
140125
cd build
@@ -144,6 +129,7 @@ cmake --build . --target install
144129

145130
At this point your system will have installed the zep library. You can add its paths and library to your project like this:
146131
```
132+
find_package(Zep REQUIRED)
147133
target_link_libraries(MYPROJECT PRIVATE Zep::Zep)
148134
```
149135

@@ -192,7 +178,7 @@ cd zep
192178
```
193179

194180
# Mac
195-
Build instructions and testing on mac needs an update; coming soon!
181+
Build instructions and testing on mac needs an update; consult the travis build to see examples
196182

197183
## Tests
198184
Type `CTest --verbose` in the build folder to run unit tests.

0 commit comments

Comments
 (0)