UDL: Suffix Mode
-
thanks for testing and sharing an alternative regex.
Concerning the script, if you just run the script it will flag the current
document being of interest.
If you would open multiple UDL documents and switch between them,
then you should see that those documents work only if the UDL name
is the one configured in the script. -
Thanks for this great piece of code, Eko, I had a very similar problem, and simply changed the symbol and the color in the relevant line to fit my case.
I was just wondering if you could help me with two additions, if it isn’t too much work to integrate:
-
I have some cases where I don’t just want to change the color of the text, but also change the text from italic to non italic:
int( —> int(
Is this possible? -
In an ideal case, I would like comment lines to be excluded from this. In my case every line that start with, or contains # would have to be ignored by the python script.
Thanks in advance, and have a nice day :)
-
-
I will follow up on this later today from at home as I’m finished with work today. YEAH :-D
-
Hi Alexander, concerning number 2 I would add
self.excluded_styles = [1, 2] # SCE_USER_STYLE_COMMENT=1 SCE_USER_STYLE_COMMENTLINE=2
to the init function like
def __init__(self): editor.callbackSync(self.on_updateui, [SCINTILLANOTIFICATION.UPDATEUI]) notepad.callback(self.on_langchanged, [NOTIFICATION.LANGCHANGED]) notepad.callback(self.on_bufferactivated, [NOTIFICATION.BUFFERACTIVATED]) self.excluded_styles = [1, 2] # SCE_USER_STYLE_COMMENT=1 SCE_USER_STYLE_COMMENTLINE=2 self.__is_lexer_doc = False self.lexer_name = None self.npp_hwnd = user32.FindWindowW(u'Notepad++', None) self.configure()
and modify the if clause line in paint_it function to
if (pos >= 0) and (editor.getStyleAt(pos) not in self.excluded_styles):
that would skip painting if the matched position is in a comment line or block
Regarding the first point, no, unfortunately scintilla doesn’t allow to modify
the font attributes via an indicator other than the foreground color.
But I’m confused why it is italic at all, in UDL you must have it set explicitly, didn’t you? -
Thanks for the quick work, Eko!
Sadly, the code doesn’t work :(Now, I checked the conditional function, and noticed that getStyleAt returns 0 if the pos is out of bounds, but weirdly, when I use this line:
if (pos >= 0) and (editor.getStyleAt(pos) == 0):
the code works and does so just as I intended. Comment lines are not changed, but normal lines are.
I really don’t get why it does, because I expected it to only return 0 in case of an error, and not for normal lines in the text, but apparently that’s how it works.
Concerning the italic: Yes, I set a lot of variably type names like int and double to italic, but the language I’m programming in also has int(“4”) and string(4) as functions at the same time.
-
sorry, Hochmut kommt vor dem Fall, I didn’t test it otherwise I would have
seen that paint_it is a staticmethod and as such it has no access to self object.Remove the @staticmethod decorator and add self to be the first parameter
to paint_it like thisdef paint_it(self, color, pos, length): if (pos >= 0) and (editor.getStyleAt(pos) not in self.excluded_styles): editor.setIndicatorCurrent(0) editor.setIndicatorValue(color) editor.indicatorFillRange(pos, length)
If you open the console window while having the old version running,
you should see that it throws an error - so it didn’t do anything at all.getStyleAt returns the style id and you compare with style 0, so it works as long as the part to be colored is currently colored with the style 0.
Which means, your code is good as well if you are only interested
in modifying parts of code which are used by style 0. -
regarding the italic issue, what about using a delimiter with
openint(
and closing)
and setting it color to the default color? -
@Ekopalypse said in UDL: Suffix Mode:
If
I just used this line now:
if pos >= 0 and (editor.getStyleAt(pos) not in [1, 2]):and nice tip for the italics! That worked perfectly. I first tried to just make a keyword int(, but that didn’t work.
-
or like this yes :-) Many roads to Rome I guess :-D
-
self.regexes[(0, self.rgb(79, 175, 239) | SC_INDICVALUEBIT)] = (r’fn[A-Za-z0-9_]+?$|([A-Za-z0-9_]+?$)', 1)
Will adding ^\w+.(gif|png|jpg|jpeg)$ instead of r’fn[A-Za-z0-9_]+?$|([A-Za-z0-9_]+?$)’ make it work on .gif .png .jpg and .jpeg suffixes?
-
-
@Ekopalypse Yeah highlighting the entire word thst contains .gif or the others
-
This post is deleted! -
This post is deleted! -
@Ekopalypse Nvm yet again i just added everything ie [0-9a-zA-Z_/\-.|+-#$!"%&()=?*@'~\ˇ^\˘\°;:,{}\˛`\˙\´\¨\¸\ß\Ł\ł\¤\×\÷\č\ć\ž\đ\p\š\€\§] and it works xD sry for the spam
-