ecode: Respect project global config in global search.

This commit is contained in:
Martín Lucas Golini
2023-05-15 17:49:29 -03:00
parent 168a7babaa
commit d4091a2adf
4 changed files with 36 additions and 33 deletions

View File

@@ -56,7 +56,6 @@ TokenizedLine SyntaxHighlighter::tokenizeLine( const size_t& line, const Uint64&
while ( textSize > 0 ) {
size_t chunkSize =
textSize > mMaxTokenizationLength ? mMaxTokenizationLength : textSize;
std::string substr = ln.substr( pos, chunkSize );
SyntaxTokenPosition token{ "normal", pos, chunkSize };
token.len = ln.size();
tokenizedLine.tokens.emplace_back( token );
@@ -86,7 +85,7 @@ void SyntaxHighlighter::moveHighlight( const Int64& fromLine, const Int64& numLi
for ( Int64 i = linesCount - 1; i >= fromLine; --i ) {
auto lineIt = mLines.find( i - numLines );
if ( lineIt != mLines.end() ) {
auto& line = lineIt->second;
const auto& line = lineIt->second;
if ( line.hash == mDoc->line( i ).getHash() ) {
auto nl = mLines.extract( lineIt );
nl.key() = i;

View File

@@ -418,6 +418,7 @@ void GlobalSearchController::updateGlobalSearchBarResults(
const std::string& search, std::shared_ptr<ProjectSearch::ResultModel> model,
bool searchReplace, bool isEscaped ) {
updateGlobalSearchBar();
mGlobalSearchTree->hAsCPP = mApp->getProjectDocConfig().hAsCPP;
mGlobalSearchTree->setSearchStr( search );
mGlobalSearchTree->setModel( model );
if ( mGlobalSearchTree->getModel()->rowCount() < 50 )

View File

@@ -1,5 +1,5 @@
#include "uitreeviewglobalsearch.hpp"
#include "projectsearch.hpp"
#include "uitreeviewglobalsearch.hpp"
#include <eepp/graphics/primitives.hpp>
#include <eepp/ui/doc/syntaxdefinitionmanager.hpp>
#include <eepp/ui/doc/syntaxtokenizer.hpp>
@@ -9,6 +9,26 @@
namespace ecode {
static Float getTextWidth( Float glyphWidth, Uint32 tabWidth, const String& line ) {
size_t len = line.length();
Float x = 0;
for ( size_t i = 0; i < len; i++ )
x += ( line[i] == '\t' ) ? glyphWidth * tabWidth : glyphWidth;
return x;
}
static Float getXOffsetCol( Float glyphWidth, Uint32 tabWidth, const String& line, Int64 col ) {
Float x = 0;
for ( auto i = 0; i < col; i++ ) {
if ( line[i] == '\t' ) {
x += glyphWidth * tabWidth;
} else if ( line[i] != '\n' && line[i] != '\r' ) {
x += glyphWidth;
}
}
return x;
}
UITreeViewGlobalSearch::UITreeViewGlobalSearch( const SyntaxColorScheme& colorScheme,
bool searchReplace ) :
UITreeView(),
@@ -19,7 +39,7 @@ UITreeViewGlobalSearch::UITreeViewGlobalSearch( const SyntaxColorScheme& colorSc
UIWidget* UITreeViewGlobalSearch::createCell( UIWidget* rowWidget, const ModelIndex& index ) {
UITableCell* widget = index.column() == (Int64)getModel()->treeColumn()
? UITreeViewCellGlobalSearch::New( mSearchReplace )
? UITreeViewCellGlobalSearch::New( mSearchReplace, hAsCPP )
: UITableCell::New();
return setupCell( widget, rowWidget, index );
}
@@ -108,8 +128,8 @@ ProjectSearch::ResultData* UITreeViewCellGlobalSearch::getResultDataPtr() {
#define CELL_GLOBAL_SEARCH_PADDING ( 12 )
UITreeViewCellGlobalSearch::UITreeViewCellGlobalSearch( bool selectionEnabled ) :
UITreeViewCell( selectionEnabled ? getCheckBoxFn() : nullptr ) {}
UITreeViewCellGlobalSearch::UITreeViewCellGlobalSearch( bool selectionEnabled, bool hAsCPP ) :
UITreeViewCell( selectionEnabled ? getCheckBoxFn() : nullptr ), mHAsCpp( hAsCPP ) {}
UIPushButton* UITreeViewCellGlobalSearch::setText( const String& text ) {
auto* result = getResultPtr();
@@ -133,7 +153,8 @@ UIPushButton* UITreeViewCellGlobalSearch::updateText( const std::string& text )
ProjectSearch::ResultData* res =
(ProjectSearch::ResultData*)getCurIndex().parent().internalData();
auto styleDef = SyntaxDefinitionManager::instance()->getByExtension( res->file );
const auto& styleDef =
SyntaxDefinitionManager::instance()->getByExtension( res->file, mHAsCpp );
Uint32 from = text.find_first_not_of( ' ' );
Uint32 to = from;
@@ -159,7 +180,7 @@ UIPushButton* UITreeViewCellGlobalSearch::updateText( const std::string& text )
SyntaxTokenizer::tokenize( styleDef, text, SYNTAX_TOKENIZER_STATE_NONE, to ).first;
size_t start = to;
for ( auto& token : tokens ) {
for ( const auto& token : tokens ) {
mTextBox->setFontFillColor( pp->getColorScheme().getSyntaxStyle( token.type ).color,
start, start + token.len );
start += token.len;
@@ -168,26 +189,6 @@ UIPushButton* UITreeViewCellGlobalSearch::updateText( const std::string& text )
return this;
}
static Float getTextWidth( Float glyphWidth, Uint32 tabWidth, const String& line ) {
size_t len = line.length();
Float x = 0;
for ( size_t i = 0; i < len; i++ )
x += ( line[i] == '\t' ) ? glyphWidth * tabWidth : glyphWidth;
return x;
}
static Float getXOffsetCol( Float glyphWidth, Uint32 tabWidth, const String& line, Int64 col ) {
Float x = 0;
for ( auto i = 0; i < col; i++ ) {
if ( line[i] == '\t' ) {
x += glyphWidth * tabWidth;
} else if ( line[i] != '\n' && line[i] != '\r' ) {
x += glyphWidth;
}
}
return x;
}
void UITreeViewCellGlobalSearch::draw() {
UITreeViewCell::draw();
if ( getCurIndex().internalId() != -1 && mSearchStrPos.first != std::string::npos &&

View File

@@ -12,16 +12,14 @@ namespace ecode {
class UITreeViewCellGlobalSearch : public UITreeViewCell {
public:
static UITreeViewCellGlobalSearch* New( bool selectionEnabled ) {
return eeNew( UITreeViewCellGlobalSearch, ( selectionEnabled ) );
static UITreeViewCellGlobalSearch* New( bool selectionEnabled, bool hAsCPP ) {
return eeNew( UITreeViewCellGlobalSearch, ( selectionEnabled, hAsCPP ) );
}
UITreeViewCellGlobalSearch( bool selectionEnabled );
explicit UITreeViewCellGlobalSearch( bool selectionEnabled, bool hAsCPP );
UIPushButton* setText( const String& text );
UIPushButton* updateText( const std::string& text );
virtual void draw();
virtual void updateCell( Model* model );
@@ -31,11 +29,14 @@ class UITreeViewCellGlobalSearch : public UITreeViewCell {
protected:
std::pair<size_t, size_t> mSearchStrPos;
String mResultStr;
bool mHAsCpp{ false };
std::function<UITextView*( UIPushButton* )> getCheckBoxFn();
void* getDataPtr( const ModelIndex& modelIndex );
UIPushButton* updateText( const std::string& text );
ProjectSearch::ResultData::Result* getResultPtr();
ProjectSearch::ResultData* getResultDataPtr();
@@ -61,6 +62,7 @@ class UITreeViewGlobalSearch : public UITreeView {
const String& getSearchStr() const { return mSearchStr; }
bool hAsCPP = false;
protected:
Color mLineNumColor;
SyntaxColorScheme mColorScheme;