More python unicode object support in ycm_core
This commit is contained in:
parent
3f0b719846
commit
a7c609efd7
@ -27,6 +27,7 @@
|
|||||||
using boost::algorithm::any_of;
|
using boost::algorithm::any_of;
|
||||||
using boost::algorithm::is_upper;
|
using boost::algorithm::is_upper;
|
||||||
using boost::python::len;
|
using boost::python::len;
|
||||||
|
using boost::python::str;
|
||||||
using boost::python::extract;
|
using boost::python::extract;
|
||||||
using boost::python::object;
|
using boost::python::object;
|
||||||
typedef boost::python::list pylist;
|
typedef boost::python::list pylist;
|
||||||
@ -35,6 +36,13 @@ namespace YouCompleteMe {
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
std::string GetUtf8String( const boost::python::object &string_or_unicode ) {
|
||||||
|
extract< std::string > to_string( string_or_unicode );
|
||||||
|
if ( to_string.check() )
|
||||||
|
return to_string();
|
||||||
|
return extract< std::string >( str( string_or_unicode ).encode( "utf8" ) );
|
||||||
|
}
|
||||||
|
|
||||||
std::vector< const Candidate * > CandidatesFromObjectList(
|
std::vector< const Candidate * > CandidatesFromObjectList(
|
||||||
const pylist &candidates,
|
const pylist &candidates,
|
||||||
const std::string &candidate_property ) {
|
const std::string &candidate_property ) {
|
||||||
@ -44,10 +52,10 @@ std::vector< const Candidate * > CandidatesFromObjectList(
|
|||||||
|
|
||||||
for ( int i = 0; i < num_candidates; ++i ) {
|
for ( int i = 0; i < num_candidates; ++i ) {
|
||||||
if ( candidate_property.empty() ) {
|
if ( candidate_property.empty() ) {
|
||||||
candidate_strings.push_back( extract< std::string >( candidates[ i ] ) );
|
candidate_strings.push_back( GetUtf8String( candidates[ i ] ) );
|
||||||
} else {
|
} else {
|
||||||
object holder = extract< object >( candidates[ i ] );
|
object holder = extract< object >( candidates[ i ] );
|
||||||
candidate_strings.push_back( extract< std::string >(
|
candidate_strings.push_back( GetUtf8String(
|
||||||
holder[ candidate_property.c_str() ] ) );
|
holder[ candidate_property.c_str() ] ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,7 @@ class Completer( object ):
|
|||||||
self.completions_cache.filtered_completions = (
|
self.completions_cache.filtered_completions = (
|
||||||
self.FilterAndSortCandidates(
|
self.FilterAndSortCandidates(
|
||||||
self.completions_cache.raw_completions,
|
self.completions_cache.raw_completions,
|
||||||
ToUtf8IfNeeded( request_data[ 'query' ] ) ) )
|
request_data[ 'query' ] ) )
|
||||||
else:
|
else:
|
||||||
self.completions_cache = None
|
self.completions_cache = None
|
||||||
self.CandidatesForQueryAsyncInner( request_data )
|
self.CandidatesForQueryAsyncInner( request_data )
|
||||||
@ -216,7 +216,7 @@ class Completer( object ):
|
|||||||
matches = ycm_core.FilterAndSortCandidates(
|
matches = ycm_core.FilterAndSortCandidates(
|
||||||
candidates,
|
candidates,
|
||||||
sort_property,
|
sort_property,
|
||||||
query )
|
ToUtf8IfNeeded( query ) )
|
||||||
|
|
||||||
return matches
|
return matches
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user