Bad Bracket Highlighter
-
So as a prevention from pressing ctrl+m inserting a Mac line-ending into a non-Mac encoded file (as well as possibly ctrl+j inserting a Unix line-ending into a non-Unix encoded file), see the
CHARADDED
Pythonscript in this thread. This script should be set to be run upon Notepad++ startup.More comments to come on this topic…which unfortunately is off-topic for this thread (but I didn’t do that). :-)
-
Hello, @salviasage, @scott-sumner and All,
Oh, my God ! there a very simple way to prevent the
Ctrl+ M
shortcut from inserting the CR character (\x{000D}
) , which is displayed in reverse video !.. Like me, simply, affect theCtrl+ M
shortcut to theMark
dialog ( Search > Mark… ) :-)))Et voilà !
Cheers,
guy038
-
very simple way
Yes, but ctrl+m is just a special case of ALL of the control-plus-(mostly)letter codes that one hasn’t assigned shortcut functions to. The Pythonscript in that other thread takes care of all of them at once, so fat-fingered users should not see odd black-boxed things again in their editor window (like the picture at the bottom of this posting)…unless they Undo (ctrl+z) the change made by the script. Sadly, I don’t believe there is a way to remove something from the undo buffer without purging the entire thing. :-(
It’s a more complete solution: It takes care of the original problem of ctrl+m inserting a
\r
– without having to assign it a function, and some other things that a user may experience and not like.By the way, the script won’t interfere with things like ctrl+a or ctrl+c or ctrl+v, etc, because those (and your ctrl+m, @guy038) get snared as commands at a higher level and don’t pass through–like unassigned ones–to be added as “text” to the current editor window.
(those are ctrl+w and ctrl+e, respectively, as text) -
So one way to avoid having mixed line-endings in your file is to automatically run a check each time the file is saved, and if any inconsistent line-endings are found, correct them at that time. Here’s a Pythonscript that will do that; I call it
LineEndingRepairAtSave.py
:try: LERAS__bad_eol_regex_via_good_eol_dict except NameError: LERAS__bad_eol_regex_via_good_eol_dict = { '\r\n' : r'\r(?!\n)|(?<!\r)\n', '\n' : r'\r\n?', '\r' : r'\r?\n', } def LERAS__callback_npp_FILEBEFORESAVE(args): correct_eol_for_this_file = ['\r\n', '\r', '\n'][notepad.getFormatType()] editor.rereplace(LERAS__bad_eol_regex_via_good_eol_dict[correct_eol_for_this_file], correct_eol_for_this_file) notepad.callback(LERAS__callback_npp_FILEBEFORESAVE, [NOTIFICATION.FILEBEFORESAVE])
The idea is that you run it once per Notepad++ session and it will stand guard against the tyranny of mixed line-endings in your saved files. Maybe it takes a noticeable amount of time to run on really large files…dunno…use at your own risk.
-
I want to cry with joy at this moment…
This is what makes notepad++ great…
A special thanks to Scott as usual for his contribution.
-
@SalviaSage said:
I want to cry with joy at this moment…
LOL. …and I thought you’d complain that it isn’t an as-you-type or an as-you-paste solution! I still wonder why mixed line-endings is a real problem for you. I’ve been using Notepad++ for a long time and it rarely is a problem for me…
-
Slight change to the Pythonscript I posted earlier. I noticed that does not work correctly when the Notepad++ user executes a Save All. Here’s an update to (only) the callback function part that will fix this, just replace the old
LERAS__callback_npp_FILEBEFORESAVE
function definition with the following:def LERAS__callback_npp_FILEBEFORESAVE(args): notepad.activateBufferID(args['bufferID']) correct_eol_for_this_file = ['\r\n', '\r', '\n'][notepad.getFormatType()] editor.rereplace(LERAS__bad_eol_regex_via_good_eol_dict[correct_eol_for_this_file], correct_eol_for_this_file)
-
Dear Scott.
I am afraid this script and the broken bracket highlighter is no longer working.
I confirmed that the startup script of the PythonScript plugin is working by using some other scripts.
But, these 2 which are very similar to each other in nature, are just not working.
I don’t know why, I tried fixing it and I could not. So, I have to appeal to you for help.
:(
-
Ignore above, there were 2 syntax errors in there for some reason,
and I fixed it. I must have made a mistake myself. -