forked from enlightenment/terminology
termiolink: isspace can't be used on codepoint larger than uchar
This commit is contained in:
parent
115cd1ebb4
commit
ea2b80e5a2
|
@ -8,6 +8,78 @@
|
||||||
#include "utf8.h"
|
#include "utf8.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_isspace_unicode(const int codepoint)
|
||||||
|
{
|
||||||
|
switch (codepoint)
|
||||||
|
{
|
||||||
|
case 9: // character tabulation
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 10: // line feed
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 11: // line tabulation
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 12: // form feed
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 13: // carriage return
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 32: // space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 133: // next line
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 160: // no-break space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 5760: // ogham space mark
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 6158: // mongolian vowel separator
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8192: // en quad
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8193: // em quad
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8194: // en space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8195: // em space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8196: // three-per-em space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8197: // four-per-em space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8198: // six-per-em space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8199: // figure space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8200: // puncturation space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8201: // thin space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8202: // hair space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8203: // zero width space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8204: // zero width non-joiner
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8205: // zero width joiner
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8232: // line separator
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8233: // paragraph separator
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8239: // narrow no-break space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8287: // medium mathematical space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 8288: // word joiner
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 12288: // ideographic space
|
||||||
|
EINA_FALLTHROUGH;
|
||||||
|
case 65279: // zero width non-breaking space
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
_cwd_path_get(const Evas_Object *obj, const char *relpath)
|
_cwd_path_get(const Evas_Object *obj, const char *relpath)
|
||||||
{
|
{
|
||||||
|
@ -320,7 +392,7 @@ termio_link_find(const Evas_Object *obj, int cx, int cy,
|
||||||
|
|
||||||
res = _txt_at(ty, &x1, &y1, txt, &txtlen, &codepoint);
|
res = _txt_at(ty, &x1, &y1, txt, &txtlen, &codepoint);
|
||||||
if ((res != 0) || (txtlen == 0)) goto end;
|
if ((res != 0) || (txtlen == 0)) goto end;
|
||||||
if (isspace(codepoint))
|
if (_isspace_unicode(codepoint))
|
||||||
goto end;
|
goto end;
|
||||||
res = ty_sb_add(&sb, txt, txtlen);
|
res = ty_sb_add(&sb, txt, txtlen);
|
||||||
if (res < 0) goto end;
|
if (res < 0) goto end;
|
||||||
|
@ -338,7 +410,7 @@ termio_link_find(const Evas_Object *obj, int cx, int cy,
|
||||||
}
|
}
|
||||||
res = ty_sb_prepend(&sb, txt, txtlen);
|
res = ty_sb_prepend(&sb, txt, txtlen);
|
||||||
if (res < 0) goto end;
|
if (res < 0) goto end;
|
||||||
if (isspace(codepoint))
|
if (_isspace_unicode(codepoint))
|
||||||
{
|
{
|
||||||
int old_txtlen = txtlen;
|
int old_txtlen = txtlen;
|
||||||
res = _txt_prev_at(ty, &new_x1, &new_y1, txt, &txtlen, &codepoint);
|
res = _txt_prev_at(ty, &new_x1, &new_y1, txt, &txtlen, &codepoint);
|
||||||
|
@ -388,7 +460,7 @@ termio_link_find(const Evas_Object *obj, int cx, int cy,
|
||||||
{
|
{
|
||||||
if (was_protocol)
|
if (was_protocol)
|
||||||
{
|
{
|
||||||
if (!isspace(codepoint))
|
if (!_isspace_unicode(codepoint))
|
||||||
endmatch1 = endmatch2 = codepoint;
|
endmatch1 = endmatch2 = codepoint;
|
||||||
ty_sb_lskip(&sb, txtlen);
|
ty_sb_lskip(&sb, txtlen);
|
||||||
goback = EINA_FALSE;
|
goback = EINA_FALSE;
|
||||||
|
@ -429,7 +501,7 @@ termio_link_find(const Evas_Object *obj, int cx, int cy,
|
||||||
escaped = EINA_FALSE;
|
escaped = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isspace(codepoint) || (codepoint == endmatch1)
|
if (_isspace_unicode(codepoint) || (codepoint == endmatch1)
|
||||||
|| (codepoint == endmatch2))
|
|| (codepoint == endmatch2))
|
||||||
{
|
{
|
||||||
goforward = EINA_FALSE;
|
goforward = EINA_FALSE;
|
||||||
|
|
Loading…
Reference in New Issue