[New Plugin] ExtSettings

sorry but to be honest, I am lost about your discussion with selection and highlighting. If we talk about the selecting lines then the scintilla functions
SCI_SETSELFORE(bool useSetting, colour fore) (this is fgColor which isn’t used by npp)
SCI_SETSELBACK(bool useSetting, colour back)
needs to be used. If it is about the other matches then it is smart highlighting
and what are you talking about?

After finishing the topic “selection highlighting” @tomasz1986 started talking about “current line highlighting”. I’ve messed up things in my answer and wanted to clarify later on. But I think we should let it go now…

Yeah, I was just happy that I could set “filling alpha” to “0” and “outline alpha” to “255”, so that Smart Highlighting would show only border with no background colour (which is the same as in Sublime Text, by the way). Then, I started asking about doing the same for ordinary (i.e. not smart) text selection, and the discussion went from there.

@dinkumoil I think I have found a small issue regarding the plugin’s settings and about windows. When I open any of them, and then switch to a different program in Windows, it is impossible to go back to Notepad++ by clicking its taskbar button. I can only go back by using Alt+Tab. Just for reference, as I have not checked other Windows versions, this is happening in Windows 7 Enterprise x64 with Classic Theme enabled.

found a small issue regarding the plugin’s settings … When I open any of them, and then switch to a different program in Windows, it is impossible to go back to Notepad++ by clicking its taskbar button.

the most difference, on my machine, is between 0 and 1.
And SC_TECHNOLOGY_DIRECTWRITE (1) is the one I used for some time now
and I like it with Roboto Mono font.
Between 1 and [2, 3] the changes are only visible, again, on my machine, when
zooming in as much as possible.
But I understand, that this might, depending on your directx settings and usage, be a different experience compared to mine.
If I change from 1 to 0 everything is MUCH thinner and harder to read.
(Everything means, of course, within scintilla only)

just to make it clear - it is all up to you to decide what you want to include into
your plugin and what you don’t want, I appreciate EVERY decision.
I come across of those settings just because of testing my scintilla wrapper
and see that there is something new or old, and remember that I’m actually
using it, and thinking it might fit into your plugin but as said,
those are ALWAYS just proposals.

I even don’t see the slight difference in font weight between SC_TECHNOLOGY_DEFAULT and the other modes that I can see in your first set of screen shots above. I use Source Code Pro font.

All in all, I have to thoroughly think about whether it’s worth to include this setting in my plugin.

Just for the record, font rendering is very heavily dependent both on the operating system, the monitor, the font, the user himself, and possibly many other variables. Just as an example, the exact same font, with the same type of rendering, may still look very different depending on the screen (e.g. CRT vs LCD, or TN vs IPS vs VN, etc.) which is being used.

Also, some people are simply more susceptible and notice even slight differences like that much more easily. I have personally experimented with different font rendering in Windows, and find the old GDI rendering much better for my eyes, while DirectWrite rendered text looks fuzzy to the point that I start to feel dizzy when trying to read it for a longer period of time. But again, this is just my case, and the situation may be totally reverse for someone else.

Thank you very much, @dinkumoil, for this very useful plugin, with numerous options ;-))

Some points concerning the options ( From top to bottom and from left to right ! ) :

Backspace unindents : Seems very useful when coding, but more accessory with simple text

Indentation guide lines : I could not be able to see the difference between the Python style and Standard style options !

White space style : IMO, the term Everywhere visible would be more appropriate than Always visible, in the drop-down list. But , don’t bother about this !

White space size : To my mind, only sizes from 2 to 4 seem practically exploitable ! Of course, a click on the Show All Characters icon, in the Toolbar or selection of the options View > Show Symbol > Show White Space and TAB or View > Show Symbol > Show All Characters resets the size of the space symbol to the default 2 value

Upper line spacing and Lower line spacing : I did some tests with the line below, containing some underscore characters ( \x5f ), followed with some macron characters ( \xaf )

____________________¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

And it happened that, with the Courier New default font :

Any size < -2, for Upper line spacing, does not display the macron characters

Any size < -1, for Lower line spacing, does not display the underscore characters. However, depending of the zoom factor, even the -1 value may not display the _.

Conclusion : the suitable values, whatever the zoom factor, seem to be :

Any value >= -2 for upper line spacing

Any value >= 0 for upper line spacing

