From 5af8b2bbac5a91ad2052b7e1ec9a08b292ffde0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Fri, 7 Jun 2024 02:10:53 -0300 Subject: [PATCH] Some fixes. --- src/eepp/ui/doc/documentview.cpp | 4 +-- src/eepp/ui/doc/textdocument.cpp | 4 +++ .../autocomplete/autocompleteplugin.cpp | 34 +++++++++++-------- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/eepp/ui/doc/documentview.cpp b/src/eepp/ui/doc/documentview.cpp index c992259a7..0612ce338 100644 --- a/src/eepp/ui/doc/documentview.cpp +++ b/src/eepp/ui/doc/documentview.cpp @@ -101,8 +101,6 @@ DocumentView::LineWrapInfo DocumentView::computeLineBreaks( const String::View& if ( curChar == '\t' ) w = hspace * tabWidth; - else if ( ( curChar ) == '\r' ) - w = 0; if ( !isMonospace && curChar != '\r' ) { w += fontStyle.Font->getKerning( prevChar, curChar, fontStyle.CharacterSize, bold, @@ -147,7 +145,7 @@ DocumentView::LineWrapInfo DocumentView::computeLineBreaks( const TextDocument& bool keepIndentation, Uint32 tabWidth, Float whiteSpaceWidth ) { const auto& text = doc.line( line ).getText(); - return computeLineBreaks( text.substr( 0, text.size() - 1 ), fontStyle, maxWidth, mode, + return computeLineBreaks( text.view().substr( 0, text.size() - 1 ), fontStyle, maxWidth, mode, keepIndentation, tabWidth, whiteSpaceWidth ); } diff --git a/src/eepp/ui/doc/textdocument.cpp b/src/eepp/ui/doc/textdocument.cpp index 2fa33e68f..ce46575a3 100644 --- a/src/eepp/ui/doc/textdocument.cpp +++ b/src/eepp/ui/doc/textdocument.cpp @@ -273,6 +273,10 @@ TextDocument::LoadStatus TextDocument::loadFromStream( IOStream& file, std::stri std::search( lineBuffer.begin(), lineBuffer.end(), BINARY_STR.data(), BINARY_STR.data() + BINARY_STR.size() ) != lineBuffer.end(); + + if ( mMightBeBinary && mEncoding == TextFormat::Encoding::UTF16BE ) { + mEncoding = TextFormat::Encoding::UTF8; + } } if ( mLineEnding == TextFormat::LineEnding::CRLF && lineBufferSize > 1 && diff --git a/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp index 1e4ca761f..6c42bcc7a 100644 --- a/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp +++ b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp @@ -109,13 +109,15 @@ AutoCompletePlugin::~AutoCompletePlugin() { mManager->unsubscribeMessages( this ); unsubscribeFileSystemListener(); - Lock l( mDocMutex ); - Lock l2( mLangSymbolsMutex ); - Lock l3( mSuggestionsMutex ); - for ( const auto& editor : mEditors ) { - for ( auto listener : editor.second ) - editor.first->removeEventListener( listener ); - editor.first->unregisterPlugin( this ); + { + Lock l( mDocMutex ); + Lock l2( mLangSymbolsMutex ); + Lock l3( mSuggestionsMutex ); + for ( const auto& editor : mEditors ) { + for ( auto listener : editor.second ) + editor.first->removeEventListener( listener ); + editor.first->unregisterPlugin( this ); + } } bool isUpdating = false; @@ -484,10 +486,16 @@ bool AutoCompletePlugin::onTextInput( UICodeEditor* editor, const TextInputEvent } void AutoCompletePlugin::updateDocCache( TextDocument* doc ) { - { - Lock lu( mDocsUpdatingMutex ); - mDocsUpdating[doc] = true; - } + ScopedOp op( + [this, doc] { + Lock lu( mDocsUpdatingMutex ); + mDocsUpdating[doc] = true; + }, + [this, doc] { + Lock lu( mDocsUpdatingMutex ); + mDocsUpdating[doc] = false; + } ); + Clock clock; std::unordered_map::iterator docCache; { @@ -523,10 +531,6 @@ void AutoCompletePlugin::updateDocCache( TextDocument* doc ) { } Log::debug( "Dictionary for %s updated in: %.2fms", doc->getFilename().c_str(), clock.getElapsedTime().asMilliseconds() ); - { - Lock lu( mDocsUpdatingMutex ); - mDocsUpdating[doc] = false; - } } void AutoCompletePlugin::updateLangCache( const std::string& langName ) {