You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
[](https://gitter.im/Resonality/zep?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
9
9
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.
11
11
12
12

13
13
14
14
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.
15
15
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.
19
17
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.
20
19
21
20
Key Features:
22
21
* Modal 'vim' or modeless 'standard' editing styles; built around a common core of functionality.
@@ -30,7 +29,6 @@ Key Features:
30
29
* CTRL+P search for quick searching files with fuzzy matching
31
30
* Text Markers for highlighing errors, etc.
32
31
* No dependencies, cross platform, small library
33
-
* Single header compile option
34
32
* Builds on VC 2017, GCC 6, Clang. C++14 is the basic requirement
35
33
* A work in progress extension mode to support an Orca-like environment
36
34
* 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
50
48
51
49
Pull requests are appreciated and encouraged ;)
52
50
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)
@@ -80,7 +75,7 @@ Zep is built from simple interacting layers for simplicity.
80
75
### Text
81
76
The text layer manages manipulation of text in a single buffer. At the bottom level, a gap buffer struture maintains the text information.
82
77
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.
84
79
85
80
A command layer supplies functions to add and remove text, and supports undo; all buffer modifications are done with these simple commands.
86
81
@@ -99,7 +94,6 @@ See [Vim Mode](https://github.com/cmaughan/zep/wiki/Vim-Mode), or the top of the
99
94
100
95
# Building
101
96
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.
103
97
104
98
## 1. Get the Source
105
99
git clone https://github.com/cmaughan/zep zep
@@ -122,19 +116,10 @@ sudo apt install git
122
116
```
123
117
brew install cmake
124
118
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>
133
119
```
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.
135
120
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:
0 commit comments