Bug 12406 fixed: In SciNotes, whereami numbering failed when with name starting with... 44/10944/2
Calixte DENIZET [Fri, 22 Mar 2013 09:39:38 +0000 (10:39 +0100)]
Change-Id: I0099180511018a60bd929e6f5d874e32897e2b3c

scilab/CHANGES_5.4.X
scilab/modules/scinotes/src/java/jflex/function.jflex
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/FunctionScanner.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/SciNotesLineNumberPanel.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/ScilabDocument.java

index 65367ca..21816ae 100644 (file)
@@ -601,6 +601,9 @@ Bug fixes
 * Bug #12405 fixed - Floating point errors could lead to an infinite loop in
                      ticks computation.
 
+* Bug #12406 fixed - In SciNotes, whereami numbering failed when with variable name
+                     starting with endfunction. 
+
 * Bug #12418 fixed - Continuation was incorrectly supported in bvode.
 
 * Bug #12442 fixed - pathconvert() help page was not clear about input arguments.
index 3149fe7..ed0490a 100644 (file)
@@ -105,7 +105,7 @@ break = ".."(".")*{white}*{comments}
 brokenline = ([^\.]* | ([^\.]*"."[^\.]+)+){break}
 
 id = [a-zA-Z%_#!$?][a-zA-Z0-9_#!$?]*
-spec = [^a-zA-Z0-9_#!$?]?
+spec = [^a-zA-Z0-9_#!$?]
 
 equal = {white}* "=" {white}*
 
index 02bdf1f..f4e4e72 100644 (file)
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 07/03/13 11:06 */
+/* The following code was generated by JFlex 1.4.3 on 22/03/13 10:37 */
 
 //CHECKSTYLE:OFF
 
@@ -15,7 +15,7 @@ import javax.swing.text.Element;
 /**
  * This class is a scanner generated by
  * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 07/03/13 11:06 from the specification file
+ * on 22/03/13 10:37 from the specification file
  * <tt>function.jflex</tt>
  */
 public final class FunctionScanner {
@@ -69,7 +69,7 @@ public final class FunctionScanner {
         "\7\0\4\1\1\2\1\3\1\4\1\5\1\1\1\6" +
         "\1\7\1\1\1\10\1\1\1\11\1\12\1\4\1\13" +
         "\1\4\2\1\1\14\1\1\2\15\11\0\1\16\10\0" +
-        "\1\17\14\0\1\20\2\0\2\21";
+        "\1\17\14\0\1\20\3\0\1\21";
 
     private static int [] zzUnpackAction() {
         int [] result = new int[68];
@@ -1290,7 +1290,6 @@ public final class FunctionScanner {
                             case 65:
                                 switch (zzInput) {
                                     case 13:
-                                        zzIsFinal = true;
                                         zzState = 66;
                                         break zzForNext;
                                     default:
index 1fc22a7..8c2d151 100644 (file)
@@ -440,7 +440,7 @@ public class SciNotesLineNumberPanel extends JPanel implements CaretListener, Do
             if (chg == null) {
                 // change occurred only in one line
                 ScilabDocument.ScilabLeafElement line = (ScilabDocument.ScilabLeafElement) root.getElement(root.getElementIndex(e.getOffset()));
-                if (line.isFunction()) {
+                if (line.needLineNumberRepaint()) {
                     updateLineNumber();
                     repaint();
                 }
index deaa97b..0f62936 100644 (file)
@@ -865,6 +865,7 @@ public class ScilabDocument extends PlainDocument implements DocumentListener {
         public static final int BROKEN = 4;
 
         private boolean visible = true;
+        private int previousType;
         private int type;
         private FunctionScanner.FunctionInfo info;
         private boolean broken;
@@ -903,6 +904,7 @@ public class ScilabDocument extends PlainDocument implements DocumentListener {
                 oldName = info.functionName;
             }
 
+            previousType = type;
             type = funScanner.getLineType(getStartOffset(), getEndOffset());
 
             if ((type & BROKEN) == BROKEN) {
@@ -930,6 +932,13 @@ public class ScilabDocument extends PlainDocument implements DocumentListener {
         }
 
         /**
+         * @return true if the Line number panel need to be refreshed (useful in whereami mode)
+         */
+        public boolean needLineNumberRepaint() {
+            return type == FUN || type == ENDFUN || type != previousType;
+        }
+
+        /**
          * If the previous line is broken, then this line is a part of it
          * so we need to resetType of the previous.
          */