Now, the vertical lines new feature is really interesting ;-)) Of course, if, after defining some of them, with your plugin, you enable the Vertical Edge Settings in Settings > Preferences... > Editing or switch from option Line Mode to Background mode or vice-versa, it deletes all the previous vertical lines defined and displays the classical vertical edge line !

Wrap mode : Again, I did not see any difference between the options Word boundaries and Whitespace characters, of the drop-down list :-(

Line number margin : Didn’t know this particularity. Nice !

Wrapping markers close to text may interest some people. I, personally, prefer that these marks remain at each extremity of the window, for better readability !

To be analog to the Notepad++ description, may be the Mark Highlighting title of the section should be renamedSmart Highlighting

Now, the numerous styles proposed to show the Smart Highlighting are valuable. I particularly like the 3 stylesStraight box, Underlined (2px, inset) and Colorized text , rather visible and easily identifiable from other N++ highlighting styles !

However, note that if you’ve changed the color of the Smart Highlighting, as soon as you switch for an other opened document, and switch back, immediately, to your initial document, any smart Highlighting zones is colored with the default green color :-(( I don’t even know, if this issue could be easily coded ?

Strangely, if you disable and re-enable the Smart Highlighting in Settings > Preferences... > Highlighting, while not changing current document, does keep the modified color of the Smart Highlighting !

Cursor beyond line endings : For adepts of the Virtual Space feature. Can be interesting if you need to easily write very far from current line ending !

Wrap cursor at line start : Seemingly, when your file contains lines of very different length and some very long lines, this feature prevents you from moving to the end of the previous line. However, why not use, instead, the Down and Up arrows keys to navigate, while keeping the same columns visible ? Just tell me what I miss, here !

Select full line : Again, I don’t see an immediate advantage to that feature !

Selection alpha : I spent more than a month to study color, in many aspects and how calculate the blending of two colors, involving the α factor, as well as some practical results relative to our beloved editor ! Refer below :

I think that the Close button should be selected, by default, in order to close while hitting the Enter key . May be, the possibility to close, while hitting the ESC key would be nice, too !

Could you give the user the opportunity to get multiple configurations ? For instance, regarding the vertical lines, we could have a configuration 1 with some vertical lines, a configuration 2 with other vertical lines starting at other columns and having other colors, and so on…

Probably, your .ini file could memorize ( Be sensible ! ) up to 5 completely different configurations. Just my idea ! Of course, your new window would give us the choice of the configuration to activate ;-))

Could you consider adding the SCI_SETCARETSTICKY feature ( 2458 ). Do you know it ?

Let’s suppose the caret is at column c, line n, in current N++ window

Then, you type in some text

Now, hitting the Down / Up arrow, the caret is automatically located line n+1 / n-1, at the same column c

You may decide, afterwards, of an other location column c1 and/or in an other line n1, with either a mouse click or a keyboard action

Type in, again, some chars, from column c1

As soon as you use the Down / Up arrow, the caret is moved on next / previous line, at the same c1 column

Of course, this feature is useful only when inserting different text, on the consecutive lines reached. Indeed, when text, to be inserted, is identical throughout all lines, the built-in column mode is more intuitive ;-))

More anecdotal, you could, also, consider the SCI_SETMARGINLEFT ( 2155 ) and SCI_SETMARGINRIGHT ( 2157 ) settings, which set the width of the blank margin, on both sides of text, in pixels ?

In general I can say that many of the settings depend heavily on personal taste, the use case (e.g. simple text editing or coding), the used theme, the used font and its size, and many other factors which don’t come to my mind at the moment. Whether somebody wants to use a certain setting or whether he finds it useful or not depends on all these factors. I’m only the guy who makes these settings accessible to the normal user who doesn’t want to deal with scripting plugins and sending Scintilla events to configure them, though they are not available through the Notepad++ user interface.

I could not be able to see the difference between the Python style and Standard style options !

To see the differences in Python and C++ code have a look at >>> these comments <<< where I talked about the different styles with DonHo.

the vertical lines new feature is really interesting. … if, after defining some of them, with your plugin, you enable the Vertical Edge Settings in Settings > Preferences... > Editing or switch from option Line Mode to Background mode or vice-versa, it deletes all the previous vertical lines defined and displays the classical vertical edge line !

