Cleanup debug level handling, and a few other tweaks.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@374 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 1999-12-13 15:31:52 +00:00
parent 457e414feb
commit af1ecc336d
8 changed files with 145 additions and 77 deletions

View File

@ -1,3 +1,24 @@
1999-12-13 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
* po/de.po: fix the Export menu
* lyx.man: update the description of -dbg
* src/lyx_main.C (setDebuggingLevel): call Debug::showLevel()
(commandLineHelp): updated
(easyParse): show list of available debug levels if -dbg is passed
without argument.
* src/Makefile.am: add debug.C
* src/debug.h: moved some code to debug.C
* src/debug.C: new file. Contains code to set and show debug
level.
* src/layout.C: remove 'break' after 'continue' in switch
statements, since these cannot be reached.
1999-12-13 Allan Rae <rae@lyx.org> 1999-12-13 Allan Rae <rae@lyx.org>
* src/mathed/math_hash.C (math_hash): renamed from hash(), name clash. * src/mathed/math_hash.C (math_hash): renamed from hash(), name clash.

View File

@ -67,9 +67,9 @@ to obtain the
desired effect. Negative positions are ignored. If no valid position desired effect. Negative positions are ignored. If no valid position
is given, the main window is centered. is given, the main window is centered.
.TP .TP
.BI \-dbg " debug-level" .BI \-dbg " feature[,feature...]"
where debug-level is a sum of debugging options. where feature is a name or number.
Use "\fBlyx -dbg 65535 -help\fR" to see the different flags. Use "\fBlyx -dbg\fR" to see the list of available debug features.
.TP .TP
.BI \-Reverse .BI \-Reverse
swaps foreground and background colors. swaps foreground and background colors.

View File

@ -3600,9 +3600,7 @@ msgstr "FIM|Nn#n#N"
msgid "" msgid ""
"Export%t|as LaTeX...%x40|as DVI...%x41|as PostScript...%x42|as Ascii " "Export%t|as LaTeX...%x40|as DVI...%x41|as PostScript...%x42|as Ascii "
"Text...%x43|as HTML...%x44|Custom...%x45" "Text...%x43|as HTML...%x44|Custom...%x45"
msgstr "" msgstr "Exportieren%t|als LaTeX...%x40|als DVI...%x41|als PostScript...%x42|als Ascii Text...%x43|als HTML...%x44|Benutzerdefiniert...%x45"
"Exportieren%t|als LaTeX...%x40|als DVI...%x41|als PostScript...%x42|als "
"Ascii Text...%x43|Benutzerdefiniert...%x44"
#: src/menus.C:498 #: src/menus.C:498
msgid "" msgid ""

View File

@ -71,6 +71,7 @@ lyx_SOURCES = \
credits.h \ credits.h \
credits_form.C \ credits_form.C \
credits_form.h \ credits_form.h \
debug.C \
debug.h \ debug.h \
figure.h \ figure.h \
filedlg.C \ filedlg.C \

92
src/debug.C Normal file
View File

@ -0,0 +1,92 @@
/* This file is part of
* ======================================================
*
* LyX, The Document Processor
*
* Copyright (C) 1999 The LyX Team.
*
* ====================================================== */
#ifdef __GNUG__
#pragma implementation
#endif
#include <config.h>
#include "debug.h"
struct error_item {
Debug::type level;
char const * name;
char const * desc;
};
static error_item errorTags[] = {
{ Debug::INFO, "info", "General information"},
{ Debug::INIT, "init", "Program initialisation"},
{ Debug::KEY, "key", "Keyboard events handling"},
{ Debug::TOOLBAR, "toolbar", "Toolbar handling"},
{ Debug::PARSER, "parser", "Lyxlex grammer parser"},
{ Debug::LYXRC, "lyxrc", "Configuration files reading"},
{ Debug::KBMAP, "kbmap", "Custom keyboard definition"},
{ Debug::LATEX, "latex", "LaTeX generation/execution"},
{ Debug::MATHED, "mathed", "Math editor"},
{ Debug::FONT, "font", "Font handling"},
{ Debug::TCLASS, "tclass", "Textclass files reading"},
{ Debug::LYXVC, "lyxvc", "Version control"},
{ Debug::LYXSERVER, "lyxserver", "External control interface"},
{ Debug::ROFF, "roff", "Keep *roff temporary files"},
{ Debug::ACTION, "action", "User commands"},
{ Debug::NONE, "none", "No debugging message"},
{ Debug::ANY, "any", "All debugging messages"}
};
static const int numErrorTags = sizeof(errorTags)/sizeof(error_item);
Debug::type Debug::value(string const & val)
{
type l = Debug::NONE;
string v(val);
while (!v.empty()) {
string::size_type st = v.find(',');
string tmp(lowercase(v.substr(0, st)));
if (tmp.empty())
break;
// Is it a number?
if (isStrInt(tmp))
l |= static_cast<type>(strToInt(tmp));
else
// Search for an explicit name
for (int i = 0 ; i<numErrorTags ; ++i)
if (tmp == errorTags[i].name) {
l |= errorTags[i].level;
break;
}
if (st == string::npos) break;
v.erase(0, st + 1);
}
return l;
}
void Debug::showLevel(ostream &o, Debug::type level)
{
// Show what features are traced
for (int i = 0 ; i < numErrorTags ; ++i)
if (errorTags[i].level != Debug::ANY
&& errorTags[i].level != Debug::NONE
&& errorTags[i].level & level)
o << "Debugging `" << errorTags[i].name
<< "' (" << errorTags[i].desc << ')' << endl;
}
void Debug::showTags(ostream &)
{
for (int i = 0 ; i < numErrorTags ; ++i)
fprintf(stdout, " %5d %-10s%-35s\n",
errorTags[i].level,
errorTags[i].name,
errorTags[i].desc);
}

