X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer.C;h=c42098707bacd16f6a317ccef77d38358371ece2;hb=a393cfc37c978985f534f9f00bdbbcfed07b3731;hp=873d135c900642536a6e699f190ab2c129fbb490;hpb=b44c7a6767b530ae052f3364d19e1f3a65d89e97;p=lyx.git diff --git a/src/buffer.C b/src/buffer.C index 873d135c90..c42098707b 100644 --- a/src/buffer.C +++ b/src/buffer.C @@ -89,10 +89,10 @@ #include "support/filetools.h" #include "support/path.h" #include "support/os.h" -#include "support/syscall.h" #include "support/lyxlib.h" #include "support/FileInfo.h" #include "support/lyxmanip.h" +#include "support/lyxalgo.h" // for lyx::count #include #include @@ -148,21 +148,26 @@ extern int tex_code_break_column; Buffer::Buffer(string const & file, bool ronly) + : paragraph(0), lyx_clean(true), bak_clean(true), + unnamed(false), dep_clean(0), read_only(ronly), + filename_(file), users(0) { lyxerr[Debug::INFO] << "Buffer::Buffer()" << endl; - filename = file; - filepath = OnlyPath(file); - paragraph = 0; - lyx_clean = true; - bak_clean = true; - dep_clean = 0; - read_only = ronly; - unnamed = false; - users = 0; +// filename = file; + filepath_ = OnlyPath(file); +// paragraph = 0; +// lyx_clean = true; +// bak_clean = true; +// dep_clean = 0; +// read_only = ronly; +// unnamed = false; +// users = 0; lyxvc.buffer(this); - if (read_only || (lyxrc.use_tempdir)) { + if (read_only || lyxrc.use_tempdir) { tmppath = CreateBufferTmpDir(); - } else tmppath.erase(); + } else { + tmppath.erase(); + } } @@ -194,7 +199,7 @@ Buffer::~Buffer() string const Buffer::getLatexName(bool no_path) const { - string const name = ChangeExtension(MakeLatexName(filename), ".tex"); + string const name = ChangeExtension(MakeLatexName(fileName()), ".tex"); if (no_path) return OnlyFilename(name); else @@ -267,9 +272,9 @@ void Buffer::resetAutosaveTimers() const void Buffer::setFileName(string const & newfile) { - filename = MakeAbsPath(newfile); - filepath = OnlyPath(filename); - setReadonly(IsFileWriteable(filename) == 0); + filename_ = MakeAbsPath(newfile); + filepath_ = OnlyPath(filename_); + setReadonly(IsFileWriteable(filename_) == 0); updateTitles(); } @@ -332,7 +337,7 @@ bool Buffer::readLyXformat2(LyXLex & lex, Paragraph * par) } else { // We are inserting into an existing document users->text->breakParagraph(users); - first_par = users->text->firstParagraph(); + first_par = users->text->ownerParagraph(); pos = 0; markDirty(); // We don't want to adopt the parameters from the @@ -890,6 +895,7 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par, //how can I put it back? } } else if (token == "\\bulletLaTeX") { + // The bullet class should be able to read this. lex.nextToken(); int const index = lex.getInteger(); lex.next(); @@ -906,6 +912,7 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par, lex.next(); temp_str = lex.getString(); } + params.user_defined_bullets[index].setText(sum_str); params.temp_bullets[index].setText(sum_str); } else if (token == "\\secnumdepth") { @@ -1033,10 +1040,16 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par, } } else if (token == "\\added_space_top") { lex.nextToken(); - par->params().spaceTop(VSpace(lex.getString())); + VSpace value = VSpace(lex.getString()); + if ((value.length().len().value() != 0) || + (value.kind() != VSpace::LENGTH)) + par->params().spaceTop(value); } else if (token == "\\added_space_bottom") { lex.nextToken(); - par->params().spaceBottom(VSpace(lex.getString())); + VSpace value = VSpace(lex.getString()); + if ((value.length().len().value() != 0) || + (value.kind() != VSpace::LENGTH)) + par->params().spaceBottom(value); #ifndef NO_COMPABILITY #ifndef NO_PEXTRA_REALLY } else if (token == "\\pextra_type") { @@ -1270,10 +1283,10 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par, } InsetMinipage * mini = new InsetMinipage; mini->pos(static_cast(par->params().pextraAlignment())); - mini->width(par->params().pextraWidth()); + mini->pageWidth(LyXLength(par->params().pextraWidth())); if (!par->params().pextraWidthp().empty()) { - lyxerr << "WP:" << mini->width() << endl; - mini->width(tostr(par->params().pextraWidthp())+"%"); + lyxerr << "WP:" << mini->pageWidth().asString() << endl; + mini->pageWidth(LyXLength((par->params().pextraWidthp())+"%")); } Paragraph * op = mini->firstParagraph(); mini->inset.paragraph(par); @@ -1351,10 +1364,10 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par, InsetMinipage * mini = new InsetMinipage; mini->pos(static_cast(minipar->params().pextraAlignment())); - mini->width(minipar->params().pextraWidth()); + mini->pageWidth(LyXLength(minipar->params().pextraWidth())); if (!par->params().pextraWidthp().empty()) { - lyxerr << "WP:" << mini->width() << endl; - mini->width(tostr(par->params().pextraWidthp())+"%"); + lyxerr << "WP:" << mini->pageWidth().asString() << endl; + mini->pageWidth(LyXLength((par->params().pextraWidthp())+"%")); } mini->inset.paragraph(minipar); @@ -1505,8 +1518,8 @@ void Buffer::readInset(LyXLex & lex, Paragraph *& par, } else if (tmptok == "Formula") { inset = new InsetFormula; } else if (tmptok == "Figure") { // Backward compatibility - inset = new InsetFig(100, 100, *this); - //inset = new InsetGraphics; +// inset = new InsetFig(100, 100, *this); + inset = new InsetGraphics; } else if (tmptok == "Graphics") { inset = new InsetGraphics; } else if (tmptok == "Info") {// backwards compatibility @@ -1517,7 +1530,7 @@ void Buffer::readInset(LyXLex & lex, Paragraph *& par, } else if (tmptok == "Note") { inset = new InsetNote; } else if (tmptok == "Include") { - InsetCommandParams p( "Include" ); + InsetCommandParams p("Include"); inset = new InsetInclude(p, *this); } else if (tmptok == "ERT") { inset = new InsetERT; @@ -1694,7 +1707,7 @@ bool Buffer::writeFile(string const & fname, bool flag) const // warnings, only cerr. // Needed for autosave in background or panic save (Matthias 120496) - if (read_only && (fname == filename)) { + if (read_only && (fname == fileName())) { // Here we should come with a question if we should // perform the write anyway. if (flag) @@ -2073,7 +2086,7 @@ void Buffer::makeLaTeXFile(string const & fname, // original_path is set. This is done for usual tex-file, but not // for nice-latex-file. (Matthias 250696) if (!only_body) { - if (!nice){ + if (!nice) { // code for usual, NOT nice-latex-file ofs << "\\batchmode\n"; // changed // from \nonstopmode @@ -2172,7 +2185,7 @@ void Buffer::makeLaTeXFile(string const & fname, } string strOptions(options.str().c_str()); - if (!strOptions.empty()){ + if (!strOptions.empty()) { strOptions = strip(strOptions, ','); ofs << '[' << strOptions << ']'; } @@ -2442,7 +2455,9 @@ void Buffer::makeLaTeXFile(string const & fname, if (!bullets_def.empty()) preamble += bullets_def + "}\n\n"; - for (int j = countChar(preamble, '\n'); j-- ;) { + int const nlines = + int(lyx::count(preamble.begin(), preamble.end(), '\n')); + for (int j = 0; j != nlines; ++j) { texrow.newline(); } @@ -2535,15 +2550,15 @@ void Buffer::latexParagraphs(ostream & ofs, Paragraph * par, if ((in == 0) || !in->forceDefaultParagraphs(in)) { LyXLayout const & layout = textclasslist.Style(params.textclass, par->layout); - - if (layout.intitle) { + + if (layout.intitle) { if (already_title) { lyxerr <<"Error in latexParagraphs: You" " should not mix title layouts" " with normal ones." << endl; } else was_title = true; - } else if (was_title && !already_title) { + } else if (was_title && !already_title) { ofs << "\\maketitle\n"; texrow.newline(); already_title = true; @@ -2677,7 +2692,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only) if (par->isInset(0)) { Inset * inset = par->getInset(0); Inset::Code lyx_code = inset->lyxCode(); - if (lyx_code == Inset::TOC_CODE){ + if (lyx_code == Inset::TOC_CODE) { string const temp = "toc"; sgmlOpenTag(ofs, depth, temp); @@ -2713,7 +2728,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only) _("Error : Wrong depth for" " LatexType Command.\n")); - if (!environment_stack[depth].empty()){ + if (!environment_stack[depth].empty()) { sgmlCloseTag(ofs, depth, environment_stack[depth]); ofs << "

