User to user discussion and support for UltraEdit, UEStudio, UltraCompare, and other IDM applications.

Syntax highlighting, code folding, brace matching, code indenting, and function list
6 posts Page 1 of 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.
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 Austria
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.
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 Austria
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-]+)
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 Austria
6 posts Page 1 of 1