zem icon indicating copy to clipboard operation
zem copied to clipboard

Extensible Emacs-like text editor with Guile

  • ZEM Extensible Emacs-like text editor with GNU Guile Scheme.

#+HTML:

#+HTML: screenshot #+HTML:

** Features

  • Emacs-like editing: ZEM uses [[https://savannah.nongnu.org/projects/emacsy][Emacsy]] to provide an Emacsy feel (keymaps, minibuffer with completion, major & minor modes, etc.). Default key bindings are the same as vanilla Emacs (e.g. ~C-x C-f~ for ~find-file~). For the complete list of supported commands, use ~M-x TAB~.
  • Fully hackable and extensible with [[https://www.gnu.org/software/guile/][GNU Guile]]
  • [[https://github.com/tree-sitter/tree-sitter][Tree-sitter]] based syntax highlighting (currently only C++ is supported)

** Installation *** Requirements

  1. GNU Guile 3.0+ (may support Guile 2.2 but not tested)
  2. CMake (>= 3.11)
  3. [[https://conan.io/][Conan]]
  4. [[https://tiswww.case.edu/php/chet/readline/rltop.html][GNU Readline]]
  5. [[https://www.freetype.org/][Freetype]]

*** Building Clone this repo first: #+BEGIN_SRC shell git clone https://github.com/Jimx-/zem.git cd zem git submodule update --init --recursive #+END_SRC

Build the editor with: #+BEGIN_SRC shell mkdir build conan install . --output-folder=build --build=missing --settings=build_type=Debug cd build ln -s ../data/monospace.ttf cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake make #+END_SRC

** Usage Under the ~build~ directory, run: #+BEGIN_SRC shell ../run.sh #+END_SRC