~~~~~~~~~~~~~~~~~~~~
First thing: thank you very much for this incredible work :)
I love it.
Thanks.
My problem is that I cannot figure how to make comments colorized in all above cases and not in multiplication.
~~~~~~~~~~~~~~~~~~~~~~~
I was able to achieve it, it works for this simple code snippet, but it may be hard to define entire language in this way.
1) you define line comments normally, that covers first four cases
(note that these four cases are also covered by Delimiter3 below)
2) define operators and delimiters like this:
Breakdown:
Delimiter1: starts with = and extends until end of line
Delimiter2: starts with ; and extends until end of line
Delimiter3: starts with * and extends until end of line
Delimiter1 allows nesting of Delimiter2
Delimiter2 allows nesting of Delimiter3
In this way you allow Delimiter3 only outside Delimiter1 and inside Delimiter2.
But this is relatively complex, and it won't work with Official Notepad++ release (I just compiled a brand new beta to achieve this). New beta version will be available in few days if you want to play with it, but I recommend a simpler solution:
1) Define line comments as starting with double asterisk (**), and set "Allow anywhere"
2) Define multiplication as one asterisk (*)
Adjust you code like this:
~~~~~~~~~~~~~~~~~~~~~~~~ This is comment This is comment too This is also comment (with preceding whitespace) Multiplication below:
VAR1 = VAR2 * VAR3 ; comments can start after semicolon
VAR4 = VAR5 * VAR6 ; comments after semicolon and space
VAR7 = VAR8 * VAR9 ; ** another comment
~~~~~~~~~~~~~~~~~~~~~~
And it should work right away.
This is still within you syntax rules (good), but it requires changing current code base (bad).
That is what I can do for you right now. New major update to UDL should bring better support for this kind of problem (strings with multiple meaning, depending on position and context)
BR,
Loreia
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
See below a logging text example I would like to highlight:
...
2013-09-20 09:41:40,665 DEBUG [DBLogDAOImpl] Checking if script 'script-0.6.2.sql' has been run
2013-09-20 09:41:40,665 DEBUG [DBLogDAOImpl] Checking if script 'script-1.0.sql' has been run
2013-09-20 09:41:40,665 DEBUG [DBLogDAOImpl] Checking if script 'script-1.1.sql' has been run
2013-09-20 09:41:40,665 DEBUG [DBLogDAOImpl] Checking if script 'script-1.2.sql' has been run
2013-09-20 09:41:40,665 DEBUG [DBLogDAOImpl] Checking if script 'script-1.2.1.sql' has been run
2013-09-20 09:41:40,681 DEBUG [DBLogDAOImpl] Checking if script 'script-1.3.sql' has been run
...
2013-09-19 19:09:31,543 INFO [EventDispatcher] Leaving EventDispatcher
2013-09-19 19:09:31,643 WARN [MultiCastUtils] Could not find NIC with name 'eth6-0'
2013-09-19 19:09:31,643 WARN [LocalAddressResolverStrategy] Haven't found IP address for NIC eth6-0, will try again 9 times
2013-09-19 19:09:31,687 WARN [MultiCastUtils] Could not find NIC with name 'eth6-0'
2013-09-19 19:09:31,687 WARN [LocalAddressResolverStrategy] Haven't found IP address for NIC eth6-0, will try again 8 times
In fact I use Delimiter Style with:
Open= '
Close= '
so 'script-0.6.2.sql', 'eth6-0' has been matched : OK
but I have problem with - Haven't - text that I don't want to matched.
Is it possible to have something like this, so space is taking into account ?
Open= ((SPC))'
Close= '((SPC))
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Is it possible to have something like this, so space is taking into account ?
Open= ((SPC))'
Close= '((SPC))
I am experimenting with something similar for UDL3. If it works out fine, you will be able to distinguish between 'string' and haven't in your log.
For the time being, either do a replace in your log ("haven't" for "havent"), or define delimiter open sequence as:
OPEN: (('script 'eth))
CLOSE: '
BR,
Loreia
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi!
First of all many thanks for the great UDL support in Notepad++!
I am however having some problems to get the folding to work properly. (See attachment)
Sometimes the folding Markers Appear, sometimes they don't, and sometimes they are at seemingly random positions. Even if they are at their intended location, they sometimes make the document jump around, but at least they fold the indicated parts.
I suppose I'm setting thins up in a wrong way, but I'm pretty much stuck here now.
Also, but mostly unrelated: is there a way to use the already existing NP++ languages as a base for UDL? This could be really useful if you just wand to add a few keywords or separate them into groups and so on without changing the original language definition.
Let me know if you need any more information and again thanks!
I know it is late, but I just re-read you post and I realized you can solve your problem by defining haven't as Operator1 type. In this way apostrophe in the middle of the word can never trigger Delimiter start.
BR,
Loreia
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
this just a quick patch, real solution will be available in UDL3. For now, just build a list of words that you use and that contain apostrophe sign. Its not prefect, but that's the best UDL2 can do.
BR,
Loreia
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
this is a bug that I resolved few weeks ago, but never found time to send patch to Don. However you can use beta version that has a patch build in. Download it from here:
expression separators (e.g. ;)
multiple separate folding lists
((SOL)) start of line
((SPC)) whitespace
suffix keyword (in addition to prefix keyword)
somehow, resolve ' being both an apostrophe, and a possible delimiter...
The ability to put more than one possible ending in close, such as ((EOL)) ' might help?
But this last one - confusion / inability to distinguish a symbol that is both used as a delimiter pair () [] '' but can also occur in other contexts is IMO the biggest limitation.
Overall, great stuff. :)
Last edit: Mordachai 2013-10-23
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
UDL 2.0 can't help here. Sorry about that. Only LINE COMMENTS (not multi-line comments) support positional limitation.
New UDL 3.0 lifts this restriction, and allows all types to define position.
Subscribe to this thread to get notification when UDL3.0 matures enough for beta testing phase.
BR,
Loreia
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Loreia, I have the following issue with numbers and UDL. In my language, $ can be used for two purposes: to reference a global variable, in the form $foo, and also as a number shortcut meaning the size of the currently-referenced array, in these forms: array[$], array[2..$]. For clarification, .. is used to indicate a range.
In order to fulfill the first purpose, I have set $ as a prefix-style keyword. I have also set .. as a range character. However, there is no way I have found to allow me to tell UDL to treat $ as a number. I can use ..$ as a suffix2 in order to make [2..$] work, but only if I remove .. as my range character, which is no good. I could also set $ as a non-prefix keyword to achieve highlighting for array[$], but then array[2..$] will no longer be recognized as a range.
Is there any way for me to get this working in UDL?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Another thing, although much more minor: . is an operator of sorts (actually references a property of objects) in my language when used on variables, and numbered objects starting with #, like #123456.name. However, it has the usual meaning of a decimal place when used in a constant number, like 50.5. It'd be nice if there were some way to tell UDL not to treat it as an operator when used in the middle of a number with no # prefix.
Last edit: jxtor 2013-12-07
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
UDL does not support extending range number characters. Only digits 0123456789 represent numbers. If you need to go beyond that, you need to define prefix that is followed by a number character (one of 0123456789). Prefix on its own does not represent a number in UDL.
I guess in your case I should add Prefix3 option where Prefix3 type would represent number on its own. This would be an interesting option for UDL3.X phase.
It'd be nice if there were some way to tell UDL not to treat it as an operator when used in the middle of a number with no # prefix.
This is indeed a bug. Not because I made some mistake in the code, but simply because I never thought of such a combination :-)
I will fix it in UDL3.0.
BR,
Loreia
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you for your reply, Loreia. I will look forward to UDL 3!
One other thing I have discovered that would be very useful would be the following. I have used the keywords feature to highlight the built-in functions of my languages. However, these keywords are then always highlighted, whether or not they are actually being used as a function.
For example, I was just looking at a piece of code that contained the statement:
class = x:class();
In this case, "class" by itself is merely a variable, whereas x:class() is calling the built-in class function on object x. My UDL setup, however, will highlight both instances of 'class' the same way. I would suggest that there be a method to select whether a group of keywords should only be highlighted if preceded or succeeded by certain operators or, especially, by delimiters.
In this way, all languages that use functions like foo(args) would be able to highlight 'foo' only when it is a function, as denoted by the () afterwards.
Please forgive me if such a feature already exists, but I have not been able to find it.
Cheers!
Last edit: jxtor 2013-12-13
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Code folding works fine if file has Windows EOL format, but is misaligned when file has Unix EOL format. I am using v6.5.2. Is there a patch available to fix this problem. Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, may be this thread would have been better than the help section for my question in help.
So here I formulate it as suggestion.
Unfortunately only blank ' ' and ',' are stopping prefix mode from the keyword-tab to continue eating up the next characters so that for example the bracket-highlighting can't recognize their corresponding opening or closing bracket.
a) Wouldn't it make sense if the brackets () and {} and [] as well stop the prefix mode and/or
b) the user has the option to define in the style-section of the keywords characters that stops it?
I am working with a userdefined-Language.
Second suggestion would it be possible to add automatically all the keywords to the spell-check?
Thanks in advance xsxs
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
prefix mode ends when any forward-matching type starts (Operator1, Folder in code 1, Delimiters, Comments). In your case, just define () and {} and [] as Operator1 type and you will get desired effect.
BR,
Loreia
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
There's one major problem with this plugin: It doesn't allow to add a parsing to existing one, like HTML.
Someone made a Smarty template (*.tpl) available, but it's useless since you lose all the HTML code styling.
I tryed to edit the Notepad++ XML files, just to add simple {{ syntax }} to be recognized as comment, but files stylers.xml, langs.xml... don't react :-(
Last edit: mzvarik 2014-01-28
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Defiant Plumber,
~~~~~~~~~~~~~~~~~~~~
First thing: thank you very much for this incredible work :)
I love it.
My problem is that I cannot figure how to make comments colorized in all above cases and not in multiplication.
~~~~~~~~~~~~~~~~~~~~~~~
I was able to achieve it, it works for this simple code snippet, but it may be hard to define entire language in this way.
1) you define line comments normally, that covers first four cases
(note that these four cases are also covered by Delimiter3 below)
2) define operators and delimiters like this:
Breakdown:
Delimiter1: starts with = and extends until end of line
Delimiter2: starts with ; and extends until end of line
Delimiter3: starts with * and extends until end of line
Delimiter1 allows nesting of Delimiter2
Delimiter2 allows nesting of Delimiter3
In this way you allow Delimiter3 only outside Delimiter1 and inside Delimiter2.
But this is relatively complex, and it won't work with Official Notepad++ release (I just compiled a brand new beta to achieve this). New beta version will be available in few days if you want to play with it, but I recommend a simpler solution:
1) Define line comments as starting with double asterisk (**), and set "Allow anywhere"
2) Define multiplication as one asterisk (*)
Adjust you code like this:
~~~~~~~~~~~~~~~~~~~~~~~~
This is comment
This is comment too
This is also comment (with preceding whitespace)
Multiplication below:
VAR1 = VAR2 * VAR3 ; comments can start after semicolon
VAR4 = VAR5 * VAR6 ; comments after semicolon and space
VAR7 = VAR8 * VAR9 ; ** another comment
~~~~~~~~~~~~~~~~~~~~~~
And it should work right away.
This is still within you syntax rules (good), but it requires changing current code base (bad).
That is what I can do for you right now. New major update to UDL should bring better support for this kind of problem (strings with multiple meaning, depending on position and context)
BR,
Loreia
I'm very interested in having having a wildcard for whitespace, like ((SPC)) suggested above.
The problem I want to solve is this:
I want it ';['..';]' to collapse like the top-right snapshot, but with ';' instead of ';,' for comments.
I really appreciate what you've created here! Thanks!
Hi Foolish Mortal (LOL at nickname):
you can already achieve what you want in UDL2.
Just define ';' as line comment, and then set "Folding in comment" to:
open: '['
close: ']'
BR,
Loreia
Thank you Loreia! That does exactly what I want.
Hi all,
See below a logging text example I would like to highlight:
In fact I use Delimiter Style with:
Open= '
Close= '
so 'script-0.6.2.sql', 'eth6-0' has been matched : OK
but I have problem with - Haven't - text that I don't want to matched.
Is it possible to have something like this, so space is taking into account ?
Open= ((SPC))'
Close= '((SPC))
Hi ILLICO,
I am experimenting with something similar for UDL3. If it works out fine, you will be able to distinguish between 'string' and haven't in your log.
For the time being, either do a replace in your log ("haven't" for "havent"), or define delimiter open sequence as:
OPEN: (('script 'eth))
CLOSE: '
BR,
Loreia
Thanks,
I will wait for UDL3.
Hi!
First of all many thanks for the great UDL support in Notepad++!
I am however having some problems to get the folding to work properly. (See attachment)
Sometimes the folding Markers Appear, sometimes they don't, and sometimes they are at seemingly random positions. Even if they are at their intended location, they sometimes make the document jump around, but at least they fold the indicated parts.
I suppose I'm setting thins up in a wrong way, but I'm pretty much stuck here now.
Also, but mostly unrelated: is there a way to use the already existing NP++ languages as a base for UDL? This could be really useful if you just wand to add a few keywords or separate them into groups and so on without changing the original language definition.
Let me know if you need any more information and again thanks!
Hi ILLICO,
I know it is late, but I just re-read you post and I realized you can solve your problem by defining haven't as Operator1 type. In this way apostrophe in the middle of the word can never trigger Delimiter start.
BR,
Loreia
Thanks, that solve the problem with n't, but I also have lost of french sentences with c'est, L', etc. So this is not 100% solution.
Hi ILLICO,
this just a quick patch, real solution will be available in UDL3. For now, just build a list of words that you use and that contain apostrophe sign. Its not prefect, but that's the best UDL2 can do.
BR,
Loreia
Hi Nikolai,
this is a bug that I resolved few weeks ago, but never found time to send patch to Don. However you can use beta version that has a patch build in. Download it from here:
http://goo.gl/Bo3emS
BR,
Loreia
Thank you for your quick reply, I'll give it a go.
Improvements:
expression separators (e.g. ;)
multiple separate folding lists
((SOL)) start of line
((SPC)) whitespace
suffix keyword (in addition to prefix keyword)
somehow, resolve ' being both an apostrophe, and a possible delimiter...
The ability to put more than one possible ending in close, such as ((EOL)) ' might help?
But this last one - confusion / inability to distinguish a symbol that is both used as a delimiter pair () [] '' but can also occur in other contexts is IMO the biggest limitation.
Overall, great stuff. :)
Last edit: Mordachai 2013-10-23
Bug: why would 1.0 be formatted with the 1 colorized as a number, but the .0 be uncolorized (default color)?
.5 works, 300 works, but nnn.mmm fails (I've set zero prefixes or extras or suffixes etc., in number style)
Changing decimal separator has no apparent effect (N++ 6.5)
Last edit: Mordachai 2013-10-23
hi,
Thank you for this UserDefinedLanguage module.
I use a language with comments are defined:
Start with: C flag (only on 1st columm)
End with: $ (not necessary on the same line)
4 examples:
C commentary example $
C multiline
commentary example $
C080000 GO TO, STEP 100000 $
C100000 CALCULATE,
'pi' = 3.14 $
Please help me for setup UserDefinedLanguage module for this comment.
(Sorry for my English)
Cyrillev
Hi Cyrillev,
UDL 2.0 can't help here. Sorry about that. Only LINE COMMENTS (not multi-line comments) support positional limitation.
New UDL 3.0 lifts this restriction, and allows all types to define position.
Subscribe to this thread to get notification when UDL3.0 matures enough for beta testing phase.
BR,
Loreia
Hi Loreia, I have the following issue with numbers and UDL. In my language, $ can be used for two purposes: to reference a global variable, in the form $foo, and also as a number shortcut meaning the size of the currently-referenced array, in these forms: array[$], array[2..$]. For clarification, .. is used to indicate a range.
In order to fulfill the first purpose, I have set $ as a prefix-style keyword. I have also set .. as a range character. However, there is no way I have found to allow me to tell UDL to treat $ as a number. I can use ..$ as a suffix2 in order to make [2..$] work, but only if I remove .. as my range character, which is no good. I could also set $ as a non-prefix keyword to achieve highlighting for array[$], but then array[2..$] will no longer be recognized as a range.
Is there any way for me to get this working in UDL?
Another thing, although much more minor: . is an operator of sorts (actually references a property of objects) in my language when used on variables, and numbered objects starting with #, like #123456.name. However, it has the usual meaning of a decimal place when used in a constant number, like 50.5. It'd be nice if there were some way to tell UDL not to treat it as an operator when used in the middle of a number with no # prefix.
Last edit: jxtor 2013-12-07
Hi jxtor,
UDL does not support extending range number characters. Only digits 0123456789 represent numbers. If you need to go beyond that, you need to define prefix that is followed by a number character (one of 0123456789). Prefix on its own does not represent a number in UDL.
I guess in your case I should add Prefix3 option where Prefix3 type would represent number on its own. This would be an interesting option for UDL3.X phase.
This is indeed a bug. Not because I made some mistake in the code, but simply because I never thought of such a combination :-)
I will fix it in UDL3.0.
BR,
Loreia
Thank you for your reply, Loreia. I will look forward to UDL 3!
One other thing I have discovered that would be very useful would be the following. I have used the keywords feature to highlight the built-in functions of my languages. However, these keywords are then always highlighted, whether or not they are actually being used as a function.
For example, I was just looking at a piece of code that contained the statement:
class = x:class();
In this case, "class" by itself is merely a variable, whereas x:class() is calling the built-in class function on object x. My UDL setup, however, will highlight both instances of 'class' the same way. I would suggest that there be a method to select whether a group of keywords should only be highlighted if preceded or succeeded by certain operators or, especially, by delimiters.
In this way, all languages that use functions like foo(args) would be able to highlight 'foo' only when it is a function, as denoted by the () afterwards.
Please forgive me if such a feature already exists, but I have not been able to find it.
Cheers!
Last edit: jxtor 2013-12-13
Code folding works fine if file has Windows EOL format, but is misaligned when file has Unix EOL format. I am using v6.5.2. Is there a patch available to fix this problem. Thanks.
Hi, may be this thread would have been better than the help section for my question in help.
So here I formulate it as suggestion.
Unfortunately only blank ' ' and ',' are stopping prefix mode from the keyword-tab to continue eating up the next characters so that for example the bracket-highlighting can't recognize their corresponding opening or closing bracket.
a) Wouldn't it make sense if the brackets () and {} and [] as well stop the prefix mode and/or
b) the user has the option to define in the style-section of the keywords characters that stops it?
I am working with a userdefined-Language.
Second suggestion would it be possible to add automatically all the keywords to the spell-check?
Thanks in advance xsxs
Hi xsxs,
prefix mode ends when any forward-matching type starts (Operator1, Folder in code 1, Delimiters, Comments). In your case, just define () and {} and [] as Operator1 type and you will get desired effect.
BR,
Loreia
There's one major problem with this plugin:
It doesn't allow to add a parsing to existing one, like HTML.
Someone made a Smarty template (*.tpl) available, but it's useless since you lose all the HTML code styling.
I tryed to edit the Notepad++ XML files, just to add simple {{ syntax }} to be recognized as comment, but files stylers.xml, langs.xml... don't react :-(
Last edit: mzvarik 2014-01-28