mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-14 12:25:11 +00:00
minimal ERT spacing patch (first patch sent to list plus a couple of fixes)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7134 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
856b10ecaf
commit
13a21fe510
@ -1,3 +1,14 @@
|
|||||||
|
2003-06-07 John Levon <levon@movementarian.org>
|
||||||
|
|
||||||
|
* buffer.C:
|
||||||
|
* paragraph_funcs.C:
|
||||||
|
* paragraph_pimpl.C:
|
||||||
|
* text.C:
|
||||||
|
* text2.C:
|
||||||
|
* paragraph.h:
|
||||||
|
* paragraph.C: allow InsetERT to freely space lines,
|
||||||
|
and some consolidation of code
|
||||||
|
|
||||||
2003-06-06 José Matos <jamatos@fep.up.pt>
|
2003-06-06 José Matos <jamatos@fep.up.pt>
|
||||||
|
|
||||||
* buffer.C (makeDocBookFile): fix bug #821
|
* buffer.C (makeDocBookFile): fix bug #821
|
||||||
|
14
src/buffer.C
14
src/buffer.C
@ -414,7 +414,7 @@ void Buffer::insertStringAsLines(ParagraphList::iterator & par, pos_type & pos,
|
|||||||
for(string::const_iterator cit = str.begin();
|
for(string::const_iterator cit = str.begin();
|
||||||
cit != str.end(); ++cit) {
|
cit != str.end(); ++cit) {
|
||||||
if (*cit == '\n') {
|
if (*cit == '\n') {
|
||||||
if (autobreakrows && (!par->empty() || layout->keepempty)) {
|
if (autobreakrows && (!par->empty() || par->allowEmpty())) {
|
||||||
breakParagraph(params, paragraphs, par, pos,
|
breakParagraph(params, paragraphs, par, pos,
|
||||||
layout->isEnvironment());
|
layout->isEnvironment());
|
||||||
++par;
|
++par;
|
||||||
@ -425,12 +425,10 @@ void Buffer::insertStringAsLines(ParagraphList::iterator & par, pos_type & pos,
|
|||||||
}
|
}
|
||||||
// do not insert consecutive spaces if !free_spacing
|
// do not insert consecutive spaces if !free_spacing
|
||||||
} else if ((*cit == ' ' || *cit == '\t') &&
|
} else if ((*cit == ' ' || *cit == '\t') &&
|
||||||
space_inserted && !layout->free_spacing &&
|
space_inserted && !par->isFreeSpacing()) {
|
||||||
!par->isFreeSpacing())
|
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
} else if (*cit == '\t') {
|
} else if (*cit == '\t') {
|
||||||
if (!layout->free_spacing && !par->isFreeSpacing()) {
|
if (!par->isFreeSpacing()) {
|
||||||
// tabs are like spaces here
|
// tabs are like spaces here
|
||||||
par->insertChar(pos, ' ', font);
|
par->insertChar(pos, ' ', font);
|
||||||
++pos;
|
++pos;
|
||||||
@ -1522,7 +1520,7 @@ void Buffer::simpleLinuxDocOnePar(ostream & os,
|
|||||||
bool ws;
|
bool ws;
|
||||||
string str;
|
string str;
|
||||||
boost::tie(ws, str) = sgml::escapeChar(c);
|
boost::tie(ws, str) = sgml::escapeChar(c);
|
||||||
if (ws && !style->free_spacing && !par->isFreeSpacing()) {
|
if (ws && !par->isFreeSpacing()) {
|
||||||
// in freespacing mode, spaces are
|
// in freespacing mode, spaces are
|
||||||
// non-breaking characters
|
// non-breaking characters
|
||||||
if (desc_on) {// if char is ' ' then...
|
if (desc_on) {// if char is ' ' then...
|
||||||
@ -1907,9 +1905,9 @@ void Buffer::simpleDocBookOnePar(ostream & os,
|
|||||||
|
|
||||||
if (style->pass_thru) {
|
if (style->pass_thru) {
|
||||||
os << c;
|
os << c;
|
||||||
} else if (style->free_spacing || par->isFreeSpacing() || c != ' ') {
|
} else if (par->isFreeSpacing() || c != ' ') {
|
||||||
os << str;
|
os << str;
|
||||||
} else if (desc_on ==1) {
|
} else if (desc_on == 1) {
|
||||||
++char_line_count;
|
++char_line_count;
|
||||||
os << "\n</term><listitem><para>";
|
os << "\n</term><listitem><para>";
|
||||||
desc_on = 2;
|
desc_on = 2;
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2003-06-07 John Levon <levon@movementarian.org>
|
||||||
|
|
||||||
|
* insetert.C (latex): make a newline mean just that not
|
||||||
|
a new par
|
||||||
|
|
||||||
2003-06-07 José Matos <jamatos@fep.up.pt>
|
2003-06-07 José Matos <jamatos@fep.up.pt>
|
||||||
|
|
||||||
* insethfill.[Ch] (linuxdoc, docbook): implement output
|
* insethfill.[Ch] (linuxdoc, docbook): implement output
|
||||||
|
@ -346,8 +346,8 @@ int InsetERT::latex(Buffer const *, ostream & os,
|
|||||||
}
|
}
|
||||||
++par;
|
++par;
|
||||||
if (par != end) {
|
if (par != end) {
|
||||||
os << "\n\n";
|
os << "\n";
|
||||||
lines += 2;
|
++lines;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,8 +330,12 @@ string const InsetGraphics::prepareFile(Buffer const * buf,
|
|||||||
string orig_file = params().filename;
|
string orig_file = params().filename;
|
||||||
string const rel_file = MakeRelPath(orig_file, buf->filePath());
|
string const rel_file = MakeRelPath(orig_file, buf->filePath());
|
||||||
|
|
||||||
if (!IsFileReadable(rel_file))
|
if (!IsFileReadable(orig_file)) {
|
||||||
|
lyxerr[Debug::GRAPHICS]
|
||||||
|
<< "InsetGraphics::prepareFile\n"
|
||||||
|
<< "No file '" << orig_file << "' can be found!" << endl;
|
||||||
return rel_file;
|
return rel_file;
|
||||||
|
}
|
||||||
|
|
||||||
bool const zipped = zippedFile(orig_file);
|
bool const zipped = zippedFile(orig_file);
|
||||||
|
|
||||||
@ -521,6 +525,8 @@ int InsetGraphics::latex(Buffer const * buf, ostream & os,
|
|||||||
(before + '{' + relative_file + " not found!}" + after);
|
(before + '{' + relative_file + " not found!}" + after);
|
||||||
os << latex_str;
|
os << latex_str;
|
||||||
|
|
||||||
|
lyxerr[Debug::GRAPHICS] << "InsetGraphics::latex outputting:\n"
|
||||||
|
<< latex_str << endl;
|
||||||
// Return how many newlines we issued.
|
// Return how many newlines we issued.
|
||||||
return int(lyx::count(latex_str.begin(), latex_str.end(),'\n') + 1);
|
return int(lyx::count(latex_str.begin(), latex_str.end(),'\n') + 1);
|
||||||
}
|
}
|
||||||
|
@ -623,7 +623,7 @@ void Paragraph::makeSameLayout(Paragraph const & par)
|
|||||||
|
|
||||||
int Paragraph::stripLeadingSpaces()
|
int Paragraph::stripLeadingSpaces()
|
||||||
{
|
{
|
||||||
if (layout()->free_spacing || isFreeSpacing())
|
if (isFreeSpacing())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@ -1409,6 +1409,9 @@ ParagraphParameters const & Paragraph::params() const
|
|||||||
|
|
||||||
bool Paragraph::isFreeSpacing() const
|
bool Paragraph::isFreeSpacing() const
|
||||||
{
|
{
|
||||||
|
if (layout()->free_spacing)
|
||||||
|
return true;
|
||||||
|
|
||||||
// for now we just need this, later should we need this in some
|
// for now we just need this, later should we need this in some
|
||||||
// other way we can always add a function to Inset::() too.
|
// other way we can always add a function to Inset::() too.
|
||||||
if (pimpl_->inset_owner && pimpl_->inset_owner->owner())
|
if (pimpl_->inset_owner && pimpl_->inset_owner->owner())
|
||||||
@ -1417,6 +1420,16 @@ bool Paragraph::isFreeSpacing() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Paragraph::allowEmpty() const
|
||||||
|
{
|
||||||
|
if (layout()->keepempty)
|
||||||
|
return true;
|
||||||
|
if (pimpl_->inset_owner && pimpl_->inset_owner->owner())
|
||||||
|
return (pimpl_->inset_owner->owner()->lyxCode() == Inset::ERT_CODE);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool operator==(Paragraph const & lhs, Paragraph const & rhs)
|
bool operator==(Paragraph const & lhs, Paragraph const & rhs)
|
||||||
{
|
{
|
||||||
#warning FIXME this implementatoin must be completely wrong...
|
#warning FIXME this implementatoin must be completely wrong...
|
||||||
|
@ -283,9 +283,12 @@ public:
|
|||||||
///
|
///
|
||||||
int stripLeadingSpaces();
|
int stripLeadingSpaces();
|
||||||
|
|
||||||
///
|
/// return true if we allow multiple spaces
|
||||||
bool isFreeSpacing() const;
|
bool isFreeSpacing() const;
|
||||||
|
|
||||||
|
/// return true if we allow this par to stay empty
|
||||||
|
bool allowEmpty() const;
|
||||||
|
|
||||||
///
|
///
|
||||||
ParagraphParameters & params();
|
ParagraphParameters & params();
|
||||||
///
|
///
|
||||||
|
@ -71,7 +71,7 @@ void breakParagraph(BufferParams const & bparams,
|
|||||||
tmp->setLabelWidthString(par->params().labelWidthString());
|
tmp->setLabelWidthString(par->params().labelWidthString());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool const isempty = (par->layout()->keepempty && par->empty());
|
bool const isempty = (par->allowEmpty() && par->empty());
|
||||||
|
|
||||||
if (!isempty && (par->size() > pos || par->empty() || flag == 2)) {
|
if (!isempty && (par->size() > pos || par->empty() || flag == 2)) {
|
||||||
tmp->layout(par->layout());
|
tmp->layout(par->layout());
|
||||||
@ -937,10 +937,9 @@ int readParToken(Buffer & buf, Paragraph & par, LyXLex & lex, string const & tok
|
|||||||
lex.next();
|
lex.next();
|
||||||
font.setLyXColor(lex.getString());
|
font.setLyXColor(lex.getString());
|
||||||
} else if (token == "\\InsetSpace" || token == "\\SpecialChar") {
|
} else if (token == "\\InsetSpace" || token == "\\SpecialChar") {
|
||||||
LyXLayout_ptr const & layout = par.layout();
|
|
||||||
|
|
||||||
// Insets don't make sense in a free-spacing context! ---Kayvan
|
// Insets don't make sense in a free-spacing context! ---Kayvan
|
||||||
if (layout->free_spacing || par.isFreeSpacing()) {
|
if (par.isFreeSpacing()) {
|
||||||
if (token == "\\InsetSpace")
|
if (token == "\\InsetSpace")
|
||||||
par.insertChar(par.size(), ' ', font, change);
|
par.insertChar(par.size(), ' ', font, change);
|
||||||
else if (lex.isOK()) {
|
else if (lex.isOK()) {
|
||||||
|
@ -429,7 +429,6 @@ void Paragraph::Pimpl::simpleTeXBlanks(ostream & os, TexRow & texrow,
|
|||||||
&& getChar(i - 1) != ' '
|
&& getChar(i - 1) != ' '
|
||||||
&& (i < size() - 1)
|
&& (i < size() - 1)
|
||||||
// same in FreeSpacing mode
|
// same in FreeSpacing mode
|
||||||
&& !style.free_spacing
|
|
||||||
&& !owner_->isFreeSpacing()
|
&& !owner_->isFreeSpacing()
|
||||||
// In typewriter mode, we want to avoid
|
// In typewriter mode, we want to avoid
|
||||||
// ! . ? : at the end of a line
|
// ! . ? : at the end of a line
|
||||||
|
@ -1461,10 +1461,9 @@ void LyXText::breakParagraph(ParagraphList & paragraphs, char keep_layout)
|
|||||||
LyXLayout_ptr const & layout = cursor.par()->layout();
|
LyXLayout_ptr const & layout = cursor.par()->layout();
|
||||||
|
|
||||||
// this is only allowed, if the current paragraph is not empty or caption
|
// this is only allowed, if the current paragraph is not empty or caption
|
||||||
// and if it has not the keepempty flag aktive
|
// and if it has not the keepempty flag active
|
||||||
if (cursor.par()->empty()
|
if (cursor.par()->empty() && !cursor.par()->allowEmpty()
|
||||||
&& layout->labeltype != LABEL_SENSITIVE
|
&& layout->labeltype != LABEL_SENSITIVE)
|
||||||
&& !layout->keepempty)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
setUndo(bv(), Undo::FINISH, cursor.par());
|
setUndo(bv(), Undo::FINISH, cursor.par());
|
||||||
@ -1487,7 +1486,7 @@ void LyXText::breakParagraph(ParagraphList & paragraphs, char keep_layout)
|
|||||||
// breakParagraph call should return a bool if it inserts the
|
// breakParagraph call should return a bool if it inserts the
|
||||||
// paragraph before or behind and we should react on that one
|
// paragraph before or behind and we should react on that one
|
||||||
// but we can fix this in 1.3.0 (Jug 20020509)
|
// but we can fix this in 1.3.0 (Jug 20020509)
|
||||||
bool const isempty = (layout->keepempty && cursor.par()->empty());
|
bool const isempty = (cursor.par()->allowEmpty() && cursor.par()->empty());
|
||||||
::breakParagraph(bv()->buffer()->params, paragraphs, cursor.par(), cursor.pos(),
|
::breakParagraph(bv()->buffer()->params, paragraphs, cursor.par(), cursor.pos(),
|
||||||
keep_layout);
|
keep_layout);
|
||||||
|
|
||||||
|
@ -2224,7 +2224,7 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Do not delete empty paragraphs with keepempty set.
|
// Do not delete empty paragraphs with keepempty set.
|
||||||
if (old_cursor.par()->layout()->keepempty)
|
if (old_cursor.par()->allowEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// only do our magic if we changed paragraph
|
// only do our magic if we changed paragraph
|
||||||
|
Loading…
x
Reference in New Issue
Block a user