Skip to content

Commit

Permalink
limit assembly highlighters
Browse files Browse the repository at this point in the history
KSyntaxHighligthing::Definition provides section() which can be used to
filter out all non assembly highlighters, since they are not usefull and
only cluttering the combobox.

closes: #521
  • Loading branch information
lievenhey authored and milianw committed Dec 5, 2023
1 parent 241948f commit d94a50d
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions src/resultsdisassemblypage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -433,16 +433,29 @@ ResultsDisassemblyPage::ResultsDisassemblyPage(CostContextMenu* costContextMenu,
#if KFSyntaxHighlighting_FOUND
QStringList schemes;

const auto definitions = m_repository->definitions();
auto definitions = m_repository->definitions();
schemes.reserve(definitions.size());

std::transform(definitions.begin(), definitions.end(), std::back_inserter(schemes),
[](const auto& definition) { return definition.name(); });

auto definitionModel = new QStringListModel(this);
definitionModel->setStringList(schemes);
auto sourceCodeDefinitionModel = new QStringListModel(this);
sourceCodeDefinitionModel->setStringList(schemes);

auto connectCompletion = [definitionModel, schemes, this](QComboBox* box, auto* model) {
QStringList assemblySchemes = {QStringLiteral("None")};

std::transform(definitions.begin(),
std::partition(definitions.begin(), definitions.end(),
[](const KSyntaxHighlighting::Definition& definition) {
return definition.section() == QStringLiteral("Assembler");
}),
std::back_inserter(assemblySchemes),
[](const KSyntaxHighlighting::Definition& definition) { return definition.name(); });

auto assemblySchemesModel = new QStringListModel(this);
assemblySchemesModel->setStringList(assemblySchemes);

auto connectCompletion = [schemes, this](QStringListModel* definitionModel, QComboBox* box, auto* model) {
auto completer = new QCompleter(this);
completer->setModel(definitionModel);
completer->setCaseSensitivity(Qt::CaseInsensitive);
Expand All @@ -459,8 +472,8 @@ ResultsDisassemblyPage::ResultsDisassemblyPage(CostContextMenu* costContextMenu,
[box](const QString& definition) { box->setCurrentText(definition); });
};

connectCompletion(ui->sourceCodeComboBox, m_sourceCodeModel);
connectCompletion(ui->assemblyComboBox, m_disassemblyModel);
connectCompletion(sourceCodeDefinitionModel, ui->sourceCodeComboBox, m_sourceCodeModel);
connectCompletion(assemblySchemesModel, ui->assemblyComboBox, m_disassemblyModel);
#else
ui->customSourceCodeHighlighting->setVisible(false);
ui->customAssemblyHighlighting->setVisible(false);
Expand Down

0 comments on commit d94a50d

Please sign in to comment.