Fix support for non ascii chars in completion_extra_word_char
This commit is contained in:
parent
2f7313ad59
commit
73bb260e6c
|
@ -10,13 +10,13 @@ namespace Kakoune
|
||||||
|
|
||||||
using WordList = Vector<StringView>;
|
using WordList = Vector<StringView>;
|
||||||
|
|
||||||
static WordList get_words(StringView content, StringView extra_word_chars)
|
static WordList get_words(StringView content, ConstArrayView<Codepoint> extra_word_chars)
|
||||||
{
|
{
|
||||||
WordList res;
|
WordList res;
|
||||||
using Utf8It = utf8::iterator<const char*>;
|
using Utf8It = utf8::iterator<const char*>;
|
||||||
const char* word_start = content.begin();
|
const char* word_start = content.begin();
|
||||||
bool in_word = false;
|
bool in_word = false;
|
||||||
for (Utf8It it{word_start, content}, end{content.end(), content}; it != end; ++it)
|
for (Utf8It it{word_start, content}; it != content.end(); ++it)
|
||||||
{
|
{
|
||||||
Codepoint c = *it;
|
Codepoint c = *it;
|
||||||
const bool word = is_word(c) or contains(extra_word_chars, c);
|
const bool word = is_word(c) or contains(extra_word_chars, c);
|
||||||
|
@ -36,9 +36,13 @@ static WordList get_words(StringView content, StringView extra_word_chars)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static StringView get_extra_word_chars(const Buffer& buffer)
|
static Vector<Codepoint> get_extra_word_chars(const Buffer& buffer)
|
||||||
{
|
{
|
||||||
return buffer.options()["completion_extra_word_char"].get<String>();
|
auto& str = buffer.options()["completion_extra_word_char"].get<String>();
|
||||||
|
Vector<Codepoint> res;
|
||||||
|
for (utf8::iterator<const char*> it{str.begin(), str}; it != str.end(); ++it)
|
||||||
|
res.push_back(*it);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WordDB::add_words(StringView line)
|
void WordDB::add_words(StringView line)
|
||||||
|
@ -77,9 +81,9 @@ WordDB::WordDB(const Buffer& buffer)
|
||||||
|
|
||||||
WordDB::WordDB(WordDB&& other)
|
WordDB::WordDB(WordDB&& other)
|
||||||
: m_buffer{std::move(other.m_buffer)},
|
: m_buffer{std::move(other.m_buffer)},
|
||||||
m_lines{std::move(other.m_lines)},
|
m_timestamp{other.m_timestamp},
|
||||||
m_words{std::move(other.m_words)},
|
m_words{std::move(other.m_words)},
|
||||||
m_timestamp{other.m_timestamp}
|
m_lines{std::move(other.m_lines)}
|
||||||
{
|
{
|
||||||
kak_assert(m_buffer);
|
kak_assert(m_buffer);
|
||||||
m_buffer->options().unregister_watcher(other);
|
m_buffer->options().unregister_watcher(other);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user