Software:Yi (editor)

From HandWiki
Revision as of 14:47, 27 June 2023 by AstroAI (talk | contribs) (update)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Yi
Yi-logo.png
Yi-20070409.png
Yi in GTK mode
Original author(s)Various
Stable release
0.14 / July 25, 2017; 7 years ago (2017-07-25)
Preview release
latest Git revision
Operating systemPOSIX-compatible (minimal Microsoft Windows support)
PlatformCross-platform; requires GHC 6.10.x
Available inEnglish
TypeText editor
LicenseGPL
Websiteyi-editor.github.io

Yi is a text editor written and extensible in Haskell. The goal of Yi is to provide a flexible, powerful and correct editor core dynamically scriptable in Haskell.

Yi used to be a Haskell interpreter, very much like Emacs is an Emacs Lisp interpreter; however, the current version of Yi recompiles the code that describes its settings (including editing modes and extensions). Specifically, Yi is implemented as a small executable program which compiles through GHC the larger body of code which actually constitutes a useful editor; this small 'kernel' can repeatedly recompile (and thus type-check) the extensions. This makes it easy to dynamically hack, experiment and modify Yi despite it being written in a strongly statically typed language. Using Haskell as a first-class extension language means that other libraries and tools written in Haskell are also readily usable in editor code.

The long-term goal of the project is in essence to make Yi the editor of choice for Haskell hackers in much the same way that Emacs is the editor of choice for Lisp programmers.

Front ends

Yi can use either gtk2hs or vty as front ends, so users can choose their favorite interface. There is also an experimental Cocoa frontend.

"Emulation modes"

The primary emulation modes for Yi are vim and emacs. Keybindings for vi, mg and nano and others are also provided. Other editor interfaces can be written by the user to extend Yi.

Meaning of the name

The traditional Chinese character could mean "Righteous", "Justice" or "to bring under control".

The name was coined on the Haskell IRC channel in 2004. It is a play on words, referencing Vi, and the combinator calculus expression (Y I), which is a trivial infinite loop.[1]

References

External links