[LyX features/cleanup/updateMacros3] Redo the getMacroDefinitions routine.
Richard Kimberly Heck
rikiheck at lyx.org
Thu Nov 12 03:14:21 UTC 2020
The branch, cleanup/updateMacros3, has been updated.
- Log -----------------------------------------------------------------
commit d51aa94b67bdda9ddaaf43020598b78e39815906
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date: Wed Nov 11 22:47:57 2020 -0500
Redo the getMacroDefinitions routine.
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 1901264..859f9ce 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -215,14 +215,15 @@ public:
typedef map<DocIterator, MacroDefinition> MacroDefList;
typedef map<docstring, MacroDefList> MacroMap;
- pair<bool, MacroDefList const &> getMacroDefinitions(docstring const & name) const
+ bool haveMacro(docstring const & name) const
+ { return macro_map_.count(name) != 0; }
+
+ // Will assert if there is no such macro, so call haveMacro first!
+ MacroDefList const & getMacroDefinitions(docstring const & name) const
{
MacroMap::const_iterator it = macro_map_.find(name);
- if (it == macro_map_.end()) {
- static MacroDefList dummy;
- return {false, dummy};
- }
- return {true, it->second};
+ LBUFERR(it != macro_map_.end());
+ return it->second;
}
set<docstring> getMacroNames() const
@@ -3634,10 +3635,9 @@ MacroData const * Buffer::Impl::getBufferMacro(docstring const & name,
MacroData const * bestData = nullptr;
// find macro definitions for name
- pair<bool, MacroTable::MacroDefList const &> mdl_pair =
- macro_table.getMacroDefinitions(name);
- if (mdl_pair.first) {
- MacroTable::MacroDefList const & mdl = mdl_pair.second;
+ if (macro_table.haveMacro(name)) {
+ MacroTable::MacroDefList const & mdl =
+ macro_table.getMacroDefinitions(name);
// find last definition in front of pos
MacroTable::MacroDefList::const_iterator it =
greatest_below(mdl, pos);
@@ -3748,8 +3748,10 @@ MacroData const * Buffer::getMacro(docstring const & name,
{
// look where the child buffer is included first
Impl::BufferPositionMap::iterator it = d->children_positions.find(&child);
- if (it == d->children_positions.end())
+ if (it == d->children_positions.end()) {
+ LYXERR0("Querying parent for macro when we are not a child!");
return nullptr;
+ }
// check for macros at the inclusion position
return getMacro(name, it->second, global);
-----------------------------------------------------------------------
Summary of changes:
src/Buffer.cpp | 24 +++++++++++++-----------
1 files changed, 13 insertions(+), 11 deletions(-)
hooks/post-receive
--
Repository for new features
More information about the lyx-cvs
mailing list