Richard Heck wrote:

> On 03/05/2015 02:49 PM, Georg Baum wrote:
>> Richard Heck wrote:
>>
>>> On 03/04/2015 04:07 PM, Georg Baum wrote:
>>>> The idea is simply to give a better display for those users who use
>>>> these packages. AFAIK these commands do not occur in any toolbar, menu
>>>> or autocompletion (and if they would this would be a bug).
>>> That is a bit confusing for the user. Is there anything we can do?
>> Yes, it can be confusing. I think we have two options:
>>
>> 1) remove these macros from autocompletion
>> 2) comment them in lib/symbols
>>
>> I have no string preference. Which version do you prefer?
> 
> If there's a good reason to have them in lib/symbols, I have no problem
> keeing them there. So if there's an easy way to remove them from
> autocompletion, let's do that.

The attached patch implements the autocompletion removal. If this fits your 
definition of "easy way" I'll put it in stable and master, otherwise I'd put 
it in master and I'll just comment the corresonding symbols out in stable.


Georg
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 24c9e07a..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;
 };
 
 

Reply via email to