diff options
Diffstat (limited to 'curses/README.md')
-rw-r--r-- | curses/README.md | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/curses/README.md b/curses/README.md new file mode 100644 index 000000000..ecbc2a5db --- /dev/null +++ b/curses/README.md @@ -0,0 +1,78 @@ +# Scintilla curses + +## Overview + +This is an implementation of [Scintilla][] for curses platforms including: + +* [ncurses][] +* [PDCurses][] +* X/Open Curses + +[Scintilla]: http://scintilla.org +[ncurses]: http://invisible-island.net/ncurses/ +[PDCurses]: http://pdcurses.sourceforge.net/ + +## Compiling + +Simply run `make` to build the usual `../bin/scintilla.a`. + +## Usage + +It is highly recommended to use Scintilla curses in a UTF-8-aware terminal with +a font that supports many UTF-8 characters ("DejaVu Sans Mono" is one of them) +because Scintilla curses makes use of UTF-8 characters when drawing wrap +symbols, some marker symbols, and call tip arrows. + +Note: `setlocale(LC_CTYPE, "")` must be called before initializing curses in +order to display UTF-8 characters properly in ncursesw. + +## Curses Compatibility + +Scintilla curses lacks some Scintilla features due to the terminal's +constraints: + +* Any settings with alpha values are not supported. +* Autocompletion lists cannot show images (pixmap surfaces are not supported). + Instead, they show the first character in the string passed to + [`SCI_REGISTERIMAGE`][]. +* Buffered and two-phase drawing is not supported. +* Caret settings like period, line style, and width are not supported + (terminals use block carets with their own period definitions). +* Code pages other than UTF-8 have not been tested and it is possible some + curses implementations do not support them. +* Drag and drop is not supported. +* Edge lines are not displayed properly (the line is drawn over by text lines). +* Extra ascent and descent for lines is not supported. +* Fold lines cannot be drawn above or below lines. +* Hotspot underlines are not drawn on mouse hover (`surface->FillRectangle()` is + not supported). +* Indicators other than `INDIC_ROUNDBOX` and `INDIC_STRAIGHTBOX` are not drawn + (`surface->LineTo()` and `surface->FillRectangle()` are not supported for + drawing indicator shapes and pixmap surfaces are not supported). Translucent + drawing and rounded corners are not supported either. +* Some complex marker types are not drawn properly or at all (pixmap surfaces + are not supported and `surface->LineTo()` is not supported for drawing some + marker shapes). +* Mouse cursor types are not supported. +* Up to 16 colors are supported, regardless of how many colors the terminal + supports. They are (in "0xBBGGRR" format): black (`0x000000`), red + (`0x000080`), green (`0x008000`), yellow (`0x008080`), blue (`0x800000`), + magenta (`0x800080`), cyan (`0x808000`), white (`0xC0C0C0`), light black + (`0x404040`), light red (`0x0000FF`), light green (`0x00FF00`), light yellow + (`0x00FFFF`), light blue (`0xFF0000`), light magenta (`0xFF00FF`), light cyan + (`0xFFFF00`), and light white (`0xFFFFFF`). Even if your terminal uses a + different color map, you must use these color values with Scintilla; + unrecognized colors are set to white by default. For some terminals, you may + need to set a lexer style's `bold` attribute in order to use the light color + variant. +* Some styles settings like font name, font size, and italic do not display + properly (terminals use one only font, size and variant). +* X selections (primary and secondary) are not integrated into the clipboard. +* Zoom is not supported (terminal font size is fixed). + +[`SCI_REGISTERIMAGE`]: http://scintilla.org/ScintillaDoc.html#SCI_REGISTERIMAGE + +## `jinx` + +`jinx` is an example of using Scintilla with curses. You can build it by going +into `jinx/` and running `make`. |