"; @@ -2846,7 +2861,7 @@ void operator|=(PAR_TAG & p1, PAR_TAG const & p2) inline void reset(PAR_TAG & p1, PAR_TAG const & p2) { - p1 = static_cast( p1 & ~p2); + p1 = static_cast(p1 & ~p2); } } // namespace anon @@ -2971,7 +2986,7 @@ void Buffer::simpleLinuxDocOnePar(ostream & os, } list < PAR_TAG > temp; - while (!tag_state.empty() && tag_close ) { + while (!tag_state.empty() && tag_close) { PAR_TAG k = tag_state.top(); tag_state.pop(); os << ""; @@ -3212,7 +3227,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body) if (par->isInset(0)) { Inset * inset = par->getInset(0); Inset::Code lyx_code = inset->lyxCode(); - if (lyx_code == Inset::LABEL_CODE){ + if (lyx_code == Inset::LABEL_CODE) { command_name += " id=\""; command_name += (static_cast(inset))->getContents(); command_name += "\""; @@ -3236,7 +3251,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body) } if (environment_stack[depth] != style.latexname()) { - if(environment_stack.size() == depth + 1) { + if (environment_stack.size() == depth + 1) { environment_stack.push_back("!-- --"); environment_inner.push_back("!-- --"); } @@ -3259,7 +3274,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body) if (style.latextype == LATEX_ENVIRONMENT) { if (!style.latexparam().empty()) { - if(style.latexparam() == "CDATA") + if (style.latexparam() == "CDATA") ofs << ""; else sgmlCloseTag(ofs, depth + command_depth, @@ -3383,17 +3398,17 @@ void Buffer::simpleDocBookOnePar(ostream & os, if (font.emph() == LyXFont::ON) { os << ""; emph_flag = true; - }else if(i) { + } else if (i) { os << ""; emph_flag = false; } } - if ( par->isInset(i) ) { + if (par->isInset(i)) { Inset * inset = par->getInset(i); // don't print the inset in position 0 if desc_on == 3 (label) - if ( i || desc_on != 3) + if (i || desc_on != 3) inset->docbook(this, os); } else { char c = par->getChar(i); @@ -3402,7 +3417,7 @@ void Buffer::simpleDocBookOnePar(ostream & os, if (style.pass_thru) { os << c; - } else if(style.free_spacing || par->isFreeSpacing() || c != ' ') { + } else if (style.free_spacing || par->isFreeSpacing() || c != ' ') { os << sgml_string; } else if (desc_on ==1) { ++char_line_count; @@ -3424,7 +3439,7 @@ void Buffer::simpleDocBookOnePar(ostream & os, // not closed... os << ""; } - if(style.free_spacing) os << '\n'; + if (style.free_spacing) os << '\n'; } @@ -3439,7 +3454,7 @@ int Buffer::runChktex() // get LaTeX-Filename string const name = getLatexName(); - string path = OnlyPath(filename); + string path = filePath(); string const org_path = path; if (lyxrc.use_tempdir || !IsDirWriteable(path)) { @@ -3456,7 +3471,7 @@ int Buffer::runChktex() makeLaTeXFile(name, org_path, false); TeXErrors terr; - Chktex chktex(lyxrc.chktex_command, name, filepath); + Chktex chktex(lyxrc.chktex_command, name, filePath()); int res = chktex.run(terr); // run chktex if (res == -1) { @@ -3469,7 +3484,7 @@ int Buffer::runChktex() // if we removed error insets before we ran chktex or if we inserted // error insets after we ran chktex, this must be run: - if (removedErrorInsets || res){ + if (removedErrorInsets || res) { users->redraw(); users->fitCursor(); }