From e656d12d0bd2c82dfb64454fcdd0732cca6565b4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Lars=20Gullik=20Bj=C3=B8nnes?= Date: Tue, 11 Jan 2000 01:59:00 +0000 Subject: [PATCH] ok, some more changes, this time I have gotten the fonttable and insettable in lyxparagra converted correctly to stl::containsers, added some tags for move to using pdflatex, search for pdflatex,dvips,pdf2ps,xpdf etx. in lib/configure.m4. A couple of name changes. Lets prepare for 1.1.4 now. Read the ChangeLog git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@412 a592a061-630c-0410-9148-cb99ea01b6c8 --- ChangeLog | 29 ++ development/lyx3/LyX3-Tasks | 38 +- lib/configure | 112 ++++++ lib/configure.m4 | 13 + lib/lyxrc.example | 17 + src/LyXSendto.C | 10 +- src/buffer.C | 14 +- src/bufferlist.C | 23 +- src/bufferlist.h | 2 +- src/lyx_cb.C | 23 +- src/lyxfunc.C | 12 +- src/lyxparagraph.h | 28 +- src/lyxrc.C | 62 +++- src/lyxrc.h | 12 + src/paragraph.C | 723 +++++++++++++++++++----------------- src/support/block.h | 5 - 16 files changed, 685 insertions(+), 438 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8169912f67..93ce9b0b88 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2000-01-10 Lars Gullik Bjønnes + + * src/lyx_cb.C (MakeLaTeXOutput): name change from MakeDVIOutput + (CreatePostscript): name change from MenuRunDVIPS (or something) + (PreviewPostscript): name change from MenuPreviewPS + (PreviewDVI): name change from MenuPreviewDVI + + * lib/lyxrc.example: added \pdflatex_command, \pdf_mode, + \view_pdf_command., \pdf_to_ps_command + + * lib/configure.m4: added search for PDF viewer, and search for + PDF to PS converter. + (lyxrc.defaults output): add \pdflatex_command, + \view_pdf_command and \pdf_to_ps_command. + + * src/lyx_cb.C (MenuPreviewDVI): renamed from MenuPreview. + + * src/bufferlist.C (write): we don't use blocksize for anything so + I removed it. + 2000-01-10 Jean-Marc Lasgouttes * src/support/block.h: disable operator T* (), since it causes @@ -24,6 +44,15 @@ * src/lyxlex.h: include LIstream.h, for Sun CC this time. * src/mathed/math_defs.h: ditto. +2000-01-09 Lars Gullik Bjønnes + + * src/lyxrc.[Ch]: New tag and variable "\make_backup". Defaults to + true, decides if we create a backup file or not when saving. New + tag and variable \pdf_mode, defaults to false. New tag and + variable \pdflatex_command, defaults to pdflatex. New tag and + variable \view_pdf_command, defaults to xpdf. New tag and variable + \pdf_to_ps_command, defaults to pdf2ps. + 2000-01-08 Lars Gullik Bjønnes * src/bufferlist.C (close): don't call insetUnlock if the buffer diff --git a/development/lyx3/LyX3-Tasks b/development/lyx3/LyX3-Tasks index c43e9c7aed..9047cc7daa 100644 --- a/development/lyx3/LyX3-Tasks +++ b/development/lyx3/LyX3-Tasks @@ -45,14 +45,6 @@ towards code quality: o always try to use POSIX commands. o switch to use POSIX signals - o rewrite LString to be a true subset of STL string - then it will be _very_ easy to switch to - multibyte characters later if we want to. - o use STL storage containers (or prepare for it) - code reuse. Very often faster and better tested - than what we make/do ourselves. - o use C++ iostreams - better interface and typesafe o make as much as possible of the code reentreanant(?) should make it easier to move to threads later. o signal slot mechanism (borrowed from GTK-- project) @@ -70,7 +62,6 @@ towards code quality: Some other things related to structure and services in the code: - o change pathpush and pathpop to be a class instead. o class FileInfo does way too much, move the unneeded parts to a super class or friends. o a process manager class to handle execution of external @@ -81,23 +72,8 @@ Some other things related to structure and services in the code: the same time. - to setup file descriptors where communicating with the processes can take place. - o make a liblyx for functions/classes delivering services to LyX - - lyxsum - - FileInfo - - syscall/syscontr/syssingleton - - strerror.C - o get rid of definitions.h o pass an inforeceiver around in the object structure. (this instead of passing minibuffers, and lyxerrors.) - o get a regexp package (GNU) and use it in filedialogs, search - and the like. - - -Some small things to do with the linker: - - o link partially in the subdirs, should make linking faster. - PostgreSQL does this so we should be able to do it - too. ================ @@ -245,15 +221,11 @@ some packages, I think these are the packages supported by 0.12: ====================== -Wild thoughts: - - o the internal text-encoding could be Cork (T1) - o always keep the output file (.tex) 7bit. - o use plugins for insets. - - -====================== - If you have other wishes for features, or comments, please let us know. Lgb + +Interesting links: + +http://freshmeat.net/appindex/1999/11/30/943979651.html +http://freshmeat.net/appindex/1999/12/09/944757708.html diff --git a/lib/configure b/lib/configure index 68ee643ee1..c55472aae0 100755 --- a/lib/configure +++ b/lib/configure @@ -331,6 +331,114 @@ if test -z "$GHOSTVIEW" ; then fi +# Search for a program to preview pdf +echo $ac_n "checking for a PDF preview""... $ac_c" +echo "$ac_t""(xpdf acroread gv ghostview)" +PDFVIEWER= +for ac_prog in xpdf acroread gv ghostview +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog ; ac_word=$2 +if test -n "$ac_word"; then + echo $ac_n "+checking for \"$ac_word\"""... $ac_c" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -x $ac_dir/$ac_word; then + PDFVIEWER="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" + + if test -n "$PDFVIEWER"; then + ac_result=yes + else + ac_result=no + fi + + echo "$ac_t""$ac_result" + test -n "$PDFVIEWER" && break +fi +done + +if test -z "$PDFVIEWER" ; then + PDFVIEWER=none +fi + + +# Search for a program to convert pdf to ps +echo $ac_n "checking for a PDF to PS converter""... $ac_c" +echo "$ac_t""(pdf2ps pdftops)" +PDFPS= +for ac_prog in pdf2ps pdftops +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog ; ac_word=$2 +if test -n "$ac_word"; then + echo $ac_n "+checking for \"$ac_word\"""... $ac_c" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -x $ac_dir/$ac_word; then + PDFPS="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" + + if test -n "$PDFPS"; then + ac_result=yes + else + ac_result=no + fi + + echo "$ac_t""$ac_result" + test -n "$PDFPS" && break +fi +done + +if test -z "$PDFPS" ; then + PDFPS=none +fi + + +# Search for a program to convert dvi to ps +echo $ac_n "checking for a DVI to PS converter""... $ac_c" +echo "$ac_t""(dvips)" +DVIPS= +for ac_prog in dvips +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog ; ac_word=$2 +if test -n "$ac_word"; then + echo $ac_n "+checking for \"$ac_word\"""... $ac_c" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -x $ac_dir/$ac_word; then + DVIPS="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" + + if test -n "$DVIPS"; then + ac_result=yes + else + ac_result=no + fi + + echo "$ac_t""$ac_result" + test -n "$DVIPS" && break +fi +done + +if test -z "$DVIPS" ; then + DVIPS=none +fi + + # Search a *roff program (used to translate tables in ASCII export) echo $ac_n "checking for a *roff formatter""... $ac_c" echo "$ac_t""(groff nroff)" @@ -740,6 +848,10 @@ cat >lyxrc.defaults <lyxrc.defaults <Export->Custom, // I kept the old name sendto in the code because I am lazy (JMarc) @@ -57,7 +57,7 @@ void SendtoApplyCB(FL_OBJECT *, long) fl_get_button(fd_form_sendto->radio_ftype_ps)) { ProhibitInput(); // Generate dvi file and check if there are errors in the .lyx file - if (MakeDVIOutput(buffer) > 0) { + if (MakeLaTeXOutput(buffer) > 0) { AllowInput(); return; } @@ -74,7 +74,7 @@ void SendtoApplyCB(FL_OBJECT *, long) ftypeext = ".txt"; else { ftypeext = ".ps_tmp"; - if (!MenuRunDvips(buffer, true)) { + if (!CreatePostscript(buffer, true)) { return; } } @@ -94,7 +94,7 @@ void SendtoApplyCB(FL_OBJECT *, long) if (fl_get_button(fd_form_sendto->radio_ftype_lyx)) buffer->writeFile(fname, true); // if the .tex file is requested save it to the tempdir - // as now we don't do the MakeDVIOutput anymore + // as now we don't do the MakeLaTeXOutput anymore if (fl_get_button(fd_form_sendto->radio_ftype_latex)) buffer->makeLaTeXFile(fname, path, false); // create the .txt file in tmp_dir if this filetype is requested diff --git a/src/buffer.C b/src/buffer.C index e0953cf145..649dc2e291 100644 --- a/src/buffer.C +++ b/src/buffer.C @@ -3167,7 +3167,9 @@ int Buffer::runLaTeX() // do the LaTex run(s) TeXErrors terr; - LaTeX latex(lyxrc->latex_command, name, filepath); + string latex_command = lyxrc->pdf_mode ? + lyxrc->pdflatex_command : lyxrc->latex_command; + LaTeX latex(latex_command, name, filepath); int res = latex.run(terr, users->owner()->getMiniBuffer()); // running latex @@ -3233,7 +3235,9 @@ int Buffer::runLiterate() markDviDirty(); } - Literate literate(lyxrc->latex_command, name, filepath, + string latex_command = lyxrc->pdf_mode ? + lyxrc->pdflatex_command : lyxrc->latex_command; + Literate literate(latex_command, name, filepath, lit_name, lyxrc->literate_command, lyxrc->literate_error_filter, lyxrc->build_command, lyxrc->build_error_filter); @@ -3301,8 +3305,10 @@ int Buffer::buildProgram() makeLaTeXFile(lit_name, org_path, false); markNwDirty(); } - - Literate literate(lyxrc->latex_command, name, filepath, + + string latex_command = lyxrc->pdf_mode ? + lyxrc->pdflatex_command : lyxrc->latex_command; + Literate literate(latex_command, name, filepath, lit_name, lyxrc->literate_command, lyxrc->literate_error_filter, lyxrc->build_command, lyxrc->build_error_filter); diff --git a/src/bufferlist.C b/src/bufferlist.C index 97e84b1113..1a0eb00df6 100644 --- a/src/bufferlist.C +++ b/src/bufferlist.C @@ -19,12 +19,9 @@ #include #include -using std::ifstream; -using std::ofstream; -using std::ios; - #include #include + #include "bufferlist.h" #include "lyx_main.h" #include "minibuffer.h" @@ -43,6 +40,10 @@ using std::ios; extern BufferView * current_view; extern int RunLinuxDoc(int, string const &); +using std::ifstream; +using std::ofstream; +using std::ios; + // // Class BufferStorage // @@ -131,8 +132,12 @@ bool BufferList::QwriteAll() // Should probably be moved to somewhere else: BufferView? LyXView? bool BufferList::write(Buffer * buf, bool makeBackup) { - current_view->owner()->getMiniBuffer()->Set(_("Saving document"), - MakeDisplayPath(buf->fileName()), "..."); + if (buf->getUser()) + buf->getUser() + ->owner() + ->getMiniBuffer() + ->Set(_("Saving document"), + MakeDisplayPath(buf->fileName()), "..."); // We don't need autosaves in the immediate future. (Asger) buf->resetAutosaveTimers(); @@ -171,15 +176,13 @@ bool BufferList::write(Buffer * buf, bool makeBackup) times->actime = finfo.getAccessTime(); times->modtime = finfo.getModificationTime(); - long blksize = finfo.getBlockSize(); - lyxerr.debug() << "BlockSize: " << blksize << endl; ifstream ifs(buf->fileName().c_str()); ofstream ofs(s.c_str(), ios::out|ios::trunc); if (ifs && ofs) { char c = 0; while (ifs.get(c)) { ofs.put(c); - }; + } ifs.close(); ofs.close(); chmod(s.c_str(), fmode); @@ -257,7 +260,7 @@ bool BufferList::close(Buffer * buf) MakeDisplayPath(buf->fileName(), 50), _("Save document?"))){ case 1: // Yes - if (write(buf)) { + if (write(buf, lyxrc->make_backup)) { lastfiles->newFile(buf->fileName()); } else { AllowInput(); diff --git a/src/bufferlist.h b/src/bufferlist.h index 72105a3e71..3c215a0881 100644 --- a/src/bufferlist.h +++ b/src/bufferlist.h @@ -90,7 +90,7 @@ public: bool empty(); /// Saves buffer. Returns false if unsuccesful. - bool write(Buffer *, bool makeBackup = true); + bool write(Buffer *, bool makeBackup); /// bool QwriteAll(); diff --git a/src/lyx_cb.C b/src/lyx_cb.C index 8ac601124e..496cb75051 100644 --- a/src/lyx_cb.C +++ b/src/lyx_cb.C @@ -284,7 +284,7 @@ void SetUpdateTimer(float time) void MenuWrite(Buffer * buffer) { XFlush(fl_display); - if (!bufferlist.write(buffer)) { + if (!bufferlist.write(buffer, lyxrc->make_backup)) { string fname = buffer->fileName(); string s = MakeAbsPath(fname); if (AskQuestion(_("Save failed. Rename and try again?"), @@ -470,14 +470,12 @@ int MenuRunChktex(Buffer * buffer) } -int MakeDVIOutput(Buffer * buffer) +int MakeLaTeXOutput(Buffer * buffer) { // Who cares? //if (!bv->text) // return 1; - int ret = 0; - string path = OnlyPath(buffer->fileName()); if (lyxrc->use_tempdir || (IsDirWriteable(path) < 1)) { path = buffer->tmppath; @@ -504,7 +502,7 @@ bool RunScript(Buffer * buffer, bool wait, string name = orgname; int result = 0; - if (MakeDVIOutput(buffer) > 0) + if (MakeLaTeXOutput(buffer) > 0) return false; /* get DVI-Filename */ if (name.empty()) @@ -565,7 +563,7 @@ bool RunScript(Buffer * buffer, bool wait, // Returns false if we fail -bool MenuRunDvips(Buffer * buffer, bool wait = false) +bool CreatePostscript(Buffer * buffer, bool wait = false) { // Who cares? //if (!bv->text) @@ -574,7 +572,7 @@ bool MenuRunDvips(Buffer * buffer, bool wait = false) ProhibitInput(); // Generate dvi file - if (MakeDVIOutput(buffer) > 0) { + if (MakeLaTeXOutput(buffer) > 0) { AllowInput(); return false; } @@ -616,7 +614,7 @@ bool MenuRunDvips(Buffer * buffer, bool wait = false) } // Make postscript file. - string command = "dvips " + lyxrc->print_to_file + ' '; + string command = lyxrc->dvi_to_ps_command + ' ' + lyxrc->print_to_file + ' '; command += QuoteName(psname); if (buffer->params.use_geometry && buffer->params.papersize2 == BufferParams::VM_PAPER_CUSTOM @@ -653,14 +651,15 @@ bool MenuRunDvips(Buffer * buffer, bool wait = false) // Returns false if we fail -bool MenuPreviewPS(Buffer * buffer) +//bool MenuPreviewPS(Buffer * buffer) +bool PreviewPostscript(Buffer * buffer) { // Who cares? //if (!bv->text) // return false; // Generate postscript file - if (!MenuRunDvips(buffer, true)) { + if (!CreatePostscript(buffer, true)) { return false; } @@ -687,7 +686,7 @@ void MenuFax(Buffer * buffer) // return; // Generate postscript file - if (!MenuRunDvips(buffer, true)) { + if (!CreatePostscript(buffer, true)) { return; } @@ -708,7 +707,7 @@ void MenuFax(Buffer * buffer) // Returns false if we fail -bool MenuPreview(Buffer * buffer) +bool PreviewDVI(Buffer * buffer) { // Who cares? //if (!bv->text) diff --git a/src/lyxfunc.C b/src/lyxfunc.C index b44d7e6cc9..0cdb9fbea3 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -83,7 +83,7 @@ extern void MenuWriteAs(Buffer *); extern int MenuRunLaTeX(Buffer *); extern int MenuBuildProg(Buffer *); extern int MenuRunChktex(Buffer *); -extern bool MenuRunDvips(Buffer *, bool); +extern bool CreatePostscript(Buffer *, bool); extern void MenuPrint(Buffer *); extern void MenuSendto(); extern void QuitLyX(); @@ -98,8 +98,8 @@ extern void AutoSave(); extern void MenuSearch(); extern void SetUpdateTimer(float timer = 0.3); extern void FreeUpdateTimer(); -extern bool MenuPreview(Buffer *); -extern bool MenuPreviewPS(Buffer *); +extern bool PreviewDVI(Buffer *); +extern bool PreviewPostscript(Buffer *); extern void MenuInsertLabel(char const *); extern void MenuInsertRef(); extern void MenuLayoutCharacter(); @@ -695,11 +695,11 @@ string LyXFunc::Dispatch(int ac, break; case LFUN_PREVIEW: - MenuPreview(owner->buffer()); + PreviewDVI(owner->buffer()); break; case LFUN_PREVIEWPS: - MenuPreviewPS(owner->buffer()); + PreviewPostscript(owner->buffer()); break; case LFUN_RUNLATEX: @@ -715,7 +715,7 @@ string LyXFunc::Dispatch(int ac, break; case LFUN_RUNDVIPS: - MenuRunDvips(owner->buffer(), false); + CreatePostscript(owner->buffer(), false); break; case LFUN_MENUPRINT: diff --git a/src/lyxparagraph.h b/src/lyxparagraph.h index 5b6adafb76..87deafe22f 100644 --- a/src/lyxparagraph.h +++ b/src/lyxparagraph.h @@ -16,6 +16,9 @@ #pragma interface #endif +#include +#include + #include "insets/lyxinset.h" #include "insets/insetbib.h" #include "table.h" @@ -23,13 +26,9 @@ #include "layout.h" #include "support/block.h" -//#define NEW_TABLE 1 -#ifdef NEW_TABLE -#include -#endif - -#include +#define NEW_INSETTABLE 1 +#define NEW_FONTTABLE 1 class BufferParams; class LyXBuffer; @@ -492,7 +491,7 @@ private: allowed in these font tables. */ LyXFont font; -#ifndef NEW_TABLE +#ifndef NEW_FONTTABLE /// Pointer to next font entry FontTable * next; #endif @@ -503,23 +502,26 @@ private: size_type pos; /// Inset * inset; -#ifndef NEW_TABLE +#ifndef NEW_INSETTABLE /// InsetTable * next; #endif }; -#ifdef NEW_TABLE +#ifdef NEW_FONTTABLE /// typedef list FontList; /// - typedef list InsetList; - /// FontList fontlist; - /// - InsetList insetlist; #else /// FontTable * fonttable; +#endif +#ifdef NEW_INSETTABLE + /// + typedef list InsetList; + /// + InsetList insetlist; +#else /// InsetTable * insettable; #endif diff --git a/src/lyxrc.C b/src/lyxrc.C index cdb419e60b..8cca7ea27b 100644 --- a/src/lyxrc.C +++ b/src/lyxrc.C @@ -127,7 +127,13 @@ enum LyXRCTags { RC_DISPLAY_SHORTCUTS, RC_RELYX_COMMAND, RC_HTML_COMMAND, - RC_LAST + RC_MAKE_BACKUP, + RC_PDFLATEX_COMMAND, + RC_PDF_MODE, + RC_VIEWPDF_COMMAND, + RC_PDF_TO_PS_COMMAND, + RC_DVI_TO_PS_COMMAND, + RC_LAST }; @@ -152,6 +158,7 @@ static keyword_item lyxrcTags[] = { { "\\default_papersize", RC_DEFAULT_PAPERSIZE }, { "\\display_shortcuts", RC_DISPLAY_SHORTCUTS }, { "\\document_path", RC_DOCUMENTPATH }, + { "\\dvi_to_ps_command", RC_DVI_TO_PS_COMMAND }, { "\\escape_chars", RC_ESC_CHARS }, { "\\exit_confirmation", RC_EXIT_CONFIRMATION }, { "\\fast_selection", RC_FAST_SELECTION }, @@ -168,7 +175,11 @@ static keyword_item lyxrcTags[] = { { "\\literate_command", RC_LITERATE_COMMAND }, { "\\literate_error_filter", RC_LITERATE_ERROR_FILTER }, { "\\literate_extension", RC_LITERATE_EXTENSION }, + { "\\make_backup", RC_MAKE_BACKUP }, { "\\num_lastfiles", RC_NUMLASTFILES }, + { "\\pdf_mode", RC_PDF_MODE }, + { "\\pdf_to_ps_command", RC_PDF_TO_PS_COMMAND }, + { "\\pdflatex_command", RC_PDFLATEX_COMMAND }, { "\\personal_dictionary", RC_PERS_DICT }, { "\\phone_book", RC_PHONEBOOK }, { "\\print_adapt_output", RC_PRINT_ADAPTOUTPUT }, @@ -213,6 +224,7 @@ static keyword_item lyxrcTags[] = { { "\\use_personal_dictionary", RC_USE_PERS_DICT }, { "\\use_tempdir", RC_USETEMPDIR }, { "\\view_dvi_command", RC_VIEWDVI_COMMAND }, + { "\\view_pdf_command", RC_VIEWPDF_COMMAND }, { "\\view_ps_command", RC_VIEWPS_COMMAND }, { "\\view_pspic_command", RC_VIEWPSPIC_COMMAND } }; @@ -250,7 +262,11 @@ LyXRC::LyXRC() document_path = GetEnvPath("HOME"); tempdir_path = "/tmp"; use_tempdir = true; + pdf_mode = false; latex_command = "latex"; + pdflatex_command = "pdflatex"; + pdf_to_ps_command = "pdf2ps"; + dvi_to_ps_command = "dvips"; literate_command = "none"; literate_extension = "none"; literate_error_filter = "cat"; @@ -261,6 +277,7 @@ LyXRC::LyXRC() view_ps_command = "ghostview -swap"; view_pspic_command = "ghostview"; view_dvi_command = "xdvi"; + view_pdf_command = "xpdf"; default_papersize = BufferParams::PAPER_USLETTER; custom_export_format = "ps"; chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38"; @@ -292,6 +309,7 @@ LyXRC::LyXRC() ascii_linelen = 75; num_lastfiles = 4; check_lastfiles = true; + make_backup = true; exit_confirmation = true; display_shortcuts = true; // Spellchecker settings: @@ -319,6 +337,7 @@ int LyXRC::ReadBindFile(string const & name) return result; } + int LyXRC::read(string const & filename) { // Default bindfile. @@ -502,11 +521,31 @@ int LyXRC::read(string const & filename) if (lexrc.next()) custom_export_format = lexrc.GetString(); break; + + case RC_PDF_MODE: + if (lexrc.next()) + pdf_mode = lexrc.GetBool(); + break; case RC_LATEX_COMMAND: if (lexrc.next()) latex_command = lexrc.GetString(); break; + + case RC_PDFLATEX_COMMAND: + if (lexrc.next()) + pdflatex_command = lexrc.GetString(); + break; + + case RC_PDF_TO_PS_COMMAND: + if (lexrc.next()) + pdf_to_ps_command = lexrc.GetString(); + break; + + case RC_DVI_TO_PS_COMMAND: + if (lexrc.next()) + dvi_to_ps_command = lexrc.GetString(); + break; case RC_LITERATE_COMMAND: if (lexrc.next()) @@ -568,6 +607,11 @@ int LyXRC::read(string const & filename) if (lexrc.next()) view_dvi_command = lexrc.GetString(); break; + + case RC_VIEWPDF_COMMAND: + if (lexrc.next()) + view_pdf_command = lexrc.GetString(); + break; case RC_PS_COMMAND: if (lexrc.next()) @@ -853,6 +897,10 @@ int LyXRC::read(string const & filename) if (lexrc.next()) isp_esc_chars = lexrc.GetString(); break; + case RC_MAKE_BACKUP: + if (lexrc.next()) + make_backup = lexrc.GetBool(); + break; case RC_LAST: break; // this is just a dummy } } @@ -967,8 +1015,16 @@ void LyXRC::output(ostream & os) const case RC_CUSTOM_EXPORT_FORMAT: os << "\\custom_export_format \"" << custom_export_format << "\"\n"; + case RC_PDF_MODE: + os << "\\pdf_mode " << tostr(pdf_mode) << "\n"; case RC_LATEX_COMMAND: os << "\\latex_command \"" << latex_command << "\"\n"; + case RC_PDFLATEX_COMMAND: + os << "\\pdflatex_command \"" << pdflatex_command << "\"\n"; + case RC_PDF_TO_PS_COMMAND: + os << "\\pdf_to_ps_command \"" << pdf_to_ps_command << "\"\n"; + case RC_DVI_TO_PS_COMMAND: + os << "\\dvi_to_ps_command \"" << dvi_to_ps_command << "\"\n"; case RC_LITERATE_COMMAND: os << "\\literate_command \"" << literate_command << "\"\n"; case RC_LITERATE_EXTENSION: @@ -1014,6 +1070,8 @@ void LyXRC::output(ostream & os) const << "\n"; case RC_VIEWDVI_COMMAND: os << "\\view_dvi_command \"" << view_dvi_command << "\"\n"; + case RC_VIEWPDF_COMMAND: + os << "\\view_pdf_command \"" << view_pdf_command << "\"\n"; case RC_DEFAULT_PAPERSIZE: os << "\\default_papersize \""; switch (default_papersize) { @@ -1131,6 +1189,8 @@ void LyXRC::output(ostream & os) const os << "\\personal_dictionary \"" << isp_pers_dict << "\"\n"; case RC_ESC_CHARS: os << "\\escape_chars \"" << isp_esc_chars << "\"\n"; + case RC_MAKE_BACKUP: + os << "\\make_backup " << tostr(make_backup) << "\n"; } os.flush(); } diff --git a/src/lyxrc.h b/src/lyxrc.h index 551fd9278d..39ec35024c 100644 --- a/src/lyxrc.h +++ b/src/lyxrc.h @@ -78,8 +78,16 @@ public: string custom_export_command; /// string custom_export_format; + /// + bool pdf_mode; /// program for running latex string latex_command; + /// + string pdflatex_command; + /// + string pdf_to_ps_command; + /// + string dvi_to_ps_command; /// program for performing literate programming string literate_command; string literate_extension; @@ -97,6 +105,8 @@ public: string view_pspic_command; /// program for viewing dvi output (default "xdvi") string view_dvi_command; + /// program for viewing pdf output (default "xpdf") + string view_pdf_command; /// default paper size for local xdvi/dvips/ghostview/whatever BufferParams::PAPER_SIZE default_papersize; /// command to run chktex incl. options @@ -121,6 +131,8 @@ public: string lastfiles; /// maximal number of lastfiles unsigned int num_lastfiles; + /// shall a backup file be created + bool make_backup; /// Zoom factor for screen fonts unsigned int zoom; /// Screen font sizes in points for each font size diff --git a/src/paragraph.C b/src/paragraph.C index 624da6f16c..2bb18268d0 100644 --- a/src/paragraph.C +++ b/src/paragraph.C @@ -45,7 +45,7 @@ extern LyXRC * lyxrc; // ale970405 extern string bibitemWidthest(); -/* this is a minibuffer */ +// this is a minibuffer static char minibuffer_char; static LyXFont minibuffer_font; static Inset * minibuffer_inset; @@ -66,8 +66,10 @@ LyXParagraph::LyXParagraph() itemdepth = 0; next = 0; previous = 0; -#ifndef NEW_TABLE +#ifndef NEW_FONTTABLE // OK fonttable = 0; +#endif +#ifndef NEW_INSETTABLE insettable = 0; #endif footnoteflag = LyXParagraph::NO_FOOTNOTE; @@ -83,7 +85,7 @@ LyXParagraph::LyXParagraph() } -/* this konstruktor inserts the new paragraph in a list */ +// This konstruktor inserts the new paragraph in a list. LyXParagraph::LyXParagraph(LyXParagraph * par) { text.reserve(500); @@ -98,8 +100,10 @@ LyXParagraph::LyXParagraph(LyXParagraph * par) next->previous = this; previous = par; previous->next = this; -#ifndef NEW_TABLE +#ifndef NEW_FONTTABLE // OK fonttable = 0; +#endif +#ifndef NEW_INSETTABLE insettable = 0; #endif footnoteflag = LyXParagraph::NO_FOOTNOTE; @@ -129,7 +133,7 @@ void LyXParagraph::writeFile(ostream & os, BufferParams & params, || !previous || previous->footnoteflag == LyXParagraph::NO_FOOTNOTE){ - /* The beginning or the end of a footnote environment? */ + // The beginning or the end of a footnote environment? if (footflag != footnoteflag) { footflag = footnoteflag; if (footflag) { @@ -142,7 +146,7 @@ void LyXParagraph::writeFile(ostream & os, BufferParams & params, } } - /* The beginning or end of a deeper (i.e. nested) area? */ + // The beginning or end of a deeper (i.e. nested) area? if (dth != depth) { if (depth > dth) { while (depth > dth) { @@ -158,12 +162,12 @@ void LyXParagraph::writeFile(ostream & os, BufferParams & params, } } - /* First write the layout */ + // First write the layout os << "\n\\layout " << textclasslist.NameOfLayout(params.textclass, layout) << "\n"; - /* maybe some vertical spaces */ + // Maybe some vertical spaces. if (added_space_top.kind() != VSpace::NONE) os << "\\added_space_top " << added_space_top.asLyXCommand() << " "; @@ -171,32 +175,32 @@ void LyXParagraph::writeFile(ostream & os, BufferParams & params, os << "\\added_space_bottom " << added_space_bottom.asLyXCommand() << " "; - /* The labelwidth string used in lists */ + // The labelwidth string used in lists. if (!labelwidthstring.empty()) os << "\\labelwidthstring " << labelwidthstring << '\n'; - /* Lines above or below? */ + // Lines above or below? if (line_top) os << "\\line_top "; if (line_bottom) os << "\\line_bottom "; - /* Pagebreaks above or below? */ + // Pagebreaks above or below? if (pagebreak_top) os << "\\pagebreak_top "; if (pagebreak_bottom) os << "\\pagebreak_bottom "; - /* Start of appendix? */ + // Start of appendix? if (start_of_appendix) os << "\\start_of_appendix "; - /* Noindent? */ + // Noindent? if (noindent) os << "\\noindent "; - /* Alignment? */ + // Alignment? if (align != LYX_ALIGN_LAYOUT) { switch (align) { case LYX_ALIGN_LEFT: h = 1; break; @@ -229,12 +233,12 @@ void LyXParagraph::writeFile(ostream & os, BufferParams & params, } } else { - /* Dummy layout. This means that a footnote ended */ + // Dummy layout. This means that a footnote ended. os << "\n\\end_float "; footflag = LyXParagraph::NO_FOOTNOTE; } - /* It might be a table */ + // It might be a table. if (table){ os << "\\LyXTable\n"; table->Write(os); @@ -338,7 +342,8 @@ void LyXParagraph::validate(LaTeXFeatures & features) // then the layouts features.layout[GetLayout()] = true; -#ifdef NEW_TABLE + // then the fonts +#ifdef NEW_FONTTABLE // OK, but does not affect structure anyway for (FontList::const_iterator cit = fontlist.begin(); cit != fontlist.end(); ++cit) { if ((*cit).font.noun() == LyXFont::ON) { @@ -353,7 +358,8 @@ void LyXParagraph::validate(LaTeXFeatures & features) switch ((*cit).font.color()) { case LyXFont::NONE: case LyXFont::INHERIT_COLOR: - case LyXFont::IGNORE_COLOR: break; + case LyXFont::IGNORE_COLOR: + break; default: features.color = true; lyxerr[Debug::LATEX] << "Color enabled. Font: " @@ -362,7 +368,6 @@ void LyXParagraph::validate(LaTeXFeatures & features) } } #else - // then the fonts FontTable * tmpfonttable = fonttable; while (tmpfonttable) { if (tmpfonttable->font.noun() == LyXFont::ON) { @@ -388,13 +393,14 @@ void LyXParagraph::validate(LaTeXFeatures & features) tmpfonttable = tmpfonttable->next; } #endif -#ifdef NEW_TABLE + // then the insets +#ifdef NEW_INSETTABLE for (InsetList::const_iterator cit = insetlist.begin(); cit != insetlist.end(); ++cit) { - (*cit).inset->Validate(features); + if ((*cit).inset) + (*cit).inset->Validate(features); } #else - // then the insets InsetTable * tmpinsettable = insettable; while (tmpinsettable) { if (tmpinsettable->inset) { @@ -403,6 +409,7 @@ void LyXParagraph::validate(LaTeXFeatures & features) tmpinsettable = tmpinsettable->next; } #endif + if (table && table->IsLongTable()) features.longtable = true; if (pextra_type == PEXTRA_INDENT) @@ -422,7 +429,7 @@ void LyXParagraph::validate(LaTeXFeatures & features) } -/* first few functions needed for cut and paste and paragraph breaking */ +// First few functions needed for cut and paste and paragraph breaking. void LyXParagraph::CopyIntoMinibuffer(LyXParagraph::size_type pos) const { minibuffer_char = GetChar(pos); @@ -450,21 +457,22 @@ void LyXParagraph::CutIntoMinibuffer(LyXParagraph::size_type pos) // This is a little hack since I want exactly // the inset, not just a clone. Otherwise // the inset would be deleted when calling Erase(pos) -#ifdef NEW_TABLE + // find the entry +#ifdef NEW_INSETTABLE for (InsetList::iterator it = insetlist.begin(); it != insetlist.end(); ++it) { if ((*it).pos == pos) { (*it).inset = 0; break; } + } #else - /* find the entry */ InsetTable * tmpi = insettable; while (tmpi && tmpi->pos != pos) { tmpi= tmpi->next; } - if (tmpi) { /* This should always be true */ + if (tmpi) { // This should always be true. tmpi->inset = 0; } #endif @@ -476,7 +484,7 @@ void LyXParagraph::CutIntoMinibuffer(LyXParagraph::size_type pos) } - /* Erase(pos); now the caller is responsible for that*/ + // Erase(pos); now the caller is responsible for that. } @@ -488,7 +496,7 @@ void LyXParagraph::InsertFromMinibuffer(LyXParagraph::size_type pos) InsertInset(pos, minibuffer_inset); } -/* end of minibuffer */ +// end of minibuffer @@ -523,7 +531,7 @@ void LyXParagraph::Clear() } -/* the destructor removes the new paragraph from the list */ +// the destructor removes the new paragraph from the list LyXParagraph::~LyXParagraph() { if (previous) @@ -531,7 +539,12 @@ LyXParagraph::~LyXParagraph() if (next) next->previous = previous; -#ifndef NEW_TABLE +#ifdef NEW_INSETTABLE + for (InsetList::iterator it = insetlist.begin(); + it != insetlist.end(); ++it) { + delete (*it).inset; + } +#else InsetTable * tmpinset; while (insettable) { tmpinset = insettable; @@ -550,7 +563,8 @@ LyXParagraph::~LyXParagraph() break; } } - +#endif +#ifndef NEW_FONTTABLE // OK FontTable * tmpfont; while (fonttable) { tmpfont = fonttable; @@ -572,8 +586,8 @@ LyXParagraph::~LyXParagraph() void LyXParagraph::Erase(LyXParagraph::size_type pos) { - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want if (pos > size()) { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) NextAfterFootnote()->Erase(pos - text.size() - 1); @@ -583,28 +597,24 @@ void LyXParagraph::Erase(LyXParagraph::size_type pos) return; } if (pos < size()) { // last is free for insertation, but should be empty -#ifdef NEW_TABLE - /* if it is an inset, delete the inset entry */ + // if it is an inset, delete the inset entry if (text[pos] == LyXParagraph::META_INSET) { - /* find the entry */ - for(InsetList::iterator it = insetlist.begin(); - it != insetlist.end(); ++it) { + // find the entry +#ifdef NEW_INSETTABLE + for (InsetList::iterator it = insetlist.begin(); + it != insetlist.end(); ++it) { if ((*it).pos == pos) { delete (*it).inset; insetlist.erase(it); break; } } - } #else - /* if it is an inset, delete the inset entry */ - if (text[pos] == LyXParagraph::META_INSET) { - /* find the entry */ InsetTable *tmpi = insettable; InsetTable *tmpi2 = tmpi; while (tmpi && tmpi->pos != pos) { - tmpi2= tmpi; - tmpi= tmpi->next; + tmpi2 = tmpi; + tmpi = tmpi->next; } if (tmpi) { // this should always be true if (tmpi->inset) // delete the inset if it exists @@ -615,38 +625,33 @@ void LyXParagraph::Erase(LyXParagraph::size_type pos) tmpi2->next = tmpi->next; delete tmpi; } - } #endif + } text.erase(text.begin() + pos); -#ifdef NEW_TABLE - /* erase entries in the tables */ - for(FontList::iterator it = fontlist.begin(); - it != fontlist.end(); ++it) { + // Erase entries in the tables. +#ifdef NEW_FONTTABLE // Seems OK + for (FontList::iterator it = fontlist.begin(); + it != fontlist.end(); ++it) { if (pos >= (*it).pos && pos <= (*it).pos_end) { if ((*it).pos == (*it).pos_end) { + // If it is a multi-character font + // entry, we just make it smaller + // (see update below), otherwise we + // should delete it. fontlist.erase(it); break; } } } - - /* update all other entries */ - for(FontList::iterator it = fontlist.begin(); - it != fontlist.end(); ++it) { + // Update all other entries. + for (FontList::iterator it = fontlist.begin(); + it != fontlist.end(); ++it) { if ((*it).pos > pos) (*it).pos--; if ((*it).pos_end >= pos) (*it).pos_end--; } - - /* update the inset table */ - for(InsetList::iterator it = insetlist.begin(); - it != insetlist.end(); ++it) { - if ((*it).pos > pos) - (*it).pos--; - } #else - /* erase entries in the tables */ int found = 0; FontTable * tmp = fonttable; FontTable * prev = 0; @@ -660,9 +665,9 @@ void LyXParagraph::Erase(LyXParagraph::size_type pos) } if (found && tmp->pos == tmp->pos_end) { - /* if it is a multi-character font entry, we just make - * it smaller (see update below), otherwise we should - * delete it */ + // if it is a multi-character font entry, we just make + // it smaller (see update below), otherwise we should + // delete it if (prev) prev->next = tmp->next; else @@ -671,7 +676,7 @@ void LyXParagraph::Erase(LyXParagraph::size_type pos) delete tmp; } - /* update all other entries */ + // Update all other entries. tmp = fonttable; while (tmp) { @@ -681,15 +686,22 @@ void LyXParagraph::Erase(LyXParagraph::size_type pos) tmp->pos_end--; tmp = tmp->next; } - - /* update the inset table */ +#endif + // Update the inset table. +#ifdef NEW_INSETTABLE + for (InsetList::iterator it = insetlist.begin(); + it != insetlist.end(); ++it) { + if ((*it).pos > pos) + (*it).pos--; + } +#else InsetTable * tmpi = insettable; while (tmpi) { if (tmpi->pos > pos) tmpi->pos--; tmpi= tmpi->next; } -#endif +#endif } else { lyxerr << "ERROR (LyXParagraph::Erase): " "can't erase non-existant char." << endl; @@ -699,8 +711,8 @@ void LyXParagraph::Erase(LyXParagraph::size_type pos) void LyXParagraph::InsertChar(LyXParagraph::size_type pos, char c) { - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want if (pos > size()) { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) @@ -712,23 +724,16 @@ void LyXParagraph::InsertChar(LyXParagraph::size_type pos, char c) return; } text.insert(text.begin() + pos, c); -#ifdef NEW_TABLE - // update the font table - for(FontList::iterator it = fontlist.begin(); - it != fontlist.end(); ++it) { + // Update the font table. +#ifdef NEW_FONTTABLE // Seems OK + for (FontList::iterator it = fontlist.begin(); + it != fontlist.end(); ++it) { if ((*it).pos >= pos) (*it).pos++; if ((*it).pos_end >= pos) (*it).pos_end++; } - // update the inset table - for(InsetList::iterator it = insetlist.begin(); - it != insetlist.end(); ++it) { - if ((*it).pos >= pos) - (*it).pos++; - } #else - /* update the font table */ FontTable * tmp = fonttable; while (tmp) { if (tmp->pos >= pos) @@ -737,8 +742,16 @@ void LyXParagraph::InsertChar(LyXParagraph::size_type pos, char c) tmp->pos_end++; tmp = tmp->next; } +#endif - /* update the inset table */ + // Update the inset table. +#ifdef NEW_INSETTABLE + for (InsetList::iterator it = insetlist.begin(); + it != insetlist.end(); ++it) { + if ((*it).pos >= pos) + (*it).pos++; + } +#else InsetTable * tmpi = insettable; while (tmpi) { if (tmpi->pos >= pos) @@ -752,8 +765,8 @@ void LyXParagraph::InsertChar(LyXParagraph::size_type pos, char c) void LyXParagraph::InsertInset(LyXParagraph::size_type pos, Inset * inset) { - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want if (pos > size()) { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) @@ -770,24 +783,22 @@ void LyXParagraph::InsertInset(LyXParagraph::size_type pos, return; } -#ifdef NEW_TABLE if (inset) { - InsetTable tmp; - tmp.pos = pos; - tmp.inset = inset; - insetlist.push_back(tmp); - } - + // Add a new entry in the inset table. +#ifdef NEW_INSETTABLE + InsetTable tmpi; + InsetList::iterator it = + insetlist.insert(insetlist.begin(), tmpi); + (*it).inset = inset; + (*it).pos = pos; #else - if (inset) { - /* add a new entry in the inset table */ InsetTable * tmpi = new InsetTable; tmpi->pos = pos; tmpi->inset = inset; tmpi->next = insettable; insettable = tmpi; - } #endif + } } @@ -805,24 +816,23 @@ Inset * LyXParagraph::GetInset(LyXParagraph::size_type pos) } return 0; } -#ifdef NEW_TABLE - /* find the inset */ - for(InsetList::iterator it = insetlist.begin(); - it != insetlist.end(); ++it) { + // Find the inset. +#ifdef NEW_INSETTABLE + for (InsetList::iterator it = insetlist.begin(); + it != insetlist.end(); ++it) { if ((*it).pos == pos) { return (*it).inset; } } lyxerr << "ERROR (LyXParagraph::GetInset): " "Inset does not exist: " << pos << endl; - text[pos] = ' '; /// WHY!!! does this set the pos to ' '???? + text[pos] = ' '; // WHY!!! does this set the pos to ' '???? // Did this commenting out introduce a bug? So far I have not - // seen any, please enlighten me. (Lgb) + // see any, please enlighten me. (Lgb) // My guess is that since the inset does not exist, we might - // as well replace it with a space to prevent crashes. (Asger) + // as well replace it with a space to prevent craches. (Asger) return 0; #else - /* find the inset */ InsetTable * tmpi = insettable; while (tmpi && tmpi->pos != pos) @@ -858,24 +868,23 @@ Inset const * LyXParagraph::GetInset(LyXParagraph::size_type pos) const } return 0; } -#ifdef NEW_TABLE - /* find the inset */ - for(InsetList::const_iterator cit = insetlist.begin(); - cit != insetlist.end(); ++cit) { + // Find the inset. +#ifdef NEW_INSETTABLE + for (InsetList::const_iterator cit = insetlist.begin(); + cit != insetlist.end(); ++cit) { if ((*cit).pos == pos) { return (*cit).inset; } } lyxerr << "ERROR (LyXParagraph::GetInset): " "Inset does not exist: " << pos << endl; - text[pos] = ' '; /// WHY!!! does this set the pos to ' '???? + //text[pos] = ' '; // WHY!!! does this set the pos to ' '???? // Did this commenting out introduce a bug? So far I have not - // seen any, please enlighten me. (Lgb) + // see any, please enlighten me. (Lgb) // My guess is that since the inset does not exist, we might - // as well replace it with a space to prevent crashes. (Asger) + // as well replace it with a space to prevent craches. (Asger) return 0; #else - /* find the inset */ InsetTable * tmpi = insettable; while (tmpi && tmpi->pos != pos) @@ -903,11 +912,11 @@ Inset const * LyXParagraph::GetInset(LyXParagraph::size_type pos) const LyXFont LyXParagraph::GetFontSettings(LyXParagraph::size_type pos) const { if (pos < size()) { -#ifdef NEW_TABLE - for(FontList::iterator it = fontlist.begin(); - it != fontlist.end(); ++it) { - if (pos >= (*it).pos && pos <= (*it).pos_end) - return (*it).font; +#ifdef NEW_FONTTABLE // Seems OK + for (FontList::const_iterator cit = fontlist.begin(); + cit != fontlist.end(); ++cit) { + if (pos >= (*cit).pos && pos <= (*cit).pos_end) + return (*cit).font; } #else FontTable * tmp = fonttable; @@ -918,8 +927,8 @@ LyXFont LyXParagraph::GetFontSettings(LyXParagraph::size_type pos) const } #endif } - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want else if (pos > size()) { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) @@ -994,12 +1003,14 @@ LyXFont LyXParagraph::getFont(LyXParagraph::size_type pos) const /// Returns the height of the highest font in range -LyXFont::FONT_SIZE LyXParagraph::HighestFontInRange(LyXParagraph::size_type startpos, LyXParagraph::size_type endpos) const +LyXFont::FONT_SIZE +LyXParagraph::HighestFontInRange(LyXParagraph::size_type startpos, + LyXParagraph::size_type endpos) const { LyXFont::FONT_SIZE maxsize = LyXFont::SIZE_TINY; -#ifdef NEW_TABLE - for(FontList::const_iterator cit = fontlist.begin(); - cit != fontlist.end(); ++cit) { +#ifdef NEW_FONTTABLE // Seems OK + for (FontList::const_iterator cit = fontlist.begin(); + cit != fontlist.end(); ++cit) { if (startpos <= (*cit).pos_end && endpos >= (*cit).pos) { LyXFont::FONT_SIZE size = (*cit).font.size(); if (size > maxsize && size <= LyXFont::SIZE_HUGER) @@ -1023,13 +1034,13 @@ LyXFont::FONT_SIZE LyXParagraph::HighestFontInRange(LyXParagraph::size_type star char LyXParagraph::GetChar(LyXParagraph::size_type pos) { - Assert(pos>=0); + Assert(pos >= 0); if (pos < size()) { return text[pos]; } - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want else if (pos > size()) { if (next && next->footnoteflag != LyXParagraph::NO_FOOTNOTE) return NextAfterFootnote() @@ -1042,7 +1053,7 @@ char LyXParagraph::GetChar(LyXParagraph::size_type pos) } return '\0'; } else { - /* we should have a footnote environment */ + // We should have a footnote environment. if (!next || next->footnoteflag == LyXParagraph::NO_FOOTNOTE) { // Notice that LyX does request the // last char from time to time. (Asger) @@ -1071,13 +1082,13 @@ char LyXParagraph::GetChar(LyXParagraph::size_type pos) char LyXParagraph::GetChar(LyXParagraph::size_type pos) const { - Assert(pos>=0); + Assert(pos >= 0); if (pos < size()) { return text[pos]; } - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want else if (pos > size()) { if (next && next->footnoteflag != LyXParagraph::NO_FOOTNOTE) return NextAfterFootnote() @@ -1090,7 +1101,7 @@ char LyXParagraph::GetChar(LyXParagraph::size_type pos) const } return '\0'; } else { - /* we should have a footnote environment */ + // We should have a footnote environment. if (!next || next->footnoteflag == LyXParagraph::NO_FOOTNOTE) { // Notice that LyX does request the // last char from time to time. (Asger) @@ -1168,8 +1179,8 @@ LyXParagraph::size_type LyXParagraph::Last() const { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) return text.size() + NextAfterFootnote()->Last() + 1; - /* the 1 is the symbol - for the footnote */ + // the 1 is the symbol + // for the footnote else return text.size(); } @@ -1177,8 +1188,8 @@ LyXParagraph::size_type LyXParagraph::Last() const LyXParagraph * LyXParagraph::ParFromPos(LyXParagraph::size_type pos) { - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want if (pos > size()) { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) @@ -1196,8 +1207,8 @@ LyXParagraph * LyXParagraph::ParFromPos(LyXParagraph::size_type pos) int LyXParagraph::PositionInParFromPos(LyXParagraph::size_type pos) const { - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want if (pos > size()) { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) @@ -1217,8 +1228,8 @@ int LyXParagraph::PositionInParFromPos(LyXParagraph::size_type pos) const void LyXParagraph::SetFont(LyXParagraph::size_type pos, LyXFont const & font) { - /* > because last is the next unused position, and you can - * use it if you want */ + // > because last is the next unused position, and you can + // use it if you want if (pos > size()) { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) { NextAfterFootnote()->SetFont(pos - text.size() - 1, @@ -1231,99 +1242,116 @@ void LyXParagraph::SetFont(LyXParagraph::size_type pos, } LyXFont patternfont(LyXFont::ALL_INHERIT); -// First, reduce font against layout/label font -// Update: The SetCharFont() routine in text2.C already reduces font, so -// we don't need to do that here. (Asger) -// No need to simplify this because it will disappear in a new kernel. (Asger) -#ifdef NEW_TABLE + // First, reduce font against layout/label font + // Update: The SetCharFont() routine in text2.C already + // reduces font, so we don't need to do that here. (Asger) + // No need to simplify this because it will disappear + // in a new kernel. (Asger) // Next search font table - for(FontList::iterator it = fontlist.begin(); - it != fontlist.end(); ++it) { - if (pos >= (*it).pos && pos <= (*it).pos_end) { - // found it - // we found a font entry. maybe we have to - // split it and create a new one - - if ((*it).pos != (*it).pos_end) { - // more than one character - if (pos == (*it).pos) { - // maybe we could enlarge - // the left fonttable - for(FontList::iterator fit = fontlist.begin(); - fit != fontlist.end(); ++fit) { - if (pos - 1 >= (*fit).pos - && pos - 1 <= (*fit).pos_end - && (*fit).font == font) { - // put the position - // under the font - (*fit).pos_end++; - (*it).pos++; - return; - } - } - // Add a new entry in the - // fonttable for the position - FontTable tmp; - tmp.pos = pos + 1; - tmp.pos_end = (*it).pos_end; - tmp.font = (*it).font; - (*it).pos_end = pos; - fontlist.push_back(tmp); - } else if (pos == (*it).pos_end) { - // Add a new entry in the - // fonttable for the position - FontTable tmp; - tmp.pos = (*it).pos; - tmp.pos_end = (*it).pos_end - 1; - tmp.font = (*it).font; - (*it).pos = (*it).pos_end; - fontlist.push_back(tmp); - } else { - // Add a new entry in the - // fonttable for the position - FontTable tmp; - tmp.pos = (*it).pos; - tmp.pos_end = pos - 1; - tmp.font = (*it).font; - fontlist.push_back(tmp); - - tmp.pos = pos + 1; - tmp.pos_end = (*it).pos_end; - tmp.font = (*it).font; - fontlist.push_back(tmp); - - (*it).pos = pos; - (*it).pos_end = pos; - } - } - (*it).font = font; - return; +#ifdef NEW_FONTTABLE + FontList::iterator tmp = fontlist.begin(); + for (; tmp != fontlist.end(); ++tmp) { + if (pos >= (*tmp).pos && pos <= (*tmp).pos_end) { + break; } } - - // if we did not find a font entry, but if the font at hand - // is the same as default, we just forget it - if (font == patternfont) return; - - // ok, we did not find a font entry. But maybe there is exactly - // the needed font entry one position left - for(FontList::iterator it = fontlist.begin(); - it != fontlist.end(); ++it) { - if (pos - 1 >= (*it).pos && pos - 1 <= (*it).pos_end - && (*it).font == font) { - (*it).pos_end++; - return; + if (tmp == fontlist.end()) { // !found + // if we did not find a font entry, but if the font at hand + // is the same as default, we just forget it + if (font == patternfont) return; + + // ok, we did not find a font entry. But maybe there is exactly + // the needed font ientry one position left + FontList::iterator tmp2 = fontlist.begin(); + for (; tmp2 != fontlist.end(); ++tmp2) { + if (pos - 1 >= (*tmp2).pos + && pos - 1 <= (*tmp2).pos_end) + break; + } + if (tmp2 != fontlist.end()) { + // ok there is one, maybe it is exactly + // the needed font + if ((*tmp2).font == font) { + // put the position under the font + (*tmp2).pos_end++; + return; + } + } + // Add a new entry in the + // fontlist for the position + FontTable ft; + ft.pos = pos; + ft.pos_end = pos; + ft.font = font; // or patternfont + // It seems that using font instead of patternfont here + // fixes all the problems. This also surfaces a "bug" in + // the old code. + fontlist.insert(fontlist.begin(), ft); + } else if ((*tmp).pos != (*tmp).pos_end) { // we found a font entry. maybe we have to split it and create a new one. + +// more than one character + if (pos == (*tmp).pos) { + // maybe we should enlarge the left fonttable + FontList::iterator tmp2 = fontlist.begin(); + for (; tmp2 != fontlist.end(); ++tmp2) { + if (pos - 1 >= (*tmp2).pos + && pos - 1 <= (*tmp2).pos_end) + break; + } + // Is there is one, and is it exactly + // the needed font? + if (tmp2 != fontlist.end() && + (*tmp2).font == font) { + // Put the position under the font + (*tmp2).pos_end++; + (*tmp).pos++; + return; + } + + // Add a new entry in the + // fontlist for the position + FontTable ft; + ft.pos = pos + 1; + ft.pos_end = (*tmp).pos_end; + ft.font = (*tmp).font; + (*tmp).pos_end = pos; + (*tmp).font = font; + fontlist.insert(fontlist.begin(), ft); + } else if (pos == (*tmp).pos_end) { + // Add a new entry in the + // fontlist for the position + FontTable ft; + ft.pos = (*tmp).pos; + ft.pos_end = (*tmp).pos_end - 1; + ft.font = (*tmp).font; + (*tmp).pos = (*tmp).pos_end; + (*tmp).font = font; + fontlist.insert(fontlist.begin(), ft); + } else { + // Add a new entry in the + // fontlist for the position + FontTable ft; + ft.pos = (*tmp).pos; + ft.pos_end = pos - 1; + ft.font = (*tmp).font; + + FontTable ft2; + ft2.pos = pos + 1; + ft2.pos_end = (*tmp).pos_end; + ft2.font = (*tmp).font; + + (*tmp).pos = pos; + (*tmp).pos_end = pos; + (*tmp).font = font; + + fontlist.insert(fontlist.begin(), ft); + fontlist.insert(fontlist.begin(), ft2); } + } else { + (*tmp).font = font; } - // Add a new entry in the - // fonttable for the position - FontTable tmp; - tmp.pos = pos; - tmp.pos_end = pos; - tmp.font = patternfont; - fontlist.push_back(tmp); + #else - // Next search font table FontTable * tmp2; bool found = false; @@ -1336,13 +1364,13 @@ void LyXParagraph::SetFont(LyXParagraph::size_type pos, } if (!found) { - /* if we did not find a font entry, but if the font at hand - * is the same as default, we just forget it */ + // if we did not find a font entry, but if the font at hand + // is the same as default, we just forget it if (font == patternfont) return; - /* ok, we did not find a font entry. But maybe there is exactly - * the needed font entry one position left */ + // ok, we did not find a font entry. But maybe there is exactly + // the needed font entry one position left found = false; tmp2 = fonttable; while (tmp2 && !found) { @@ -1352,30 +1380,33 @@ void LyXParagraph::SetFont(LyXParagraph::size_type pos, tmp2 = tmp2->next; } if (found) { - /* ok there is one. maybe it is exactly the needed font */ + // ok there is one. maybe it is exactly + // the needed font if (tmp2->font == font) { - /* put the position under the font */ + // put the position under the font tmp2->pos_end++; return; } } - /* Add a new entry in the - * fonttable for the position */ + // Add a new entry in the + // fonttable for the position tmp = new FontTable; tmp->pos = pos; tmp->pos_end = pos; - tmp->font = patternfont; + tmp->font = patternfont; // It seems that is actually totally + // wrong to use patternfont here, the correct should be font + // lockily at the end of this function we have + // tmp->font = font, so this one setting it to patternfont + // is negated. tmp->next = fonttable; fonttable = tmp; } else { - /* we found a font entry. maybe we have to split it and create - * a new one */ - - if (tmp->pos != tmp->pos_end) { /* more than one character */ + // we found a font entry. maybe we have + // to split it and create a new one + if (tmp->pos != tmp->pos_end) { // more than one character if (pos == tmp->pos) { - /* maybe we could enlarge the left fonttable */ - + // maybe we could enlarge the left fonttable found = false; tmp2 = fonttable; while (tmp2 && !found) { @@ -1385,16 +1416,17 @@ void LyXParagraph::SetFont(LyXParagraph::size_type pos, tmp2 = tmp2->next; } - /* Is there is one, and is it exactly the needed font? */ + // Is there is one, and is it exactly + // the needed font? if (found && tmp2->font == font) { - /* put the position under the font */ + // Put the position under the font tmp2->pos_end++; tmp->pos++; return; } - /* Add a new entry in the - * fonttable for the position */ + // Add a new entry in the + // fonttable for the position tmp2 = new FontTable; tmp2->pos = pos + 1; tmp2->pos_end = tmp->pos_end; @@ -1404,8 +1436,8 @@ void LyXParagraph::SetFont(LyXParagraph::size_type pos, fonttable = tmp2; } else if (pos == tmp->pos_end) { - /* Add a new entry in the - * fonttable for the position */ + // Add a new entry in the + // fonttable for the position tmp2 = new FontTable; tmp2->pos = tmp->pos; tmp2->pos_end = tmp->pos_end - 1; @@ -1415,8 +1447,8 @@ void LyXParagraph::SetFont(LyXParagraph::size_type pos, fonttable = tmp2; } else { - /* Add a new entry in the - * fonttable for the position */ + // Add a new entry in the + // fonttable for the position tmp2 = new FontTable; tmp2->pos = tmp->pos; tmp2->pos_end = pos - 1; @@ -1441,7 +1473,7 @@ void LyXParagraph::SetFont(LyXParagraph::size_type pos, } -/* this function is able to hide closed footnotes */ +// This function is able to hide closed footnotes. LyXParagraph * LyXParagraph::Next() { if (next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) { @@ -1454,7 +1486,7 @@ LyXParagraph * LyXParagraph::Next() footnote in a logical paragraph */ else - return next; /* this should never happen! */ + return next; // This should never happen! } else return next; @@ -1471,7 +1503,7 @@ LyXParagraph * LyXParagraph::NextAfterFootnote() return tmp; /* there can be more than one footnote in a logical paragraph */ else - return next; /* this should never happen! */ + return next; // This should never happen! } else return next; @@ -1488,7 +1520,7 @@ LyXParagraph const * LyXParagraph::NextAfterFootnote() const return tmp; /* there can be more than one footnote in a logical paragraph */ else - return next; /* this should never happen! */ + return next; // This should never happen! } else return next; @@ -1506,7 +1538,7 @@ LyXParagraph * LyXParagraph::PreviousBeforeFootnote() return tmp; /* there can be more than one footnote in a logical paragraph */ else - return previous; /* this should never happen! */ + return previous; // This should never happen! } else return previous; @@ -1539,7 +1571,7 @@ LyXParagraph * LyXParagraph::FirstPhysicalPar() tmppar = tmppar->previous; if (!tmppar) - return this; /* this should never happen! */ + return this; // This should never happen! else return tmppar; } @@ -1556,13 +1588,13 @@ LyXParagraph const * LyXParagraph::FirstPhysicalPar() const tmppar = tmppar->previous; if (!tmppar) - return this; /* this should never happen! */ + return this; // This should never happen! else return tmppar; } -/* this function is able to hide closed footnotes */ +// This function is able to hide closed footnotes. LyXParagraph * LyXParagraph::Previous() { LyXParagraph * tmp = previous; @@ -1586,7 +1618,7 @@ LyXParagraph * LyXParagraph::Previous() } -/* this function is able to hide closed footnotes */ +// This function is able to hide closed footnotes. LyXParagraph const * LyXParagraph::Previous() const { LyXParagraph * tmp = previous; @@ -1614,7 +1646,7 @@ void LyXParagraph::BreakParagraph(LyXParagraph::size_type pos, int flag) { size_type i, pos_end, pos_first; - /* create a new paragraph */ + // create a new paragraph LyXParagraph * par = ParFromPos(pos); LyXParagraph * firstpar = FirstPhysicalPar(); @@ -1623,10 +1655,10 @@ void LyXParagraph::BreakParagraph(LyXParagraph::size_type pos, tmp->footnoteflag = footnoteflag; tmp->footnotekind = footnotekind; - /* this is an idea for a more userfriendly layout handling, I will - * see what the users say */ + // this is an idea for a more userfriendly layout handling, I will + // see what the users say */ - /* layout stays the same with latex-environments */ + // layout stays the same with latex-environments if (flag) { tmp->SetOnlyLayout(firstpar->layout); tmp->SetLabelWidthString(firstpar->labelwidthstring); @@ -1647,9 +1679,8 @@ void LyXParagraph::BreakParagraph(LyXParagraph::size_type pos, tmp->depth = firstpar->depth; tmp->noindent = firstpar->noindent; - /* copy everything behind the break-position - to the new paragraph - */ + // copy everything behind the break-position + // to the new paragraph pos_first = 0; while (ParFromPos(pos_first) != par) pos_first++; @@ -1668,14 +1699,14 @@ void LyXParagraph::BreakParagraph(LyXParagraph::size_type pos, par->text.resize(par->text.size()); } - /* just an idea of me */ + // just an idea of me if (!pos) { tmp->line_top = firstpar->line_top; tmp->pagebreak_top = firstpar->pagebreak_top; tmp->added_space_top = firstpar->added_space_top; tmp->bibkey = firstpar->bibkey; firstpar->Clear(); - /* layout stays the same with latex-environments */ + // layout stays the same with latex-environments if (flag) { firstpar->SetOnlyLayout(tmp->layout); firstpar->SetLabelWidthString(tmp->labelwidthstring); @@ -1726,7 +1757,7 @@ LyXParagraph * LyXParagraph::FirstSelfrowPar() tmppar = tmppar->previous; if (!tmppar) - return this; /* this should never happen! */ + return this; // This should never happen! else return tmppar; } @@ -1734,13 +1765,13 @@ LyXParagraph * LyXParagraph::FirstSelfrowPar() LyXParagraph * LyXParagraph::Clone() const { - /* create a new paragraph */ + // create a new paragraph LyXParagraph * result = new LyXParagraph; result->MakeSameLayout(this); - /* this is because of the dummy layout of the paragraphs that - follow footnotes */ + // this is because of the dummy layout of the paragraphs that + // follow footnotes result->layout = layout; /* table stuff -- begin*/ @@ -1754,7 +1785,7 @@ LyXParagraph * LyXParagraph::Clone() const result->bibkey = (bibkey) ? new InsetBibKey(bibkey): 0; - /* copy everything behind the break-position to the new paragraph */ + // copy everything behind the break-position to the new paragraph for (size_type i = 0; i < size(); i++) { CopyIntoMinibuffer(i); @@ -1803,25 +1834,25 @@ void LyXParagraph::BreakParagraphConservative(LyXParagraph::size_type pos) { size_type i, pos_end, pos_first; - /* create a new paragraph */ + // create a new paragraph LyXParagraph * par = ParFromPos(pos); LyXParagraph * tmp = new LyXParagraph(par); tmp->MakeSameLayout(par); - if (Last() > pos) { - /* copy everything behind the break-position to the new - paragraph */ + if (Last() > pos) { + // copy everything behind the break-position to the new + // paragraph pos_first = 0; while (ParFromPos(pos_first) != par) pos_first++; pos_end = pos_first + par->text.size() - 1; - /* make shure there is enough memory for the now larger - paragraph. This is not neccessary, because - InsertFromMinibuffer will enlarge the memory (it uses - InsertChar of course). But doing it by hand - is MUCH faster! (only one time, not thousend times!!) */ + // make shure there is enough memory for the now larger + // paragraph. This is not neccessary, because + // InsertFromMinibuffer will enlarge the memory (it uses + // InsertChar of course). But doing it by hand + // is MUCH faster! (only one time, not thousend times!!) tmp->text.reserve(pos_end - pos); for (i = pos; i <= pos_end; i++) { @@ -1837,15 +1868,15 @@ void LyXParagraph::BreakParagraphConservative(LyXParagraph::size_type pos) } -/* be carefull, this does not make any check at all */ +// Be carefull, this does not make any check at all. void LyXParagraph::PasteParagraph() { - /* copy the next paragraph to this one */ + // copy the next paragraph to this one LyXParagraph * the_next = Next(); LyXParagraph * firstpar = FirstPhysicalPar(); - /* first the DTP-stuff */ + // first the DTP-stuff firstpar->line_bottom = the_next->line_bottom; firstpar->added_space_bottom = the_next->added_space_bottom; firstpar->pagebreak_bottom = the_next->pagebreak_bottom; @@ -1854,13 +1885,13 @@ void LyXParagraph::PasteParagraph() size_type pos_insert = Last(); size_type i; - /* ok, now copy the paragraph */ + // ok, now copy the paragraph for (i = 0; i <= pos_end; i++) { the_next->CutIntoMinibuffer(i); InsertFromMinibuffer(pos_insert + i); } - /* delete the next paragraph */ + // delete the next paragraph delete the_next; } @@ -1917,7 +1948,7 @@ int LyXParagraph::GetFirstCounter(int i) const } -/* the next two functions are for the manual labels */ +// the next two functions are for the manual labels string LyXParagraph::GetLabelWidthString() const { if (!FirstPhysicalPar()->labelwidthstring.empty()) @@ -2030,12 +2061,12 @@ void LyXParagraph::SetLayout(LyXTextClass::LayoutList::size_type new_layout) } -/* if the layout of a paragraph contains a manual label, the beginning of the -* main body is the beginning of the second word. This is what the par- -* function returns. If the layout does not contain a label, the main -* body always starts with position 0. This differentiation is necessary, -* because there cannot be a newline or a blank <= the beginning of the -* main body in TeX. */ +// if the layout of a paragraph contains a manual label, the beginning of the +// main body is the beginning of the second word. This is what the par- +// function returns. If the layout does not contain a label, the main +// body always starts with position 0. This differentiation is necessary, +// because there cannot be a newline or a blank <= the beginning of the +// main body in TeX. int LyXParagraph::BeginningOfMainBody() const { @@ -2117,15 +2148,20 @@ LyXParagraph const * LyXParagraph::DepthHook(int deth) const int LyXParagraph::AutoDeleteInsets() { -#ifdef NEW_TABLE +#ifdef NEW_INSETTABLE + vector tmpvec; int i = 0; for (InsetList::iterator it = insetlist.begin(); it != insetlist.end(); ++it) { - if ((*it).inset->AutoDelete()) { + if ((*it).inset && (*it).inset->AutoDelete()) { + tmpvec.push_back((*it).pos); ++i; - Erase((*it).pos); } } + for (vector::const_iterator cit = tmpvec.begin(); + cit != tmpvec.end(); ++cit) { + Erase((*cit)); + } return i; #else InsetTable * tmpi = insettable; @@ -2134,14 +2170,15 @@ int LyXParagraph::AutoDeleteInsets() while (tmpi) { tmpi2 = tmpi; tmpi = tmpi->next; - if (tmpi2->inset) + if (tmpi2->inset) { if (tmpi2->inset->AutoDelete()) { i++; Erase(tmpi2->pos); - } else {} - else + } + } else { lyxerr << "ERROR (LyXParagraph::AutoDeleteInsets): " "cannot auto-delete insets" << endl; + } } return i; #endif @@ -2150,20 +2187,20 @@ int LyXParagraph::AutoDeleteInsets() Inset * LyXParagraph::ReturnNextInsetPointer(LyXParagraph::size_type & pos) { -#ifdef NEW_TABLE - InsetTable * tmp = 0; +#ifdef NEW_INSETTABLE + InsetList::iterator it2 = insetlist.end(); for (InsetList::iterator it = insetlist.begin(); it != insetlist.end(); ++it) { - if ((*it).pos >= pos && (!tmp || (*it).pos < tmp->pos)) { - tmp = &(*it); + if ((*it).pos >= pos) { + if (it2 != insetlist.end() || (*it).pos < (*it2).pos) + it2 = it; } } - if (tmp) { - pos = tmp->pos; - return tmp->inset; + if (it2 != insetlist.end()) { + pos = (*it2).pos; + return (*it2).inset; } return 0; - #else InsetTable * tmpi = insettable; InsetTable * tmpi2 = 0; @@ -2184,44 +2221,34 @@ Inset * LyXParagraph::ReturnNextInsetPointer(LyXParagraph::size_type & pos) } -/* returns -1 if inset not found */ +// returns -1 if inset not found int LyXParagraph::GetPositionOfInset(Inset * inset) const { -#ifdef NEW_TABLE - for (InsetList::iterator it = insetlist.begin(); - it != insetlist.end(); ++it) { - if ((*it).inset == inset) { - return (*it).pos; + // Find the entry. +#ifdef NEW_INSETTABLE + for (InsetList::const_iterator cit = insetlist.begin(); + cit != insetlist.end(); ++cit) { + if ((*cit).inset == inset) { + return (*cit).pos; } } - // Think about footnotes - if (footnoteflag == LyXParagraph::NO_FOOTNOTE - && next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) { - int further = NextAfterFootnote()->GetPositionOfInset(inset); - if (further != -1) - return size() + 1 + further; - } - return -1; #else - /* find the entry */ InsetTable * tmpi = insettable; while (tmpi && tmpi->inset != inset) { tmpi = tmpi->next; } if (tmpi && tmpi->inset) return tmpi->pos; - else{ - /* think about footnotes */ - if (footnoteflag == LyXParagraph::NO_FOOTNOTE - && next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) { - int further = - NextAfterFootnote()->GetPositionOfInset(inset); - if (further != -1) - return text.size() + 1 + further; - } - return -1; - } #endif + // Think about footnotes. + if (footnoteflag == LyXParagraph::NO_FOOTNOTE + && next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) { + int further = + NextAfterFootnote()->GetPositionOfInset(inset); + if (further != -1) + return text.size() + 1 + further; + } + return -1; } @@ -2414,7 +2441,7 @@ bool LyXParagraph::SimpleTeXOnePar(string & file, TexRow & texrow) LyXLayout const & style = textclasslist.Style(current_view->buffer()->params.textclass, GetLayout()); LyXFont basefont; - /* maybe we have to create a optional argument */ + // Maybe we have to create a optional argument. if (style.labeltype != LABEL_MANUAL) main_body = 0; else @@ -2568,7 +2595,7 @@ bool LyXParagraph::SimpleTeXOnePar(string & file, TexRow & texrow) running_font.latexWriteEndChanges(file, basefont); } - /* needed if there is an optional argument but no contents */ + // Needed if there is an optional argument but no contents. if (main_body > 0 && main_body == size()) { file += "]~"; return_value = false; @@ -2902,7 +2929,7 @@ bool LyXParagraph::linuxDocConvertChar(char c, string & sgml_string) retval = true; sgml_string = ' '; break; - case '\0': /* Ignore :-) */ + case '\0': // Ignore :-) sgml_string.clear(); break; default: @@ -2934,7 +2961,7 @@ void LyXParagraph::SimpleDocBookOneTablePar(string & file, string & extra, else main_body = BeginningOfMainBody(); - /* gets paragraph main font */ + // Gets paragraph main font. if (main_body > 0) font1 = style.labelfont; else @@ -2949,7 +2976,7 @@ void LyXParagraph::SimpleDocBookOneTablePar(string & file, string & extra, int current_cell_number = -1; int tmp = table->DocBookEndOfCell(file, current_cell_number, depth); - /* parsing main loop */ + // Parsing main loop. for (size_type i = 0; i < size(); ++i) { c = GetChar(i); if (table->IsContRow(current_cell_number+1)) { @@ -2962,7 +2989,7 @@ void LyXParagraph::SimpleDocBookOneTablePar(string & file, string & extra, // Fully instantiated font font2 = getFont(i); - /* handle tag */ + // Handle tag. if (font1.emph() != font2.emph() && i) { if (font2.emph() == LyXFont::ON) { file += ""; @@ -2973,7 +3000,7 @@ void LyXParagraph::SimpleDocBookOneTablePar(string & file, string & extra, } } if (c == LyXParagraph::META_NEWLINE) { - // we have only to control for emphasis open here! + // We have only to control for emphasis open here! if (emph_flag) { file += ""; emph_flag= false; @@ -3052,7 +3079,7 @@ void LyXParagraph::SimpleDocBookOneTablePar(string & file, string & extra, font1 = font2; } - /* needed if there is an optional argument but no contents */ + // Needed if there is an optional argument but no contents. if (main_body > 0 && main_body == size()) { font1 = style.font; } @@ -3063,10 +3090,10 @@ void LyXParagraph::SimpleDocBookOneTablePar(string & file, string & extra, current_cell_number++; tmp = table->DocBookEndOfCell(file, current_cell_number, depth); - /* resets description flag correctly */ + // Resets description flag correctly. switch(desc_on){ case 1: - /* not closed... */ + // not closed... file += ""; break; } @@ -3106,7 +3133,7 @@ void LyXParagraph::DocBookContTableRows(string & file, string & extra, else main_body = BeginningOfMainBody(); - /* gets paragraph main font */ + // Gets paragraph main font. if (main_body > 0) font1 = style.labelfont; else @@ -3143,7 +3170,7 @@ void LyXParagraph::DocBookContTableRows(string & file, string & extra, // Fully instantiated font font2 = getFont(i); - /* handle tag */ + // Handle tag. if (font1.emph() != font2.emph() && i) { if (font2.emph() == LyXFont::ON) { file += ""; @@ -3437,7 +3464,7 @@ void LyXParagraph::SimpleTeXSpecialChars(string & file, TexRow & texrow, break; case ' ': - /* blanks are printed before font switching */ + // Blanks are printed before font switching. // Sure? I am not! (try nice-latex) // I am sure it's correct. LyX might be smarter // in the future, but for now, nothing wrong is @@ -3446,7 +3473,7 @@ void LyXParagraph::SimpleTeXSpecialChars(string & file, TexRow & texrow, default: /* idea for labels --- begin*/ - /* check for LyX */ + // Check for "LyX" if (c == 'L' && i <= size() - 3 && font.family() != LyXFont::TYPEWRITER_FAMILY @@ -3456,7 +3483,7 @@ void LyXParagraph::SimpleTeXSpecialChars(string & file, TexRow & texrow, i += 2; column += 5; } - /* check for TeX */ + // Check for "TeX" else if (c == 'T' && i <= size() - 3 && font.family() != LyXFont::TYPEWRITER_FAMILY @@ -3466,7 +3493,7 @@ void LyXParagraph::SimpleTeXSpecialChars(string & file, TexRow & texrow, i += 2; column += 5; } - /* check for LaTeX2e */ + // Check for "LaTeX2e" else if (c == 'L' && i <= size() - 7 && font.family() != LyXFont::TYPEWRITER_FAMILY @@ -3480,7 +3507,7 @@ void LyXParagraph::SimpleTeXSpecialChars(string & file, TexRow & texrow, i += 6; column += 8; } - /* check for LaTeX */ + // Check for "LaTeX" else if (c == 'L' && i <= size() - 5 && font.family() != LyXFont::TYPEWRITER_FAMILY diff --git a/src/support/block.h b/src/support/block.h index 560cc76d9d..cfb67731bd 100644 --- a/src/support/block.h +++ b/src/support/block.h @@ -17,11 +17,6 @@ public: typedef T * iterator; typedef T const * const_iterator; size_type size() const { return s; } -#warning I disabled this to be able to compile... (JMarc) - // I think that, sor the same reason that string->char* is not - // automatic, we should have a c_array() method to do that. However, - // Lars, it is your choice... - // operator T* () { return arr; } reference at(int i) { Assert(i >= 0 && i < s); return arr[i]; -- 2.39.2