3 // - are probably fixed, the reporter is asked to verify this
4 and report success or failure
6 ?? - are not reproducable, the reporter is asked to verify this
7 and report success or failure
9 :: - are questions or comments to the reporter, containing question
10 on how to reproduce the bug exactly or things like that
12 !! - mark "not a bug, a feature" replies, usually with a request for
15 Unmarked items are known unfixed but probably unverified bugs.
17 ----------------------------------------------------------------------
19 General hints for bug reports:
21 - keep the items small
23 - do not provide excessive information on how to reproduce the bug
26 - if a bug is partly fixed, report it as "fixed" and a new bug item
27 that contains the unfixed part only
29 - check this list regularly, comment on the marked items.
31 - plain ASCII text please, not much more than 70 chars per column
33 ----------------------------------------------------------------------
39 - When changing the macro definition, all instances are not updated.
41 // - If I have macros \newcommand{\foo}[1]{[#1]} and
42 // \newcommand{\foox}{\foo{x}} then when an instance of \foox is drawn on
43 // screen, there are two black frames. While this is "correct", it is
46 - LyX crashes when you define a recursive macro
50 - If I have x_{1}^{2}, I put the cursor before the 2, and press backspace,
51 the result is 'x2'. The correct result should be 'x_{1}2'
53 // - If I mark some text and then press ^, then the marked text is deleted.
54 // The correct behavior is to put the marked text in the superscript.
56 // - Pressing <down> when cursor is in subscript will move the cursor up
57 // (to the base of the subscript) instead of exiting the inset.
58 // The same problem happen in fractions
60 // - When you press the mouse just to the left of the middle point of
61 // some char, the cursor will be positioned to the right of the char.
63 - It is possible to put two or more consecutive spaces in math text mode
65 // - Text in superscript is not smaller than normal text.
67 // - After insertion of \sum, the cursor is in invalid location
69 // - The height of the frame is often wrong (e.g. x^2)
70 // For example $\sum x$ in an inline formula
72 - InsetFormula::validate is broken
74 // - Changing math space length by pressing the space-bar key doesn't work
75 !! it's M-m space now.
77 // - The drawing of decorations on screen is very different than latex.
78 // (a low priority bug).
80 // - If I change '\alpha' to bold, the result is \mathbf{a}
82 // - Just moving the cursor in a math inset causes changing the buffer status
85 // - disable the insert->label menu item when in inline formula.
90 - When exiting the formula during selection, the anchor moves to the
91 left of the formula and there's no way to go back.
93 // - Scripts are too large. $\log_2$ exceeds inset frame (non-displayed).
95 // - You need two <right> to get past \vec{v}, and all sort of other
100 // - \vec{several-characters} doesn't work. \overrightarrow does.
102 // - When the cursor is in a subscript (and either isn't at the end of
103 // the subscript or there's no subsubscript), pressing <down> should
104 // try to *really* go down (to the next line, or denumerator, or
105 // whatever). Currently it goes *up*. Ditto for superscripts.
107 // - When choosing to insert "\left\Vert \right\Vert" parenthesis using
108 // the maths [sic] panel, a "\left( \right." is inserted instead.
110 - Formula inside tabular cell: red frame of cell inset and purple
111 frame of formula can overlap, causing leftovers when leaving
112 formula. To get an example, insert a 1x1 tabular into a new document,
113 enter the cell its cell and press
114 M-m ( M-f 1 <right> <right> <right> (zoom=100, screenDPI=100)
116 - When selecting multiple cells in a array using the keyboard, <left>
117 etc. should can move whole cell at a time -- no need to navigate
120 - When selecting, maybe give a visual indication of the "original"
121 anchor, when it differs from the "actual" one.
123 // - Placement of cursor using mouse is seriously broken.
124 // Example 1: large fractions.
125 // Example 2: type into a new document:
126 // "M-d xxxxxxxxx <right> M-x footnote-insert"
127 // Can't reach most places in the formula using mouse.
133 - Entering \mathbf{c} in math mode is displayed as written (without
136 - I know the latex code of a lot of math symbols displayed by lyx,
137 but not all of them. Thus I have to use the math panel for only a single
138 symbol in a formula. I think it would be very useful, if the latex code
139 of the symbol would be displayed as a hint, if the mouse positioned over
143 Marcus (Suran@gmx.net)
145 - In math-mode I can switch back to text-mode in a formula but then I am
146 not able to type Umlauts.
148 ?? - Having selected some part of a formula and creating a fraction with that
149 ?? part in the top my selection-buffer is replaced with the part.
151 - If the math-panel has the focus I can type text but not switch into
152 math-mode or use some of the other keyboard-shortcuts.
154 - In the default-configuration there are shortcuts for al greek characters
155 _except_ varphi wich is used extensively as a default-variable-name.
158 From: Álvaro Tejero Cantero <alvaro@antalia.com>
160 - the most annoying bug by far: bold is "inherited" to super and subscripts.
162 // - when you get into equation array mode, the previous equation(s)
163 // remain(s) unaligned. I would be soo much faster to have LyX pick the
164 // last equal sign from the previous line as a reference for the alignment
165 // (and a good heuristic for the 80% of cases, with the advantage that we
166 // don't lose anything enforcing it). This is another case that slows down
167 // a lot when typing because, as the previous one, requires going back
170 - the movement is sometimes clumsy inside this arrayed equations: ie. C-a (or
171 "home" are understood as "beginning of the formula" instead of "beginning of
172 the equation". Again, a lot of movement has to be made. I suggest mapping
173 "beginning of doc" with "beginning of formula" and so on (very intuitive), in
174 case you don't deem appropriate the "namespace idea" below.
176 //- movement between macro boxes is also weird, but in this one it's perhaps
179 - I suggest creating a different "kewybinding namespace" for the formulas,
180 since you could put to good use all those keybindings from the menu (M-?,
181 C-?) thath currently do their job PLUS getting you out of the formula.
182 Seriously, it'd be great to have more keys free, so M-d t would be time
183 derivative and M-d ? derivative with respect to the variable ?. And so on.
185 - I'm no experienced C++ programmer, but if you consider it appropriate, I
186 could write a scritp in python for this one (I'm also very optimistic). Tell
189 Flattening macros. Sometimes it's annoying the fact that once you have
190 written a macro, you can't touch at it's "constant parts". I call flattening
191 to the process of substituting all macros with LaTeX code.
193 Task: designing a macro substitution system that reads from a file
194 (possibly the same file as the document's) the macros and parses the document
195 doing the appropriate replacements
197 This is very useful, because sometimes you have a big expression in a macro
198 and you want to change an index only. What do you do then?. You retype
199 everything (perhaps several times in the document) or you create extremely
200 generic and parametrizable macros that aren't very fast to fill in the
204 - undo-redo seems too coarse in math-mode. You end up losing substantial
205 fragments of your formula. I hate that when it affects tensors,;).
207 - cut&paste inside math-mode doesn't work the X fashion (middle button doesn't
210 - I remember having heard that a search-replace function was planned, so I
211 won't repeat that. Only that the flattening option would be then easier to
212 implement on top of that.
214 // - There's something I keep wondering about.. how do new math symbols get
215 // into LyX. Do they get ever?. I don't know if it can be done, but if you
216 // tell me where to "draw" those symbols or how, I would very glad start
217 // doing it. LyX deserves to have support (visual support) for all the
218 // AMSTeX constructs. But there must be something structural going on
219 // there, because otherwise more math symbols would be ready by now..
222 - Some math symbols aren't very well supported (to my knowledge). I'm
223 thinking of underbraces with extra data in them,or [] options.
228 - it's not possible to enter superscript when the
229 ^-char works as a dead key. with the second ^-
230 or the space the cursor jumps outside the mathbox.
236 - I've been using Lyx for a year or two now, and I have some thoughts on
237 improving the interface. Not the GUI, as such, but the basic Human-Machine
238 interface --- the efficiency with which I can enter information into it.
240 There are a couple of general principles I'm try to uphold here:
242 a) If something's easy & quick in LaTeX then it should be easy & quick in
243 LyX (unless it really isn't very common). b) Actions which are used
244 frequently should be a single key-press, even if that's not very easy to
245 remember. You learn it. c) Actions which are used rarely should be
246 mnemonic -- easy to remember -- even if they are multiple keypresses.
247 Things you do rarely you care less about the time it takes to perform.
249 2) Math-mode entry Under the xemacs keybindings, which I use, (damn it,
250 I don't want to confuse my poor muscle memory more than necessary by
251 learning too many different bindings for the same actions), the key
252 sequence to enter math-mode is 'M-c m'. I'm not sure exactly what to
253 propose instead, but I really think this needs to be only one keypress.
255 As an aside, you may think that I'm whining over nothing. However, when
256 you enter math mode as often as I do (often more than once a sentence) it
257 gets very annoying, especially as compared to simply typing '$' in plain
258 emacs. Also, you may say 'why don't you just change your bindings file?'. I
259 will ;) but I wanted to start some discussion on this since it can benefit
262 More serious, though, than the number of characters which need to be typed
263 is the confusing nature of the command. 'M-c m', typed once, puts you into
264 math-mode. However, typing 'M-c m' again doesn't put you out of math-mode
265 --- it puts you into math-text mode. Then hitting it again puts you back
266 into normal math-mode. IMO, 'modal' keys should either be idempotent (so
267 hitting it the second time does nothing) or self-inverting. In fact, the
268 inverse to 'M-c m' is either 'ESC' or simply a space typed at the end of
269 the block --- which is confusing, since they're not of the same 'shape' as
270 the command that got you in there.
272 Now, I'm not saying that 'space' shouldn't be allowed as a short-cut to get
273 you out of math-mode; it's a most useful and natural one, I like it a lot.
274 However, on balance I think M-c m should also have that effect.
276 3) Math-mode inconsistencies
278 Sometimes 'the same action' has the same keystroke both within and
279 without math-mode. This is very sensible. However, it is very annoying when
280 they don't behave the way you're expecting them to.
282 For example, 'M-c e' puts you into 'emphasise' mode. Ignoring the fact
283 that in text mode this is italics, and in math-mode it stands for the
284 calligraphic character set, I think of these as the same action, so I like
285 the fact that they have the same keys. However, in math-mode, 'M-c e' is
286 idempotent, (and you need 'M-c space' to get back into normal) whereas in
287 text-mode 'M-c e' is self-inverse. These are the two possibilities I listed
288 as acceptable before, but consistency would be nice ;-) IMO, self-inverse
289 would be best for both.
293 Math-mode doesn't handle ERT very well at all. It flips back out of
294 TeX-mode as soon as you type any special character. Very annoying if I
295 wish to typeset an \xymatrix inside math-mode (see also my comment above
296 about table-like environments), since I can't type the &. In fact, my
297 xymatrices end up as $$\xymatrix{..}$$ in text-mode ERT. Also rather
298 annoying when you want to use a \macro with more than one argument (but not
301 5) Proposal : a 'ligatures' or 'autocorrect' system
303 One of the very minor, but useful, features of TeX is the way it lets you
304 type the nearest approximation to what you want using a 'typewriter
305 keyboard', and substitutes the typographically neat equivalent. In
306 particular, 'fancy' quotes (") and en and em dashes (---). I propose that
307 this UI element could be taken up a level into LyX, with a system that does
308 the following (for example):
310 -> becomes \rightarrow
311 <- becomes \leftarrow
312 => becomes \Rightarrow (etc..)
313 ==> becomes \Longrightarrow (etc..)
315 This may only be appropriate in math mode, of course. This family bug me
316 in particular because they take ages to type using a \-escape. Undoubtedly
317 sharp minds will think of others, and also we need some way of actually
318 typing those sequences as literals when we want them.
322 The current macro system is clever, but could be neater. One improvement
323 I'd like is to let LyX know about TeX's scoping rules...
328 - use AMS's \text instead of \mbox. It supports accented characters,
329 among others... (selected via validate()?)
334 // \def\neq{\not=} \let\ne=\neq
338 // \let\gets=\leftarrow
339 // \let\to=\rightarrow
344 - make math lables editable
348 // - An inline equation does not get a number, so putting a label there is not
349 // overly sensible...
350 // Ok. In that case show a message in the bottom similarly as the message
351 // "you cannot type two spaces this way". Eg. "You can insert math labels
352 // only in display mode"
354 :: Not a bug. It's allowed by LaTeX and there might be other reasons for
355 :: putting labels there. I won't add extra code to disable this.
361 // cxx: Info: ../../../lyx-devel/src/mathed/array.C, line 98: conversion to
362 // integral type of smaller size could lose data (D:intconlosbit)
363 // return bf_.size();
366 // cxx: Info: ../../../lyx-devel/src/mathed/formula.h, line 56:
367 // "void InsetFormula::write(std::ostream &) const" does not match
368 // "Inset::write" -- virtual function override intended? (D:nonfundec)
369 // void write(std::ostream &) const;
373 // cxx: Info: ../../../lyx-devel/src/mathed/formula.h, line 58:
374 // "void InsetFormula::read(LyXLex &)" does not match "Inset::read" --
375 // virtual function override intended? (D:nonfundec)
376 // void read(LyXLex & lex);
381 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 94:
382 conversion to integral type of smaller size could lose data
384 int ncols() const { return colinfo_.size(); }
385 -----------------------------------^
386 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 96:
387 conversion to integral type of smaller size could lose data
389 int nrows() const { return rowinfo_.size(); }
390 -----------------------------------^
392 // cxx: Info: ../../../lyx-devel/src/mathed/formulabase.C, line 63: function
393 // "<unnamed>::mathed_init_fonts" was declared but never referenced
395 // void mathed_init_fonts();
398 //cxx: Info: ../../../lyx-devel/src/mathed/formulabase.C, line 65: function
399 // "<unnamed>::nicelabel" was declared but never referenced
401 //string nicelabel(string const & label)
404 -----------------------------------^
405 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 94:
406 conversion to integral type of smaller size could lose data
408 int ncols() const { return colinfo_.size(); }
409 -----------------------------------^
410 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 96:
411 conversion to integral type of smaller size could lose data
413 int nrows() const { return rowinfo_.size(); }
414 -----------------------------------^
415 cxx: Info: ../../../lyx-devel/src/mathed/math_cursor.C, line 176:
416 label "__Unreachable1" was declared but never referenced
418 lyxerr << "MC: " << what << "\n";
420 cxx: Warning: ../../../lyx-devel/src/mathed/math_cursor.C, line 193: statement
421 is unreachable (D:codeunreachable)
422 lyxerr << "\n\n\n=================vvvvvvvvvvvvv======================= "
424 cxx: Info: ../../../lyx-devel/src/mathed/math_cursor.C, line 193:
425 label "__Unreachable2" was declared but never referenced
427 lyxerr << "\n\n\n=================vvvvvvvvvvvvv======================= "
429 cxx: Info: ../../../lyx-devel/src/mathed/math_cursor.C, line 351:
430 controlling expression is constant (D:boolexprconst)
433 cxx: Info: ../../../lyx-devel/src/mathed/math_cursor.C, line 597: conversion
434 to integral type of smaller size could lose data (D:intconlosbit)
435 pos() = pos() - s.size();
436 ----------------------^
437 cxx: Info: ../../../lyx-devel/src/mathed/math_cursor.C, line 828: conversion
438 to integral type of smaller size could lose data (D:intconlosbit)
439 for (int i = Cursor_.size() - 1; i >= 0; --i) {
440 ---------------------^
441 cxx: Info: ../../../lyx-devel/src/mathed/math_cursor.C, line 1049:
442 conversion to integral type of smaller size could lose data
444 return p ? p->valign() : 0;
446 cxx: Info: ../../../lyx-devel/src/mathed/math_cursor.C, line 1057:
447 conversion to integral type of smaller size could lose data
449 return p ? p->halign(idx % p->ncols()) : 0;
451 cxx: Info: ../../../lyx-devel/src/mathed/math_cursor.C, line 109: function
452 "<unnamed>::operator<<" was declared but never referenced
454 std::ostream & operator<<(std::ostream & os, MathCursorPos const & p)
456 cxx: Info: ../../../lyx-devel/src/mathed/math_fracinset.h, line 30: type
457 qualifier on return type is meaningless (D:nousetypqualret)
458 char const name() const;
460 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
461 "void MathMacro::dump(std::ostream &) const" does not match
462 "MathInset::dump" -- virtual function override intended?
464 void dump(std::ostream & os) const;
466 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
467 "void MathMacro::dump(std::ostream &) const" does not match
468 "MathNestInset::dump" -- virtual function override intended?
470 void dump(std::ostream & os) const;
472 cxx: Info: ../../../lyx-devel/src/mathed/math_factory.C, line 29: conversion
473 to integral type of smaller size could lose data (D:intconlosbit)
474 return new MathSpecialCharInset(l->id);
475 ------------------------------------------------^
476 cxx: Info: ../../../lyx-devel/src/mathed/math_fracinset.h, line 30: type
477 qualifier on return type is meaningless (D:nousetypqualret)
478 char const name() const;
480 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 94:
481 conversion to integral type of smaller size could lose data
483 int ncols() const { return colinfo_.size(); }
484 -----------------------------------^
485 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 96:
486 conversion to integral type of smaller size could lose data
488 int nrows() const { return rowinfo_.size(); }
489 -----------------------------------^
490 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.C, line 71:
491 conversion to integral type of smaller size could lose data
495 cxx: Info: ../../../lyx-devel/src/mathed/../lyxlex.h, line 32: access
496 control not specified ("private" by default) (D:misaccspe)
497 class LyXLex : boost::noncopyable {
499 cxx: Info: ../../../lyx-devel/src/mathed/math_hash.C, line 177: conversion
500 to integral type of smaller size could lose data (D:intconlosbit)
501 tmp.token = tokenEnum(lex.getString());
502 ----------------------------------^
503 cxx: Info: ../../../lyx-devel/src/mathed/math_hash.C, line 179: conversion
504 to integral type of smaller size could lose data (D:intconlosbit)
505 tmp.latex_font_id = lex.getInteger();
506 ------------------------------------------^
507 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
508 "void MathMacro::dump(std::ostream &) const" does not match
509 "MathInset::dump" -- virtual function override intended?
511 void dump(std::ostream & os) const;
513 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
514 "void MathMacro::dump(std::ostream &) const" does not match
515 "MathNestInset::dump" -- virtual function override intended?
517 void dump(std::ostream & os) const;
519 cxx: Info: ../../../lyx-devel/src/mathed/../layout.h, line 554: access
520 control not specified ("private" by default) (D:misaccspe)
521 class LyXTextClassList : boost::noncopyable {
522 -------------------------^
523 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.C, line 122: conversion
524 to integral type of smaller size could lose data (D:intconlosbit)
526 ------------------------^
527 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.C, line 101:
528 variable "col" was set but never used (D:setbutnotused)
530 ----------------------^
531 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
532 "void MathMacro::dump(std::ostream &) const" does not match
533 "MathInset::dump" -- virtual function override intended?
535 void dump(std::ostream & os) const;
537 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
538 "void MathMacro::dump(std::ostream &) const" does not match
539 "MathNestInset::dump" -- virtual function override intended?
541 void dump(std::ostream & os) const;
543 cxx: Info: ../../../lyx-devel/src/mathed/math_macroarg.C, line 21:
544 conversion to integral type of smaller size could lose data
548 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
549 "void MathMacro::dump(std::ostream &) const" does not match
550 "MathInset::dump" -- virtual function override intended?
552 void dump(std::ostream & os) const;
554 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
555 "void MathMacro::dump(std::ostream &) const" does not match
556 "MathNestInset::dump" -- virtual function override intended?
558 void dump(std::ostream & os) const;
560 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 94:
561 conversion to integral type of smaller size could lose data
563 int ncols() const { return colinfo_.size(); }
564 -----------------------------------^
565 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 96:
566 conversion to integral type of smaller size could lose data
568 int nrows() const { return rowinfo_.size(); }
569 -----------------------------------^
570 cxx: Info: ../../../lyx-devel/src/mathed/../layout.h, line 554: access
571 control not specified ("private" by default) (D:misaccspe)
572 class LyXTextClassList : boost::noncopyable {
573 -------------------------^
574 cxx: Info: ../../../lyx-devel/src/mathed/math_matrixinset.C, line 40:
575 conversion to integral type of smaller size could lose data
577 return it - array.begin();
578 -------------------------------^
579 cxx: Info: ../../../lyx-devel/src/mathed/math_nestinset.C, line 16:
580 conversion to integral type of smaller size could lose data
582 return cells_.size();
584 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 94:
585 conversion to integral type of smaller size could lose data
587 int ncols() const { return colinfo_.size(); }
588 -----------------------------------^
589 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 96:
590 conversion to integral type of smaller size could lose data
592 int nrows() const { return rowinfo_.size(); }
593 -----------------------------------^
594 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
595 "void MathMacro::dump(std::ostream &) const" does not match
596 "MathInset::dump" -- virtual function override intended?
598 void dump(std::ostream & os) const;
600 cxx: Info: ../../../lyx-devel/src/mathed/math_macro.h, line 54:
601 "void MathMacro::dump(std::ostream &) const" does not match
602 "MathNestInset::dump" -- virtual function override intended?
604 void dump(std::ostream & os) const;
606 cxx: Info: ../../../lyx-devel/src/mathed/../lyxlex.h, line 32: access
607 control not specified ("private" by default) (D:misaccspe)
608 class LyXLex : boost::noncopyable {
610 cxx: Info: ../../../lyx-devel/src/mathed/math_parser.C, line 60: conversion
611 to integral type of smaller size could lose data (D:intconlosbit)
612 unsigned n = s.size();
613 ---------------------^
614 cxx: Info: ../../../lyx-devel/src/mathed/math_parser.C, line 437:
615 controlling expression is constant (D:boolexprconst)
616 for (int row = 0; true; ++row) {
617 --------------------------^
618 cxx: Info: ../../../lyx-devel/src/mathed/math_parser.C, line 786: conversion
619 to integral type of smaller size could lose data (D:intconlosbit)
620 MathArrayInset * m = new MathArrayInset(halign.size(), 1);
621 ------------------------------------------------------------------------^
622 cxx: Info: ../../../lyx-devel/src/mathed/math_parser.C, line 804:
623 controlling expression is constant (D:boolexprconst)
625 -------------------------------^
626 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 94:
627 conversion to integral type of smaller size could lose data
629 int ncols() const { return colinfo_.size(); }
630 -----------------------------------^
631 cxx: Info: ../../../lyx-devel/src/mathed/math_gridinset.h, line 96:
632 conversion to integral type of smaller size could lose data
634 int nrows() const { return rowinfo_.size(); }
635 -----------------------------------^
636 cxx: Info: ../../../lyx-devel/src/mathed/math_symbolinset.C, line 75:
637 conversion to integral type of smaller size could lose data
639 mathed_char_dim(code2(), size_, sym_->id,
640 ------------------------------------------------^
641 cxx: Info: ../../../lyx-devel/src/mathed/math_symbolinset.C, line 92:
642 conversion to integral type of smaller size could lose data
644 drawChar(pain, code2(), size_, x, y, sym_->id);
645 -----------------------------------------------------^