//TODO this condition looks ugly
if(i == c ||
*(i - 1) == ' ' ||
- ((i + 1 > c) && (*(i - 1) == '_' || *(i - 1) == '*') && (*(i - 2) == ' ' || (i - 1) == c)) ||
+ ((*(i - 1) == '_' || *(i - 1) == '*') && ((i - 1) == c || *(i - 2) == ' ')) ||
*i == '\\') {
switch(*i) {