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

General and specific configuration/INI settings
13 posts Page 1 of 1
How do you create new custom language templates?

I use ColdFusion (CFML) and noticed that there's no dedicated smart template list. I tried to make one by cloning the empty (default) "batch-tpl.xml" language template (to "cfml-tpl.xml" and "coldfusion-tpl.xml", restarted UE and still don't see it in the "template list". (I've enabled "show all languages" and see CSS, HTML, Java, JavaScript, JSON & XML.)

I also reinstalled "ColdFusion" wordfile (ColdFusion_SQL), but it's pretty outdated and made my own "ColdFusion" wordfile that I'm expanding to work with CFCs and new CFML syntax that has been added since 2012 (the last version of the default UE wordfile.)

Is there a good resource to learn "how to create a custom UltraEdit language template" w/rules regarding the syntax, etc. Is there some sort of flag in the wordfile that enables language-specific smart templates?

I'm creating this template because there are smart templates that I want to create, but only have them display if I'm specifically editing ColdFusion. (I'm currently adding code fragments to the "global" template list and this is not ideal.)

Thanks.
There is absolutely no need to copy/create template files manually and edit them in UltraEdit although that is possible because template files are XML files.

  1. Click with secondary (right) mouse button into the Template List view in free area to open its context menu containing the menu item Modify Templates. This opens the Modify Templates dialog window.
  2. Select at top right corner of the Modify Templates dialog window the syntax highlighting language respectively language template to create or modify.
  3. Press on + below the Templates list, enter name for the template, and enter next template content and perhaps also a description, and perhaps check one or both options for this template.
  4. Redo the third step as often as needed to define all templates.
The button Help at bottom right corner of Modify Templates dialog window opens the appropriate help page for this dialog explaining the format and options for tag contents.

The dialog is a modeless dialog which means it is possible to access also for example the document window below to select there text to copy and paste into tag Content field.

If configuration setting Disable drag & drop is not checked at Advanced - Settings or Configuration - Editor - Miscellaneous it is even possible to select a text snippet in current file and drag & drop the selected text into the template view to create a new template with a name to enter next with the selected text as template content. It depends on where the selected text is dropped in the template view if a global, a layout or a language template is created.

Please note that the context menu of template view depends on where exactly the secondary mouse button click is executed: on free area, on a template group name, or on a specific template.

See forum topic Smart templates management for detailed information about template files management.
Best regards from Austria
Okay ... but what if the language I want to create a smart template for "is not listed" in step #2?

The existing "ColdFusion" syntax wordfile is bad/outdated. I've already encountered issues where changes that I made were overwritten and I'd prefer for that to not happen again. I created a separate "coldfusion.uew" wordfile and works fine for color syntax and tag completion, but I do not see "coldfusion" or "cfml" as a language choice when editing templates.

Please try adding "ColdFusion" as a language and let me know if you see "ColdFusion" as one of the smart template group options.
One thing that Mofi did not mention (perhaps because it is so obvious) is that you need to have a file in the language you want to write templates for open as the active tag and that file is recognized by syntax highlighting.

For instance, I have a half dozen programs open in my UltraEdit session right now. Most are Python, but I have a text config file and an IDL file open too. When I look at the Template List while the active tab contains a Python program, I have Global, Balanced, and Python as choices, with a lot of Python templates available. If the config file tab is active, I have only Global and Balanced, since I do not have a syntax highlighting file for text. If I have the IDL program tab as active, I have Global, Balanced, and IDL choices but there are no IDL templates since I haven't chosen to make any.
On another note, if I have a text file with a "CFM" extension open in the editor and select the following menu option, UltraEdit crashes.

Coding | Tools | Code Template (drop down)

If I edit a "CSS" file, clicking the same drop-down is fine (as well as clicking the top of the button which isn't the drop down.)
@MickRC3

I have "ColdFusion" listed at the bottom as the language AND the syntax color coding is working.

Please enable "ColdFusion" as a language. Create an empty text file with a "CFM" extension and see if your experience is any different. There's no "ColdFusion" option for me and accessing the quick menu from the navigation crashes UE.
Here's a screenshot of my environment. The wordfile is identified & being used. The syntax is correct... but there's no "ColdFusion" or CFML" language options to use when generating Smart Templates.
UE_MissingCFML_20170720143204.png
UE_MissingCFML_20170720143204.png (90.38 KiB) Viewed 196 times
I have UE 21.20 at work and UE 23 at home. I can only do this sort of testing at home. What version are you using? Looks like it is 24x? And submit your ColdFusion wordfile (with a name that does not conflict with the old ColdFusion wordfile) to the wordfile repository so I can try it.
it looks like the default "coldfusion_sql.uew" wordfile that is available directly from UltraEdit is outdated.
https://www.ultraedit.com/resources/wf/ ... on_sql.uew

There's a new "ColdFusion8" wordfile (which is still outdate), but this seems to have been updated and is displayed as a smart template language group.
https://www.ultraedit.com/resources/wf/coldfusion8.uew

is there any way to determine version and/or compatibility of the "uew" wordfiles? I'm not sure what's wrong with the default ColdFusion file (which is displayed & downloaded via the admin menu.)

I think I'll start over... with the "coldfusion8" wordfile as by base and continue adding support from there.
The wordfiles on wordfiles download page which can be also downloaded and uploaded via GitHub and installed since UltraEdit v24.00 directly from within UltraEdit are user-submitted without any verification by IDM. Unfortunately this means many of the wordfiles contains lots of mistakes in language definition and some are so badly written that they can't be used for creation of smart language templates.

I quickly looked on all user-submitted ColdFusion wordfiles and they are all full of mistakes. Please compress your wordfile into a ZIP or RAR archive file and upload the archive file as attachment to your next post. I will look into it and fix all errors in the wordfile. Then it should be no problem to create the smart language templates file. On weekend I will look also on all other user-submitted ColdFusion wordfiles and fix all the errors to avoid that in future other users of UE/UES using them have the same problems as you.

It could be that I need your ColdFusion language knowledge for fixing all errors in the ColdFusion wordfiles because I know nothing about ColdFusion. I hope you help me when I stuck on a problem which I can't solve without knowledge of ColdFusion language.



Update on 2017-07-23:

I have attached the revised user-submitted ColdFusion wordfiles.

The most interesting one for me was the most likely oldest one coldfusion431.uew which contained the keyword Nocase twice and having no language name (very bad for many reasons nowadays).

I updated my SortLanguage macro to automatically remove Nocase duplicates from first line of a language file and handle languages without name by adding "Language Number" whereby the number is taken from begin of language definition line. The later modification of my macro was really important as the language without name resulted on this wordfile with last color group also modified in an endless running loop near end of macro execution which needed to be broken by me with hitting key ESC. The updated macro SortLanguage is not yet published.

Most of the changes made on the files where done by my syntax tools macros.

I'm not sure if the changes made by me on function strings in coldfusion_sql.uew result in a better function list. I hope so, but I really don't know which strings should be matched and which ones ignored by the original UltraEdit regular expressions and which part of each matched string should be displayed in function list. Jamo, please let me know anything you can tell me about the function strings and what they should find and display in function list.

Later when having them perhaps further improved with your help I will send them IDM for upload on their server replacing the existing ones.

Attachments

Best regards from Austria
Thanks. I'll take a look at the modified wordfile.

[separate issue, but potentially related to wordfiles] Regarding auto-closing tags, I noticed that HTML's BR and INPUT tags don't auto-generate the end tag. (ie, "<br></br>") There are many CFML tags that are similar and can cause problems if they are added (ie, most custom tags).

What's the best way to add tags to an "ignore/don't auto-close" list? (and is this documented anywhere?) Is this control in the wordfiles? If so, I haven't been able to figure it out by viewing the HTML & XML files.
It is hard coded in source code of UltraEdit/UEStudio which tags in a section syntax highlighted with a language having language marker keyword HTML_LANG have no end tag according to HTML standards. So automatic closing of tags is not customizable. And a tag of an empty element which ends with /> is of course also not automatically closed.

It is only customizable which tags are displayed: opening tags without tags like <p>, opening tags without or with attributes like <p style="color:red">, opening tags which require at least one attribute like <a (<a> is missing in wordfile) and end tags like </p> if the element has one (otherwise missing in wordfile).
Best regards from Austria
ok... I didn't realize that. I thought it may have been a setting somewhere that I could find.

There are many ColdFusion (CFML) tags that do not require closing tags. Closing some of them can actually cause data loss or internal server errors. For example, the following CFML tags are prohibited from having end tags.
    abort
    applet
    application
    argument
    associate
    authenticate
    break
    chartdata
    col
    collection
    continue
    cookie
    dbinfo
    directory
    else
    elseif
    error
    exit
    feed
    flush
    forward
    ftp
    graphdata
    header
    httpparam
    image
    imap
    import
    include
    index
    input
    insert
    invokeargument
    ldap
    location
    log
    loginuser
    logout
    mailparam
    object
    objectcache
    param
    pdfparam
    pop
    procparam
    procresult
    property
    queryparam
    registry
    rethrow
    retry
    return
    schedule
    search
    servlet
    servletparam
    set
    sleep
    slider
    throw
    update
    video
    videoplayerparam
    wddx
    x_
    zipparam

Here are some related articles:
http://code.rawlinson.us/2015/11/closing-tag-requirements-of-coldfusion.html
http://cfbestpractices.blogspot.com/2012/11/know-ramifications-of-closing-empty.html
https://stackoverflow.com/a/7544785/693068
https://github.com/SublimeText/ColdFusion/issues/149
13 posts Page 1 of 1