Highly configurable web-based text editor based on codemirror. It is especially suited for editing markdown, LaTeX and html files with its built-in mechanism for viewing live-updating-as-you-type html and pdf previews. (It is also a capable editor for coding and other tasks.)
It can also be used for editing subsidiary files (css, javascript, xml, json, pandoc templates, etc.) and see their effects in the live-updating preview for their root markdown/LaTeX/html document. The default configuration uses pandoc for markdown conversions, but it can be configured to use other tools. In fact, it can be configured for creating live-previews of the output of any arbitrary kind of file, if the necessary processing commands are added to the settings.
It was created to be used for the Open Guide Typesetting Framework, though could be used independently.
Since version 0.2.0, the server-side backend for OGE takes the form of a router that can be added to ExpressJS or compatible server apps, running on NodeJS (or possibly another server-side JavaScript runtime). An earlier version took the form of php scripts for php-based websites. The older version is still available in this repo in the php branch.
See the installation documentation for information on how to use the router (or the corresponding documentation in the php branch for it).
Here is a short video showing what OGE looks like and how it works overall.
out1.mp4
Documentation for the project is broken down into four separate files. They independently cover:
-
Basic editor usage, including panel buttons and key-bindings
-
Configuring the editor’s settings and the commands used for processing and previewing
-
Creating sessions and granting access locally or on a server
These are available in the doc/
subdirectory, or by clicking the links above.
- implement session control and session configuration files
- reload settings on save
- implement codemirror v6 editor with top panel
- syntax highlighting
- code folding
- saving
- open new files
- create new files
- project tree
- allow toggling wrap/no-wrap
- find/replace panel
- piping selection to unix tools on server
- good keybindings
- auto-comment/uncomment
- generic autopreview mechanism for input/output file-type
- select type of output from panel
- allow downloading unpreviewable output
- support markdown as input
- preview html
- preview pdf
- download ePub
- citation auto-completion for pandoc-style citations/bibliographies
- support LaTeX as input (other things require this problem be fixed)
- smart quotes
- error reports
- preview pdf
- synctex support (both directions)
- support html as input
- preview (itself)
- edit supplementary files with same preview
- css/svg for html/markdown
- latex packages, bibtex databases or included files
- edit multiple files at once
- implement text-to-speech system for reading file out loud
- implement autosaving with configurable timer
- symbol picker
- “Fregeifier” integration
- spellcheck through browser’s native spellcheck
- simple jump marks
- templates
- custom dialogs with codemirror panels
- documentation
- initial to-do on readme
- basic usage, buttons and keybindings
- custom settings
- installation locally
- server installation
- handling sessions
- git integration
- doing a commit
- revert to earlier commit
- more?
- additional features
- multiple file at once
- split panels
- linting (partial through "checkonsave")
- support other color schemes (now supports over 300!)
- support other fonts in the editor
- settings panel for colors and fonts
- long term pipe dreams (?)
- LSP integration
- collaborative editing
This is a sequel to, and supersedes, my earlier K(ev)E(dit) editor. I have also written a lua neovim plugin that provides similar functionality, KNAP (Kevin’s Neovim Auto-Previewer).
Copyright 2023–2024 © Kevin C. Klement. This is free software, which can be redistributed and/or modified under the terms of the GNU General Public License (GPL), version 3.