View File

@ -57,56 +57,18 @@ struct Debug {
/** A function to convert symbolic string names on debug levels /** A function to convert symbolic string names on debug levels
to their numerical value. to their numerical value.
*/ */
static Debug::type value(string const & val) { static Debug::type value(string const & val);
type l = Debug::NONE;
string v(val); /** Display the tags and descriptions of the current debug level
while (!v.empty()) { of ds
string::size_type st = v.find(','); */
string tmp(v.substr(0, st)); static void showLevel(ostream &o, type level);
if (tmp.empty()) break;
if (isStrInt(tmp)) { /** show all the possible tags that can be used for debugging */
l |= static_cast<type>(strToInt(tmp)); static void showTags(ostream &o);
break;
}
if (!compare_no_case(tmp,"NONE"))
l |= Debug::NONE;
else if (!compare_no_case(tmp,"INFO"))
l |= Debug::INFO;
else if (!compare_no_case(tmp,"INIT"))
l |= Debug::INIT;
else if (!compare_no_case(tmp,"KEY"))
l |= Debug::KEY;
else if (!compare_no_case(tmp,"TOOLBAR"))
l |= Debug::TOOLBAR;
else if (!compare_no_case(tmp,"PARSER"))
l |= Debug::PARSER;
else if (!compare_no_case(tmp,"LYXRC"))
l |= Debug::LYXRC;
else if (!compare_no_case(tmp,"KBMAP"))
l |= Debug::KBMAP;
else if (!compare_no_case(tmp,"LATEX"))
l |= Debug::LATEX;
else if (!compare_no_case(tmp,"MATHED"))
l |= Debug::MATHED;
else if (!compare_no_case(tmp,"FONT"))
l |= Debug::FONT;
else if (!compare_no_case(tmp,"TCLASS"))
l |= Debug::TCLASS;
else if (!compare_no_case(tmp,"LYXVC"))
l |= Debug::LYXVC;
else if (!compare_no_case(tmp,"LYXSERVER"))
l |= Debug::LYXSERVER;
else if (!compare_no_case(tmp,"ROFF"))
l |= Debug::ROFF;
else if (!compare_no_case(tmp,"ACTION"))
l |= Debug::ACTION;
else break; // unknown string
if (st == string::npos) break;
v.erase(0, st + 1);
}
return l;
}
}; };
/// ///
inline void operator|= (Debug::type & d1, Debug::type d2) inline void operator|= (Debug::type & d1, Debug::type d2)
{ {

View File

@ -178,12 +178,12 @@ bool LyXLayout::Read (LyXLex & lexrc, LyXTextClass const & tclass)
// See comment in lyxrc.C. // See comment in lyxrc.C.
switch(le) { switch(le) {
case LyXLex::LEX_FEOF: case LyXLex::LEX_FEOF:
continue; break; continue;
case LyXLex::LEX_UNDEF: // parse error case LyXLex::LEX_UNDEF: // parse error
lexrc.printError("Unknown layout tag `$$Token'"); lexrc.printError("Unknown layout tag `$$Token'");
error = true; error = true;
continue; break; continue;
default: break; default: break;
} }
switch(static_cast<LayoutTags>(le)) { switch(static_cast<LayoutTags>(le)) {
@ -437,7 +437,7 @@ void LyXLayout::readAlignPossible(LyXLex & lexrc)
switch (le) { switch (le) {
case LyXLex::LEX_UNDEF: case LyXLex::LEX_UNDEF:
lexrc.printError("Unknown alignment `$$Token'"); lexrc.printError("Unknown alignment `$$Token'");
continue; break; continue;
default: break; default: break;
}; };
switch (static_cast<AlignTags>(le)) { switch (static_cast<AlignTags>(le)) {
@ -799,12 +799,12 @@ bool LyXTextClass::Read(string const & filename, bool merge)
int le = lexrc.lex(); int le = lexrc.lex();
switch(le) { switch(le) {
case LyXLex::LEX_FEOF: case LyXLex::LEX_FEOF:
continue; break; continue;
case LyXLex::LEX_UNDEF: case LyXLex::LEX_UNDEF:
lexrc.printError("Unknown TextClass tag `$$Token'"); lexrc.printError("Unknown TextClass tag `$$Token'");
error = true; error = true;
continue; break; continue;
default: break; default: break;
} }
switch(static_cast<TextClassTags>(le)) { switch(static_cast<TextClassTags>(le)) {
@ -1085,7 +1085,7 @@ void LyXTextClass::readClassOptions(LyXLex & lexrc)
switch (le) { switch (le) {
case LyXLex::LEX_UNDEF: case LyXLex::LEX_UNDEF:
lexrc.printError("Unknown ClassOption tag `$$Token'"); lexrc.printError("Unknown ClassOption tag `$$Token'");
continue; break; continue;
default: break; default: break;
} }
switch (static_cast<ClassOptionsTags>(le)) { switch (static_cast<ClassOptionsTags>(le)) {

View File

@ -438,19 +438,7 @@ void setDebuggingLevel(string const & dbgLevel)
{ {
lyxerr << _("Setting debug level to ") << dbgLevel << endl; lyxerr << _("Setting debug level to ") << dbgLevel << endl;
lyxerr.level(Debug::value(dbgLevel)); lyxerr.level(Debug::value(dbgLevel));
lyxerr[Debug::INFO] << "Debugging INFO #" << Debug::INFO << endl; Debug::showLevel(lyxerr, lyxerr.level());
lyxerr[Debug::INIT] << "Debugging INIT #" << Debug::INIT << endl;
lyxerr[Debug::KEY] << "Debugging KEY #" << Debug::KEY << endl;
lyxerr[Debug::TOOLBAR] << "Debugging TOOLBAR #" << Debug::TOOLBAR << endl;
lyxerr[Debug::PARSER] << "Debugging LEX and PARSER #" << Debug::PARSER << endl;
lyxerr[Debug::LYXRC] << "Debugging LYXRC #" << Debug::LYXRC << endl;
lyxerr[Debug::KBMAP] << "Debugging KBMAP #" << Debug::KBMAP << endl;
lyxerr[Debug::LATEX] << "Debugging LATEX #" << Debug::LATEX << endl;
lyxerr[Debug::MATHED] << "Debugging MATHED #" << Debug::MATHED << endl;
lyxerr[Debug::FONT] << "Debugging FONT #" << Debug::FONT << endl;
lyxerr[Debug::TCLASS] << "Debugging TCLASS #" << Debug::TCLASS << endl;
lyxerr[Debug::LYXVC] << "Debugging LYXVC #" << Debug::LYXVC << endl;
lyxerr[Debug::LYXSERVER] << "Debugging LYXSERVER #" << Debug::LYXSERVER << endl;
} }
@ -467,7 +455,9 @@ void commandLineHelp()
"\t-height y set the height of the main window\n" "\t-height y set the height of the main window\n"
"\t-xpos x set the x position of the main window\n" "\t-xpos x set the x position of the main window\n"
"\t-ypos y set the y position of the main window\n" "\t-ypos y set the y position of the main window\n"
"\t-dbg n where n is a sum of debugging options. Try -dbg 65535 -help\n" "\t-dbg feature[,feature]...\n"
" select the features to debug.\n"
" Type `lyx -dbg' to see the list of features\n"
"\t-Reverse swaps foreground & background colors\n" "\t-Reverse swaps foreground & background colors\n"
"\t-Mono runs LyX in black and white mode\n" "\t-Mono runs LyX in black and white mode\n"
"\t-FastSelection use a fast routine for drawing selections\n\n" "\t-FastSelection use a fast routine for drawing selections\n\n"
@ -491,9 +481,13 @@ bool LyX::easyParse(int * argc, char * argv[])
for (int j = i; j < (*argc); ++j) for (int j = i; j < (*argc); ++j)
argv[j] = argv[j + 2]; argv[j] = argv[j + 2];
--i; // After shift, check this number again. --i; // After shift, check this number again.
} else } else {
lyxerr << _("Missing number for -dbg switch!") lyxerr << _("List of supported debug flags:")
<< endl; << endl;
Debug::showTags(lyxerr);
exit(0);
}
} }
// Check for "-sysdir" // Check for "-sysdir"
else if (arg == "-sysdir") { else if (arg == "-sysdir") {