commit 141f13a9cc6f3b0098255a13d09f0a1432b56acc
Author: Georg Baum <[email protected]>
Date:   Tue Mar 10 21:04:24 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 these symbols and know what to put into the preamble more beautiful.

diff --git a/lib/symbols b/lib/symbols
index 7c563ec..b8782b8 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 8db538e..2209e02 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -2111,7 +2111,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 << " ";
@@ -2183,7 +2183,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 3ac4292..98ce7ee 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 f4c5773..a4bed72 100644
--- a/src/mathed/MathFactory.cpp
+++ b/src/mathed/MathFactory.cpp
@@ -186,6 +186,7 @@ void initSymbols()
                        string requires;
                        string extra;
                        string xmlname;
+                       bool hidden = false;
                        is >> macro >> requires;
                        if ((is >> xmlname)) {
                                extra = requires;
@@ -207,6 +208,11 @@ void initSymbols()
                                        tmp.extra = from_utf8(extra);
                                        tmp.xmlname = from_utf8(xmlname);
                                        tmp.requires = from_utf8(requires);
+                                       if (requires == "hiddensymbol") {
+                                               requires = "";
+                                               tmp.hidden = hidden = true;
+                                       } else
+                                               tmp.requires = 
from_utf8(requires);
                                        theMathWordList[it->first] = tmp;
                                        wit = theMathWordList.find(it->first);
                                        it->second.setSymbol(&(wit->second));
@@ -219,7 +225,8 @@ void initSymbols()
                                << "  draw: 0"
                                << "  extra: " << extra
                                << "  xml: " << xmlname
-                               << "  requires: " << requires << '\'');
+                               << "  requires: " << requires
+                               << "  hidden: " << hidden << '\'');
                        continue;
                }
 
@@ -290,6 +297,12 @@ void initSymbols()
                                              << " used for " << 
to_utf8(tmp.name));
                }
 
+               if (tmp.requires == "hiddensymbol")
+               {
+                       tmp.requires.clear();
+                       tmp.hidden = true;
+               }
+
                if (theMathWordList.find(tmp.name) != theMathWordList.end())
                        LYXERR(Debug::MATHED, "readSymbols: inset " << 
to_utf8(tmp.name)
                                << " already exists.");
@@ -303,7 +316,8 @@ void initSymbols()
                        << "  draw: " << int(tmp.draw.empty() ? 0 : tmp.draw[0])
                        << "  extra: " << to_utf8(tmp.extra)
                        << "  xml: " << to_utf8(tmp.xmlname)
-                       << "  requires: " << to_utf8(tmp.requires) << '\'');
+                       << "  requires: " << to_utf8(tmp.requires)
+                       << "  hidden: " << tmp.hidden << '\'');
        }
        docstring tmp = from_ascii("cmm");
        docstring tmp2 = from_ascii("cmsy");
diff --git a/src/mathed/MathParser.h b/src/mathed/MathParser.h
index 63e1be2..43727e1 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
        docstring requires;
+       /// Should this macro be hidden from autocompletion (since it requires
+       /// user preamble code)?
+       bool hidden;
 };
 
 
diff --git a/status.21x b/status.21x
index 0a43706..bdf066e 100644
--- a/status.21x
+++ b/status.21x
@@ -106,6 +106,9 @@ What's new
 - Record undo properly when changing multiple paragraphs parameters
   (bug 9437).
 
+- Do not offer unsupported macros like \biggg in autocompletion
+
+
 * INTERNALS
 
 

Reply via email to