Closes#2032
Added some more Change Case functions (Title Case, Sentence Case,
Invertcase, Randomcase).
Some of them have a normal and a blend version. The normal version will
change any formatting in the start/middle/end part of the word/sentence to
the chosen case. The blend version applies the changes only to the start
part but don't changes the middle/end part of the word/sentence. You can
use it when you want to keep some formatting in the middle/end part, for
instance CamelCase or proper nouns.
This feature allows users to monitor log files' writing, as Unix "tail -f"
command.
Here are the conditions of monitoring:
1. file to monitor should exist.
2. file will be set as readonly during monitoring.
3. each update will scroll to the last line.
closes#1007, closes#919, closes#834
When backups are enabled, playing back a macro that takes a while can
corrupt a file (see the mentioned issues). I tested this with a ~100,000
line text file, ~3.3MB in size. Created a macro of Down5, Delete10. Played
this till the end of the file. Took about 20s to run so it had a few
backup cycles during it. Reproduced it fairly easily and never had it
happen after this adjustment.
Fix macro playback inseting/removing characters randomly due to
auto-insert interfering during macro recording and playing back. (fixes
#649, fixes#970, fixes#304, fixes#992)
Make it take generic_string instead of TCHAR*, since at most callsites
we already have a generic_string.
Improve error handling. Depending on where we are in the function when
we get an error, we need to free the memory, unlock the memory, or
close the clipboard.
Note that if SetClipboardData succeeds then we should not do anything
more to the memory.
The session snapshot feature runs in its own thread and access to
Scintilla etc is not thread-safe. As a *temporary* and *non-exhaustive*
fix we guard some long-running operations (undo, redo, replace, sort)
with a mutex to prevent data corruption.
User can now choose between lexicographic, integer and decimal sorting.
For decimal sorting there are two further options: decimal point ('.')
or decimal comma (',').
When doing integer/decimal sort, the parsing is not as strict as
before. E.g during integer sorting the program will interpret "123abc"
as 123.
Performance of integer sorting has been improved by 30%.
The implementation of sorting is delegated to classes which implement
the new "ISorter" interface. Unfortunately due to template issues most
of the code had to go in the header file.