Fix crash on LSP reload.

Fix document symbols not being sorted (some LSPs do not sort the symbols for some reason).
Update efsw.
This commit is contained in:
Martín Lucas Golini
2024-09-03 19:17:08 -03:00
parent bdc94fa587
commit 060e4f4450
3 changed files with 16 additions and 2 deletions

View File

@@ -428,6 +428,16 @@ struct LSPSymbolInformationTmp {
}
};
static void sortRecursive( std::list<LSPSymbolInformationTmp>& symbols ) {
symbols.sort( []( const LSPSymbolInformationTmp& left, const LSPSymbolInformationTmp& right ) {
return left.range < right.range;
} );
for ( auto& symbol : symbols )
if ( !symbol.children.empty() )
sortRecursive( symbol.children );
}
static LSPSymbolInformationList parseDocumentSymbols( const json& result, bool isSilent ) {
// TODO: Optimize this
Clock clock;
@@ -482,6 +492,8 @@ static LSPSymbolInformationList parseDocumentSymbols( const json& result, bool i
for ( const auto& info : symInfos )
parseSymbol( info, nullptr );
sortRecursive( ret );
LSPSymbolInformationList rret;
for ( const auto& r : ret )
rret.push_back( LSPSymbolInformationTmp::fromTmp( r ) );