Use wide character function for categorizing codepoints
Previously we used the is... rather than isw... These functions were not supporting non ascii characters correctly
This commit is contained in:
parent
1e6fbf548b
commit
aadbd390c7
|
@ -404,7 +404,7 @@ void expand_unprintable(const Context& context, DisplayBuffer& display_buffer)
|
|||
end = buffer.iterator_at(atom_it->end()); it != end; ++it)
|
||||
{
|
||||
Codepoint cp = *it;
|
||||
if (cp != '\n' and iscntrl((int)cp))
|
||||
if (cp != '\n' and not iswprint(cp))
|
||||
{
|
||||
std::ostringstream oss;
|
||||
oss << "U+" << std::hex << cp;
|
||||
|
|
|
@ -375,7 +375,7 @@ void view_commands(Context& context, int param)
|
|||
void replace_with_char(Context& context, int)
|
||||
{
|
||||
on_next_key_with_autoinfo(context, [](Key key, Context& context) {
|
||||
if (not isprint(key.key))
|
||||
if (not iswprint(key.key))
|
||||
return;
|
||||
ScopedEdition edition(context);
|
||||
Buffer& buffer = context.buffer();
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <cstdint>
|
||||
#include <ctype.h>
|
||||
#include <wctype.h>
|
||||
|
||||
namespace Kakoune
|
||||
{
|
||||
|
@ -29,13 +30,13 @@ enum WordType { Word, WORD };
|
|||
template<WordType word_type = Word>
|
||||
inline bool is_word(Codepoint c)
|
||||
{
|
||||
return c == '_' or isalnum(c);
|
||||
return c == '_' or iswalnum(c);
|
||||
}
|
||||
|
||||
template<>
|
||||
inline bool is_word<WORD>(Codepoint c)
|
||||
{
|
||||
return !is_blank(c) and !is_eol(c);
|
||||
return not is_blank(c) and not is_eol(c);
|
||||
}
|
||||
|
||||
inline bool is_punctuation(Codepoint c)
|
||||
|
|
Loading…
Reference in New Issue
Block a user