]> git.lyx.org Git - lyx.git/blobdiff - src/Text.cpp
BufferView.cpp: typo
[lyx.git] / src / Text.cpp
index 1b57b7bbde9b2c40807705cc492f4071d8525759..33932d4e9f763b609c1dc6bcef70d0ad3fbe1cf5 100644 (file)
@@ -717,7 +717,7 @@ void Text::breakParagraph(Cursor & cur, bool inverse_logic)
                        break; // the character couldn't be deleted physically due to change tracking
        }
 
-       cur.buffer()->updateLabels();
+       cur.buffer()->updateBuffer();
 
        // A singlePar update is not enough in this case.
        cur.updateFlags(Update::Force);
@@ -1294,7 +1294,7 @@ void Text::acceptOrRejectChanges(Cursor & cur, ChangeOp op)
        cur.clearSelection();
        setCursorIntern(cur, begPit, begPos);
        cur.updateFlags(Update::Force);
-       cur.buffer()->updateLabels();
+       cur.buffer()->updateBuffer();
 }
 
 
@@ -1445,7 +1445,7 @@ bool Text::handleBibitems(Cursor & cur)
                cur.recordUndo(ATOMIC_UNDO, prevcur.pit());
                mergeParagraph(bufparams, cur.text()->paragraphs(),
                                                        prevcur.pit());
-               cur.buffer()->updateLabels();
+               cur.buffer()->updateBuffer();
                setCursorIntern(cur, prevcur.pit(), prevcur.pos());
                cur.updateFlags(Update::Force);
                return true;
@@ -1473,7 +1473,7 @@ bool Text::erase(Cursor & cur)
                        cur.top().forwardPos();
 
                if (was_inset)
-                       cur.buffer()->updateLabels();
+                       cur.buffer()->updateBuffer();
                else
                        cur.checkBufferStructure();
                needsUpdate = true;
@@ -1549,7 +1549,7 @@ bool Text::backspacePos0(Cursor & cur)
        }
 
        if (needsUpdate) {
-               cur.buffer()->updateLabels();
+               cur.buffer()->updateBuffer();
                setCursorIntern(cur, prevcur.pit(), prevcur.pos());
        }
 
@@ -1589,7 +1589,7 @@ bool Text::backspace(Cursor & cur)
                bool const was_inset = cur.paragraph().isInset(cur.pos());
                cur.paragraph().eraseChar(cur.pos(), cur.buffer()->params().trackChanges);
                if (was_inset)
-                       cur.buffer()->updateLabels();
+                       cur.buffer()->updateBuffer();
                else
                        cur.checkBufferStructure();
        }
@@ -1647,7 +1647,7 @@ bool Text::dissolveInset(Cursor & cur)
        } else
                // this is the least that needs to be done (bug 6003)
                // in the above case, pasteParagraphList handles this
-               cur.buffer()->updateLabels();
+               cur.buffer()->updateBuffer();
 
        // Ensure the current language is set correctly (bug 6292)
        cur.text()->setCursor(cur, cur.pit(), cur.pos());
@@ -1834,10 +1834,11 @@ docstring Text::getPossibleLabel(Cursor const & cur) const
 
        docstring text;
        docstring par_text = pars_[pit].asString();
-       string piece;
-       // the return string of math matrices might contain linebreaks
+
+       // The return string of math matrices might contain linebreaks
        par_text = subst(par_text, '\n', '-');
-       for (int i = 0; i < lyxrc.label_init_length; ++i) {
+       int const numwords = 3;
+       for (int i = 0; i < numwords; ++i) {
                if (par_text.empty())
                        break;
                docstring head;
@@ -1847,12 +1848,13 @@ docstring Text::getPossibleLabel(Cursor const & cur) const
                        text += '-';
                text += head;
        }
+       
+       // Make sure it isn't too long
+       unsigned int const max_label_length = 32;
+       if (text.size() > max_label_length)
+               text.resize(max_label_length);
 
-       // No need for a prefix if the user said so.
-       if (lyxrc.label_init_length <= 0)
-               return text;
-
-       // Will contain the label type.
+       // Will contain the label prefix.
        docstring name;
 
        // For section, subsection, etc...
@@ -1864,40 +1866,31 @@ docstring Text::getPossibleLabel(Cursor const & cur) const
                }
        }
        if (layout->latextype != LATEX_PARAGRAPH)
-               name = from_ascii(layout->latexname());
+               name = layout->refprefix;
 
-       // for captions, we just take the caption type
+       // For captions, we just take the caption type
        Inset * caption_inset = cur.innerInsetOfType(CAPTION_CODE);
-       if (caption_inset)
-               name = from_ascii(static_cast<InsetCaption *>(caption_inset)->type());
-
-       // If none of the above worked, we'll see if we're inside various
-       // types of insets and take our abbreviation from them.
-       if (name.empty()) {
-               InsetCode const codes[] = {
-                       FLOAT_CODE,
-                       WRAP_CODE,
-                       FOOT_CODE
-               };
-               for (unsigned int i = 0; i < (sizeof codes / sizeof codes[0]); ++i) {
-                       Inset * float_inset = cur.innerInsetOfType(codes[i]);
-                       if (float_inset) {
-                               name = float_inset->name();
-                               break;
-                       }
+       if (caption_inset) {
+               string const & ftype = static_cast<InsetCaption *>(caption_inset)->type();
+               FloatList const & fl = cur.buffer()->params().documentClass().floats();
+               if (fl.typeExist(ftype)) {
+                       Floating const & flt = fl.getType(ftype);
+                       name = from_utf8(flt.refPrefix());
                }
+               if (name.empty())
+                       name = from_utf8(ftype.substr(0,3));
        }
 
-       // Create a correct prefix for prettyref
-       if (name == "theorem")
-               name = from_ascii("thm");
-       else if (name == "Foot")
-               name = from_ascii("fn");
-       else if (name == "listing")
-               name = from_ascii("lst");
+       // If none of the above worked, see if the inset knows.
+       if (name.empty()) {
+               InsetLayout const & il = cur.inset().getLayout();
+               name = il.refprefix();
+       }
 
        if (!name.empty())
-               text = name.substr(0, 3) + ':' + text;
+               // FIXME refstyle
+               // We should allow customization of the separator or else change it
+               text = name + ':' + text;
 
        return text;
 }