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
4 posts Page 1 of 1
While working on a project I wanted to have two different colors of comments so I could quickly locate code blocks that were commented out on a short term basis. Since the language involved is Interactive Data Language (IDL, but not to be confused with some other languages called IDL) and IDL does not have block comments, I used the option of creating a Block Comment On value without a Block Comment Off and also did the same for the Block Comment On Alt. This is listed in the UltraEdit Syntax Highlighting help documentation as a way to get up to four sets of line comments. These extra line comments are supposed to be the same as ordinary line comments. But they don't act the same entirely.

Unlike words in ordinary Line Comments, words in the line comments made from Block Comments trigger code folding matches. In order to stop that, I had to add the comment marker characters to the /Ignore Fold Strings line. That worked, but in turn it killed my Comment Fold Strings.

UE, Windows 7 Enterprise
I'm not able to reproduce this with 32-bit UE v22.20.0.49 on Windows XP.

This is the beginning of the syntax highlighting wordfile I use for my batch files:

Code: Select all
/L1"Batch Files" Nocase Line Comment Num = 4rem  Line Comment Alt = :: Line Comment Valid Columns Alt = [1] Block Comment On = echo Block Comment On Alt = :# String Chars = " DisableMLS File Extensions = BAT CMD
/Delimiters = ! $   '()*+,./:;<=>@[\]^`{|}~
/Function String = "%:#++^([~^t^p :]+^)[ ^t]++$"
/Indent Strings = "("
/Unindent Strings = ")"
/Ignore Strings SOL = "rem " "::"
/Open Brace Strings =  "(" "[" "{"
/Close Brace Strings = ")" "]" "}"
/Open Fold Strings = "("
/Close Fold Strings = ")"
/Marker Characters = "!!%%"

Note: The character between $ and ' in second line is a horizontal tab character.

I tested code folding with a *.bat file containing:

Code: Select all
@echo off
rem Opening parenthesis (
echo Test 1
rem Closing parenthesis )

:: Opening parenthesis (
echo Test 2
:: Closing parenthesis )

echo Opening parenthesis (
echo Test 3
echo Closing parenthesis )

:#Opening parenthesis (
echo Test 4
:#Closing parenthesis )

if not "%USERNAME%" == "%USERPROFILE%" (
    echo Test 5

    echo Done.

Code folding is correct available only for the last two pairs of parentheses.

I don't have Open/Close Comment Fold Strings defined at all. Therefore this test might not be the right one for this issue.

Mick, could you post the beginning of the wordfile used for syntax highlighting Interactive Data Language files and an example IDL file demonstrating the issue?
Best regards from Austria
Here is the top of my modified IDL.UEW file.

idl_uew_top.png (44.58 KiB) Viewed 461 times

Here are examples of folding issues. When I remove the line Ignore Fold Strings =";*" then I get the wrong result on the top of the image. You can see that the PRO (procedure) keyword is matching with the comment word end because it is in a block comment that has been converted to a line comment.

If you look at the bottom of the image you see where the comment fold strings are ignored because they are in the converted block comment. This happens whether the Ignore Fold Strings line is present or not.

wrong_folds.png (62.34 KiB) Viewed 461 times

Now this image shows a couple of comments that are composed of true line comments. Here the comment fold strings work correctly.

right_fold1.png (24.46 KiB) Viewed 461 times
I could reproduce this issue and found others on testing block comment folding for nested block comments. I have just sent two emails to IDM support, see the files in the attached RAR archive.


Best regards from Austria
4 posts Page 1 of 1