From 38f00e3e8a50e1690dcb78cf1eca8b6befb7173b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sat, 18 Jul 2015 10:35:32 +0200 Subject: vis: improve insertion of verbatim characters via CTRL-V in insert mode Recognized formats are: CTRL-V nnn decimal value nnn CTRL-V onnn or CTRL-V Onnn octal value nnn CTRL-V xnn or CTRL-V Xnn hex value nn CTRL-V unnnn Unicode codepoint nnnn CTRL-V Unnnnnnnn Unicode codepoint nnnnnnnn Leading zeros can be omitted, any illegal character for the given format will be ignored and terminates the numerical code. --- libutf.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 libutf.h (limited to 'libutf.h') diff --git a/libutf.h b/libutf.h new file mode 100644 index 0000000..4d3f91c --- /dev/null +++ b/libutf.h @@ -0,0 +1,34 @@ +#ifndef LIBUTF_H +#define LIBUTF_H + +/* libutf8 © 2012-2015 Connor Lane Smith */ +#include +#include + +#if __STDC_VERSION__ >= 201112L +#include +#ifdef __STDC_UTF_32__ +#define RUNE_C INT32_C +typedef char32_t Rune; +#endif +#endif + +#ifndef RUNE_C +#ifdef INT32_C +#define RUNE_C INT32_C +typedef uint_least32_t Rune; +#else +#define RUNE_C(x) x##L +typedef unsigned long Rune; +#endif +#endif + +#define UTFmax 6 /* maximum bytes per rune */ + +#define Runeself 0x80 /* rune and utf are equal (<) */ +#define Runemax RUNE_C(0x10FFFF) /* maximum rune value */ + +int runelen(Rune r); +int runetochar(char *s, const Rune *p); + +#endif -- cgit v1.2.3