Find and Add To Selection In 7.7
-
@dinkumoil - I guess your nppexec script can be reduced to this
sci_sendmsg SCI_SETSEARCHFLAGS SCFIND_WHOLEWORD sci_sendmsg 2690 // SCI_TARGETWHOLEDOCUMENT sci_sendmsg SCI_GETSELECTIONEMPTY if $(MSG_RESULT) == 1 then sci_sendmsg 2688 // SCI_MULTIPLESELECTADDNEXT sci_sendmsg 2689 // SCI_MULTIPLESELECTADDEACH
What do you think?
-
@Ekopalypse said:
What do you think?
Except the missing
endif
;) - nice catch, it works!Seems like
SCI_MULTIPLESELECTADDEACH
needs an active selection andSCI_MULTIPLESELECTADDNEXT
doesn’t.EDIT: Seems like even the
endif
is not necessary, I apologize. ;) -
aahhhhh - I constantly forget about using it. :-)
Yes, it works without but as the syntax defines it, it should be used, imho.
Who knows what a future update will do. -
Hi, @alan-kilborn and All,
I admit that my enthusiasm is a bit excessive ! Just because I’m rather an old guy, which knew
MS-DOS 5.0
,WinWord 6
andExcel 5
and, even, some older goodies. So, I’m a little overwhelmed to see all these new powerful features ;-))By the way, I’m no longer surprised to create rectangular selections, over, let say,
50,000
lines , with N++, for years now ! Quite similar, except that all the cursors are aligned ;-))Cheers,
guy038
-
I thought this was a three post thread and then it was done! NPP Community delivers! I wound up putting @dail 's LuaScript into the startup script for the Lua plugin and it’s working great.
Out of curiosity I tried installing NppExec on the 7.7 minimalist install and trying out @dinkumoil 's script but it would only select the current word and never go into multiedit mode. (7.7 32bit, NppExec 0.6RC3). There are no errors in the console. I don’t know if the minimalist version and my older, installed version are conflicting in some way, but I couldn’t get the script to work.
@Alan-Kilborn , thanks for the python script, unfortunately I’m still on 1.0.8 so I haven’t tried it out yet. But once I’m back to being current, I will.
My job is being inconvenient and making me do stuff, so I need to sit tight on upgrading for a bit until I have time to iron out any old plugin issues that I may run into after the upgrading. Thank you one and all. This is a great community.
-
@cipher-1024 said:
trying out @dinkumoil 's script but it would only select the current word and never go into multiedit mode.
I guess you only tried the first or second version of the script. The final one and the shortened version of @Ekopalypse some postings above should work.
-
@cipher-1024 said:
I tried installing NppExec on the 7.7 minimalist install…and trying out the script…but it would only select the current word and never go into multiedit mode
Multi-editing is disabled in a clean install or a portable install:
Did you go into the preferences and enable it like this?:
Alternatively, this can be added at the top of the NppExec script, to turn multi-selection ability ON:
sci_sendmsg 2563 1
Here’s where the 2563 comes from, in the Scintilla interface file:
# Set whether multiple selections can be made set void SetMultipleSelection=2563(bool multipleSelection,)
-
…and I guess for the same reason the Pythonscript presented earlier could benefit from the addition near the top of:
editor.setMultipleSelection(True) # in case not enabled in the Preferences
-
@Alan-Kilborn , you got it in one. Who would have thought you’d have to enable multi-edit to multi-edit… NppExec script is working on my 7.7 test install. Thanks again.
-
Besides enabling Multi-Editing (as explained by @Alan-Kilborn in his comment), I just had to call the functions directly, just like Scintilla documentation specifies:
-
SCI_MULTIPLESELECTADDNEXT
adds the next occurrence of the main selection within the target to the set of selections as main. If the current selection is empty then select word around caret. -
SCI_MULTIPLESELECTADDEACH
is similar toSCI_MULTIPLESELECTADDNEXT
but adds multiple occurrences instead of just one.
For me, it was unnecessary to call
SCI_TARGETWHOLEDOCUMENT
, so, for selecting all instances of the word at once, you could just callSCI_MULTIPLESELECTADDNEXT
followed bySCI_MULTIPLESELECTADDEACH
:// selects all instances of the selected word (or the word around the caret) sci_sendmsg 2688 // SCI_MULTIPLESELECTADDNEXT sci_sendmsg 2689 // SCI_MULTIPLESELECTADDEACH
…which has the same effect of simply calling
SCI_MULTIPLESELECTADDEACH
twice:// selects all instances of the selected word (or the word around the caret) sci_sendmsg 2689 // SCI_MULTIPLESELECTADDEACH sci_sendmsg 2689 // SCI_MULTIPLESELECTADDEACH
Or, instead of blindly calling it twice, you could check if something is already selected with
SCI_GETSELECTIONEMPTY
(as used on other comments) and then call it only once:// selects all instances of the selected word (or the word around the caret) sci_sendmsg SCI_GETSELECTIONEMPTY if $(MSG_RESULT) == 1 then sci_sendmsg 2688 // SCI_MULTIPLESELECTADDNEXT endif sci_sendmsg 2689 // SCI_MULTIPLESELECTADDEACH
PS: It would be really nice to have both commands (
SCI_MULTIPLESELECTADDNEXT
andSCI_MULTIPLESELECTADDEACH
) available for hotkeys in “Settings” > “Shortcut Mapper” > “Scintilla commands”. -