The single vertical line (provided natively by Notepad++) and the multiple vertical lines features are exclusive in Scintilla, you can only activate one of them. There is nothing I can do about that.

Wrap mode : Again, I did not see any difference between the options Word boundaries and Whitespace characters, of the drop-down list :-(

The differences are mostly remarkable when watching source code, e.g. in C or C++:

Wrap mode “At word boundaries”:

Wrap mode “At spaces”:

may be the Mark Highlighting title of the section should be renamed Smart Highlighting

That’s a good point, I’ll put it on my list.

if you’ve changed the color of the Smart Highlighting, as soon as you switch for an other opened document, and switch back, immediately, to your initial document, any smart Highlighting zones is colored with the default green color

Seems like setting the smart highlighting color has to be done whenever a tab has been activated. I will put it on my list.

Strangely, if you disable and re-enable the Smart Highlighting in Settings > Preferences... > Highlighting, while not changing current document, does keep the modified color of the Smart Highlighting !

Nothing strange, toggling the smart highlighting feature and setting its color are two different Scintilla commands.

Wrap cursor at line start … Just tell me what I miss, here !

You miss nothing, its a question of personal taste. I’m a Delphi developer, thus I mostly use the Delphi IDE for coding. There I’m used to have no cursor wrapping at line start.

Selection alpha …

Thank you for providing these formulas, they could become handy for me at some time. But again, if and how someone uses this setting is up to him. It’s like always when telling a computer what to do: Garbage in -> Garbage out. I’m not a friend of the approach to fight human dumbness by technology, provided a certain setting can not cause serious damage or injuries.

I think that the Close button should be selected, by default, in order to close while hitting the Enter key . May be, the possibility to close, while hitting the ESC key would be nice, too !

and

Could you give the user the opportunity to get multiple configurations ?

I will think about it.

Could you consider adding the SCI_SETCARETSTICKY feature

I didn’t know that feature, but it could be useful. I will put it on my list.

More anecdotal, you could, also, consider the SCI_SETMARGINLEFT… and SCI_SETMARGINRIGHT … settings

I already thought about it but considered it to be “anecdotal” as well. But since Select full line is anecdotal too, I will think about including SCI_SETMARGINLEFT and SCI_SETMARGINRIGHT - equal rights for all anecdotal settings. ;-)

So, may be, it would be worth to add, in your plugin, a Default option, for the Indentation guide lines feature, which would let N++ decide, by itself !

I think about to remove the whole indentation guide line feature from my plugin. As you already noticed, Notepad++ now (since v7.8) switches to Python style by itself when it detects that the current active tab contains a Python code file and it switches to Standard style when it detects a non-Python file. Since this Scintilla setting has global scope, Notepad++ does this decision at every tab switch. I figured out that it does that even when changing the theme. So my plugin virtually has “to fight” against the build-in Notepad++ logic and, like when changing the theme, there are cicumstances it “looses” that fight. Since I don’t like non-robust features and I don’t want to fiddle around in Notepad++ too much, it’s likely to be the best to remove that feature.

you could consider a default one, which leave all the N++ options unchanged.

I think that’s not a good idea because the defaults of Notepad++ could change over time, thus I would have to synchronize my plugin with the changes in Notepad++. If a user wants a default configuration he only has to delete the settings file.

First, thank you for your work on this plugin, I’ve found it very useful!

I would like to report two small issues. The first is with adding vertical lines.
Expected Behavior: I enter a column, I click “Add”, I get a new vertical line in that list in the bottom left.
Actual Behavior: I enter a column, I click “Add”, and I get no response. I need to select a color first, even though the color picker implies that it’s defaulting to black.

This behavior led me to believe your plugin was bugged until I looked into it more. Making this a bit more user-friendly by actually having it default to black (or grey if you’re worried about people using dark themes) would help.

The second issue. With the Extended Settings menu open, when I alt-tab out of Notepad++, I cannot alt-tab back in.
Expected Behavior: Open ExtSetting Menu. Alt-tab onto a window that covers Notepad++. Alt-tab back to Notepad++. Notepad++ should be the top-level window graphically and in the alt-tab menu.
Actual Behavior. Open ExtSetting Menu. Alt-tab onto a window that covers Notepad++. Alt-tab back to Notepad++. Notepad++ is not the top-level window graphically, but IS the top-level window in the alt-tab menu.