commit 24d011117fb9646e5817b0e703aef781715a6352
Author: Georg Baum <[email protected]>
Date: Tue Mar 10 20:53:56 2015 +0100
Remove unsupported macros from autocompletion
We have some math macros that exist only because LyX can display them
easily,
but which require user preamble code. These commands should not appear in
autocompletion, they are only there to make the formulas of users who
actually
need thgese symbols and know what to put into the preamble more beautiful.
diff --git a/lib/symbols b/lib/symbols
index d4a9f65..1361c9b 100644
--- a/lib/symbols
+++ b/lib/symbols
@@ -49,7 +49,7 @@ underrightarrow decoration none amsmath
#Do not load automatically, it redefines some other symbols, and we don't
#have a possibility to turn automatic loading off like for ams
#undertilde decoration none accents
-undertilde decoration none
+undertilde decoration none hiddensymbol
utilde decoration none undertilde
vec decoration none
widehat decoration none
@@ -60,7 +60,7 @@ dots dots none
#Do not load automatically, it redefines some other symbols, and we don't
#have a possibility to turn automatic loading off like for ams
#adots dots none yhmath
-adots dots none
+adots dots none hiddensymbol
cdots dots none
ddots dots none
dotsb dots none amsmath
@@ -93,12 +93,12 @@ Biggr big none
# packages. No 'm' versions!
# See lucidabr.dtx for a possible implementation if you want to use these
# with other fonts.
-biggg big none
-bigggl big none
-bigggr big none
-Biggg big none
-Bigggl big none
-Bigggr big none
+biggg big none hiddensymbol
+bigggl big none hiddensymbol
+bigggr big none hiddensymbol
+Biggg big none hiddensymbol
+Bigggl big none hiddensymbol
+Bigggr big none hiddensymbol
# font changes
# name "font" math/text family series shape color
diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index dbc0c76..392e1ff 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -2113,7 +2113,7 @@ MathCompletionList::MathCompletionList(Cursor const & cur)
// fill in global macros
macros.clear();
- MacroTable::globalMacros().getMacroNames(macros);
+ MacroTable::globalMacros().getMacroNames(macros, false);
//lyxerr << "Globals completion macros: ";
for (it = macros.begin(); it != macros.end(); ++it) {
//lyxerr << "\\" + *it << " ";
@@ -2198,7 +2198,7 @@ MathCompletionList::MathCompletionList(Cursor const & cur)
MathWordList::const_iterator it2;
//lyxerr << "Globals completion commands: ";
for (it2 = words.begin(); it2 != words.end(); ++it2) {
- if (it2->second.inset != "macro") {
+ if (it2->second.inset != "macro" && !it2->second.hidden) {
// macros are already read from
MacroTable::globalMacros()
globals.push_back('\\' + it2->first);
//lyxerr << '\\' + it2->first << ' ';
diff --git a/src/mathed/MacroTable.cpp b/src/mathed/MacroTable.cpp
index 24c9e07..2d29f52 100644
--- a/src/mathed/MacroTable.cpp
+++ b/src/mathed/MacroTable.cpp
@@ -119,6 +119,14 @@ string const MacroData::requires() const
}
+bool MacroData::hidden() const
+{
+ if (sym_)
+ return sym_->hidden;
+ return false;
+}
+
+
docstring const MacroData::xmlname() const
{
if (sym_)
@@ -242,10 +250,11 @@ MacroTable::insert(Buffer * buf, docstring const & def)
}
-void MacroTable::getMacroNames(std::set<docstring> & names) const
+void MacroTable::getMacroNames(std::set<docstring> & names, bool gethidden)
const
{
for (const_iterator it = begin(); it != end(); ++it)
- names.insert(it->first);
+ if (gethidden || !it->second.hidden())
+ names.insert(it->first);
}
diff --git a/src/mathed/MacroTable.h b/src/mathed/MacroTable.h
index 97029a3..3bd04ea 100644
--- a/src/mathed/MacroTable.h
+++ b/src/mathed/MacroTable.h
@@ -62,6 +62,8 @@ public:
///
std::string const requires() const;
///
+ bool hidden() const;
+ ///
docstring const xmlname() const;
///
char const * MathMLtype() const;
@@ -162,7 +164,7 @@ public:
///
void dump();
///
- void getMacroNames(std::set<docstring> & names) const;
+ void getMacroNames(std::set<docstring> & names, bool gethidden) const;
/// the global list
static MacroTable & globalMacros();
diff --git a/src/mathed/MathFactory.cpp b/src/mathed/MathFactory.cpp
index 3413127..f2e980a 100644
--- a/src/mathed/MathFactory.cpp
+++ b/src/mathed/MathFactory.cpp
@@ -185,6 +185,7 @@ void initSymbols()
string requires;
string extra;
string xmlname;
+ bool hidden = false;
is >> macro >> requires;
if ((is >> xmlname)) {
extra = requires;
@@ -205,7 +206,11 @@ void initSymbols()
tmp.name = it->first;
tmp.extra = from_utf8(extra);
tmp.xmlname = from_utf8(xmlname);
- tmp.requires = requires;
+ if (requires == "hiddensymbol") {
+ requires = "";
+ tmp.hidden = hidden = true;
+ } else
+ tmp.requires = requires;
theMathWordList[it->first] = tmp;
wit = theMathWordList.find(it->first);
it->second.setSymbol(&(wit->second));
@@ -218,7 +223,8 @@ void initSymbols()
<< " draw: 0"
<< " extra: " << extra
<< " xml: " << xmlname
- << " requires: " << requires << '\'');
+ << " requires: " << requires
+ << " hidden: " << hidden << '\'');
continue;
}
@@ -294,6 +300,12 @@ void initSymbols()
<< " used for " <<
to_utf8(tmp.name));
}
+ if (tmp.requires == "hiddensymbol")
+ {
+ tmp.requires = "";
+ tmp.hidden = true;
+ }
+
if (theMathWordList.find(tmp.name) != theMathWordList.end())
LYXERR(Debug::MATHED, "readSymbols: inset " <<
to_utf8(tmp.name)
<< " already exists.");
@@ -307,7 +319,8 @@ void initSymbols()
<< " draw: " << int(tmp.draw.empty() ? 0 : tmp.draw[0])
<< " extra: " << to_utf8(tmp.extra)
<< " xml: " << to_utf8(tmp.xmlname)
- << " requires: " << tmp.requires << '\'');
+ << " requires: " << tmp.requires
+ << " hidden: " << tmp.hidden << '\'');
}
string tmp = "cmm";
string tmp2 = "cmsy";
diff --git a/src/mathed/MathParser.h b/src/mathed/MathParser.h
index c92a8cf..9ff6db1 100644
--- a/src/mathed/MathParser.h
+++ b/src/mathed/MathParser.h
@@ -31,6 +31,8 @@ class Lexer;
class latexkeys {
public:
///
+ latexkeys() : hidden(false) {}
+ ///
char const * MathMLtype() const;
/// name of the macro or primitive
docstring name;
@@ -56,6 +58,9 @@ public:
docstring xmlname;
/// required LaTeXFeatures
std::string requires;
+ /// Should this macro be hidden from autocompletion (since it requires
+ /// user preamble code)?
+ bool hidden;
};