Multi-cursor editing
-
Apparently the script is treating the
.
as the regular expression for “any single character”. Thus, when the script is run with only a.
character selected, you get a blinking (if so configured) caret at every position in the doc. This script modification corrects it:from Npp import editor first_line = editor.getFirstVisibleLine() editor.setSearchFlags(0) # <---------- the new line editor.setTarget(0, editor.getTextLength()) editor.multipleSelectAddEach() editor.rotateSelection() editor.setFirstVisibleLine(first_line)
I’m not sure of the complete set of possible arguments to
.setSearchFlags()
– it is not documented so well in the P.S. docs–but I found these in the Notepad++ source code:#define SCFIND_NONE 0x0 #define SCFIND_WHOLEWORD 0x2 #define SCFIND_MATCHCASE 0x4 #define SCFIND_WORDSTART 0x00100000 #define SCFIND_REGEXP 0x00200000 #define SCFIND_POSIX 0x00400000 #define SCFIND_CXX11REGEX 0x00800000
My modification to the script is using
SCFIND_NONE
. -
Definitively regex, or at least some of its functions are invoked in the original PS. I typed an
\s
at the end of the first paragraph —I mean the GNU License sample text—, then selected thebackslash
, run the script, then thes
and the script… PS ignored single characters and only take into consideration whole words, so when I selected the firstT
, PS did nothing, butThis
was selected and PS correctly matched the other two instances of the word.Anyway, the script modification you provided solved the issue. A big thanks for your assistance and fast reply.
Best Regards.
-
Thanks for testing and improving.
I haven’t noticed it yet but it makes sense.
The documentation for searchFlags is described here. -
@Ekopalypse said in Multi-cursor editing:
The documentation for searchFlags is described here.
Yes but that documentation falls flat when you need an actual number to pass to a function!
Is there some Python magic one can do to find these identifiers? What I mean is, if I do
dir(MENUCOMMAND)
in the P.S. console, I see:>>> dir(MENUCOMMAND) ['CLEAN_RECENT_FILE_LIST', 'EDIT_AUTOCOMPLETE', 'EDIT_AUTOCOMPLETE_CURRENTFILE', 'EDIT_AUTOCOMPLETE_PATH', 'EDIT_BEGINENDSELECT', ...
Some similar way of finding these “SCFIND_” things?
-
for readability you normally use FINDOPTION.NONE instead of the 0.
In order to get all values from such enum you can call its values method.
For example: FINDOPTION.values() would return{0: Npp.FINDOPTION.NONE, 1048576: Npp.FINDOPTION.WORDSTART, 2: Npp.FINDOPTION.WHOLEWORD, 4: Npp.FINDOPTION.MATCHCASE, 2097152: Npp.FINDOPTION.REGEXP, 8388608: Npp.FINDOPTION.CXX11REGEX, 4194304: Npp.FINDOPTION.POSIX}
-
@Ekopalypse said in Multi-cursor editing:
for readability you normally use FINDOPTION.NONE instead of the 0.
Yes, but you have to know that EXISTS first! :-)
To your point about “readability”…that’s why I was asking.
I would much rather NOT use the magic number of zero.I didn’t see anything that logically links
FINDOPTION
to the SCFIND nomenclature. Maybe I missed the connection. -
@Ekopalypse said in Multi-cursor editing:
For example: FINDOPTION.values() would return
Just a slight note for any future readers:
FINDOPTION.values()
at the Pythonscript console yields:>> FINDOPTION.values() Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: 'dict' object is not callable
The proper thing to do is
FINDOPTION.values
(no parentheses). -
Ooopps - you are right, thx for reporting.
Seems I have wrapped it incorrectly with my python3 plugin.Yes, not every enum has really the same, but most of the time similar, name as the normal c-headers have.
To get all the enums you can run globals() in the console or from a script. -
-
I’m sorry, but it’s still an alpha version.
As long as not all functions/methods work as described
you’re not really gonna enjoy it.
Had a nasty plugin crash yesterday because instead using
an signed integer I used an unsigned one. :-(But there will be fewer and fewer open issues.
And since I was wrong with the release date several times,
I prefer not to give a forecast until when a beta version can be expected.The actual situation, Corona, has one advantage - I have more time to work on PySnack (That’s what I want to call it).
-
@Ekopalypse said in Multi-cursor editing:
Thanks for testing and improving.
Glad to be of help. Let me know if more tests are needed.
Best Regards.
-
@dail said in Multi-cursor editing:
I use BetterMultiSelection
As do I - along with SurroundSelection and DoxyIt. Do you still support DoxyIt, I submitted a pull request a little while back.
Cheers.
-
Personally I haven’t used DoxyIt in years. I wouldnt say it’s not supported, just my interest is quite lacking.
In light of recent circumstances I find myself with copious amounts of free time currently, so I will make it a point to take a look at your PR soon.