Multibyte Encoding Support in Nvi
Nvi is a BSD-licensed re-implementation of the original vi editor, and it is frozen at version 1.79. This project creates a nvi fork with sufficient multibyte encoding support.
Requirements
We consider the following multibyte encodings:
- Single byte character sets, either ASCII (7-bit) or 8-bit extended encodings, e.g., ISO8859-1, KOI8-R;
- Non-Unicode two bytes character sets, mainly CJK families, e.g., GBK, SJIS;
- Unicode families. UTF-8 and UTF-16.
Some other requirements:
- The encoding settings can be changed through ex commands at the runtime. By default, the input encoding obeys the locale.
- It features some form of file encoding detection.
- It behaviors in the original nvi-1.79 (the version presents in the FreeBSD base system and mostly confirms with the POSIX standard) way.
- The whole software is clearly BSD licensed.
Progress
- Merge with nvi-devel-1.81.6, gain iconv/ncursesw related code, broken DB1 code, 'fileencoding' and 'inputencoding' options, :vsplit. Nvi-1.79's screen structure, file/DB structure, event model, and editing/search/subst behaviors are kept.
Fix DB1 code with iconv support. old file structure new file structure
- Drop Perl, Tcl, gtags support.
- Merge/update manpage, catalog.
- File encoding detection (based on file(1)) and RFC docs.
- Support UTF-16 with hacks on DB/iconv, and the file write procedure.
- Restore Xterm title with xprop ('windowname' option).
- Port nvi-1.81.6's modified regex to support wide char.
- make buildworld WARNS=1 clear.
TODO
- Wait and see if we can use TRE's wide regex support in FreeBSD libc.
- Display wide characters in path names.
Links
Homepage: https://github.com/lichray/nvi2 Testing: http://lists.freebsd.org/pipermail/freebsd-hackers/2011-August/036096.html