UE v22.10.0.10 produces empty function list for Unicode files with Perl function string (fixed)

UE v22.10.0.10 produces empty function list for Unicode files with Perl function string (fixed)

13
Basic UserBasic User
13

    Jun 16, 2015#1

    I have today update from 22.0.0.66 to 22.10.0.10 and my function list is gone. I have no idea why. I can search with the definition for procedures and find this in the file, but the list is empty. I would load an older version but this is only possible with email? Why this?

    My function list is for Progress and is with Perl syntax.

    6,602548
    Grand MasterGrand Master
    6,602548

      Jun 16, 2015#2

      At Advanced - Configuration - Editor Display - Syntax Highlighting the path to the directory is displayed containing the *.uew syntax highlighting definition files (wordfiles) containing also the regular expressions used to find strings for the function list view. The default wordfiles directory is %APPDATA%\IDMComp\UltraEdit\wordfiles whereby %APPDATA% references the value of the environment variable APPDATA (application data directory).

      The files in %APPDATA%\IDMComp\UltraEdit\wordfiles are NOT updated on first run of UltraEdit after upgrade from UE v22.0.0.66 to v22.10.0.10. The installer itself never modifies any file in %APPDATA%\IDMComp\UltraEdit. For details on wordfiles update mechanism see Readme for the Syntax Highlighting forum.

      You need to check now:
      1. Right click into Function List view.
        Is context menu item List for all Project Files checked, but no project is opened or the active file is not a project file according to project settings?
        Click on List for all Project Files to toggle off this option if this is possible at all (project opened).
      2. Is the active file syntax highlighted at all?
        This is indicated on status bar at bottom of UltraEdit main window as well as in menu View - View as (Highlighting File Type).
        If the active file is not syntax highlighted, there is no wordfile set for active file. Perhaps there is a backup of the wordfile you have used before in a subdirectory of %APPDATA%\IDMComp\UltraEdit which must be moved into the right wordfiles directory. Such a change in wordfiles directory made outside of UltraEdit requires a restart of UltraEdit.
      3. In case of a project being currently opened, open View - Project Settings and verify if a project specific wordfile is configured for this project and this wordfile still exists.
      If none of the suggestions above work, compress entire %APPDATA%\IDMComp\UltraEdit\wordfiles directory and an example file with at least 1 procedure with ZIP or RAR using best compression and attach this archive file to your next post for investigation by me.
      Best regards from an UC/UE/UES for Windows user from Austria

      13
      Basic UserBasic User
      13

        Jun 17, 2015#3

        Sorry, I have uninstalled Version 22.10.0.10 and reinstalled 22.0.0.55 that I downloaded in April. The wordfile was correct found, but the function list was away. With version 22.0.0.55 is all correct and the function list is here. I must write an email for an older version, really? That's a bad joke.

        6,602548
        Grand MasterGrand Master
        6,602548

          Jun 18, 2015#4

          I can think of three possible scenarios:
          1. UE v22.10.0.10 has a bug in ? regular expression engine resulting in the regular expressions in the wordfile are not finding the strings right anymore.
          2. UE v22.0.0.55 has a bug in ? regular expression engine resulting in invalid regular expressions in the wordfile are finding strings, but now after this bug is fixed in v22.10.0.10, the invalid regular expressions are not working anymore.
          3. The code processing the found strings and displaying them in function list has a bug in v22.10.0.10.
          ? ... UltraEdit or Perl depending on what is specified in the wordfile (Perl according to information in first post).
          Best regards from an UC/UE/UES for Windows user from Austria

          13
          Basic UserBasic User
          13

            Jun 18, 2015#5

            I use UltraEdit since 2012 and in all versions was the function list ok. Only version 22.10.0.10 has the problem. I use the perl syntax and the string for procedurs is very simple.

            Code: Select all

            ^[ \t]*PROCEDURE[ \t]+([\w-]+)

            6,602548
            Grand MasterGrand Master
            6,602548

              Jun 18, 2015#6

              I downloaded wordfile progress91.uew and replaced in this wordfile

              Code: Select all

              /Function String = "PROCEDURE ^(*^):"
              /Function String 1 = "PROCEDURE ^(*^)."
              /Function String 2 = "^(FUNCTION *^) RETURN*"
              by

              Code: Select all

              /Function String = "^[ \t]*PROCEDURE[ \t]+([\w-]+)"
              /Regexp Type = Perl
              Then I created a file with name test.p and wrote into this file:

              Code: Select all

                 PROCEDURE proc1-xxx
              
              procedure 2proc
              
              	PROCEDURE	proc3
              
              	  procedure 	 proc4
              Line with proc3 has tabs instead of spaces. Line with proc4 has tabs and spaces mixed.

              In function list was displayed for this file:

              Code: Select all

              2proc
              proc1-xxx
              proc3
              proc4
              So everything was fine.

              Then I thought about file encoding and converted the file from ASCII/ANSI to Unicode and refreshed the function list. This resulted in an empty function list.

              Now I replaced in the wordfile

              Code: Select all

              /Function String = "^[ \t]*PROCEDURE[ \t]+([\w-]+)"
              /Regexp Type = Perl
              by

              Code: Select all

              /Function String = "%[ ^t]++PROCEDURE[ ^t]+^([0-9A-Z_^-]+^)"
              So instead of using a Perl regular expression finding procedures case-insensitive, an UltraEdit regular expression is used now finding the same strings as the Perl regular expression ^[ \t]*PROCEDURE[ \t]+([\w\-]+) also case-insensitive.

              Escaping - within square brackets to explicitly declare this character as literal character for the character set instead of meaning FROM - TO is better although Perl regular expression engine interprets - at beginning or end of character list in square brackets as literal character automatically.

              The UltraEdit regular expression function string works for the progress file being encoded in ANSI as well as in Unicode (UTF-16, UTF-8).

              So there is indeed a bug in UE v22.10.0.10.

              Perl regular expression function strings in a wordfile executed on a Unicode encoded file result in an always empty function list.

              Please report this issue to IDM support.

              PS: Perl regexp \w matches not only 0-9A-Za-z_ like [0-9A-Za-z_] or [0-9a-z_] or [0-9A-Z_] in a case-insensitive UltraEdit/Unix/Perl regular expression, but also all other word characters as defined in Unicode table which includes the German characters ÄÖÜäöüß, accented letters, and many, many more characters. I doubt that Progress supports other characters than 0-9A-Za-z_- for a procedure name and therefore it could be better not using \w in function string to exclude invalid procedure names.

              Update on 2015-06-19: I reported this issue also by email to IDM support and received on same day user verification build v22.10.0.11 where this problem is fixed already.

              Update on 2015-07-06: Public hotfix version v22.10.0.12 is released with this issue fixed.
              Best regards from an UC/UE/UES for Windows user from Austria