+ fix: new undo transaction split

+ chg: menu entry of undo transaction split at line-breaks
This commit is contained in:
Rainer Kottenhoff 2019-08-28 09:48:17 +02:00
parent eca1199186
commit 5e78d51abe
24 changed files with 59 additions and 60 deletions

View File

@ -1 +1 @@
2601
2602

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Boe&kmerke"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Âûëó÷ûöü ñ&ëîâà àëüáî ðàäîê\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "&Ìóëüòûâûëó÷ýííå ¢ñ³õ óâàõîäæàííÿ¢\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "&Çàêëàäê³"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Selektiere &Wort oder Zeile\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multiselektion &aller Fundstellen\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Neue Undo &Tippsequenz bei Zeilenumbruch", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Neue Undo &Transaktion bei Zeilenumbruch", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Lesezeichen"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Boo&kmarks"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Boo&kmarks"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Seleccionar &palabra o líneas\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-selección &todas coincidencias\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "&Marcadores"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Sélectionner &mot ou lignes\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-sélection &toutes correspondances\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Sig&nets"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Szó vag&y sorok kijelölése\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Összes egyezés ki&jelölése\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Köny&vjelzõk"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Seleziona &Parola o Linea\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-Selezione di &tutte le occorrenze\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Boo&kmarks"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "単語や行を選択(&W)\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "一致する文字列すべてにマルチカーソル(&A)\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "ブックマーク(しおり)(&K)"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "단어 또는 쥴 선택(&W)\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "모든 일치 항목 다중 선택(&A)\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "책갈피(&K)"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Selectie &woord of lijnen\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-selectie alle Matching\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Blad&wijzers"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Zaznacz wyraz lub wiersz\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multiwybór-wszystko pasuj¹ce\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Zak³adki"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Boo&kmarks"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Âûáðàòü ñ&ëîâî èëè ñòðîêó\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "&Ìóëüòèâûáîð âñåõ ñîâïàäåíèé\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "&Çàêëàäêè"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Boo&kmarks"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Boo&kmarks"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "Boo&kmarks"

View File

@ -270,7 +270,7 @@ BEGIN
MENUITEM "选定单词或行(&W)\tCtrl+Spc", IDM_EDIT_SELECTWORD
MENUITEM "选定全部匹配(&A)\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES
MENUITEM SEPARATOR
MENUITEM "Split Undo &Typing Sequence on Line Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
MENUITEM "Split Undo &Transaction at Line-Breaks", IDM_VIEW_SPLIT_UNDOTYPSEQ_LNBRK
END
MENUITEM SEPARATOR
POPUP "书签(&K)"

View File

@ -3,7 +3,7 @@
<assemblyIdentity
name="Notepad3"
processorArchitecture="*"
version="5.19.827.2601"
version="5.19.828.2602"
type="win32"
/>
<description>Notepad3 BETA</description>

View File

@ -386,12 +386,12 @@ static bool _InUndoRedoTransaction();
static void _SaveRedoSelection(int token);
static int _SaveUndoSelection();
static int _UndoRedoActionMap(int token, UndoRedoSelection_t** selection);
static void _SplitUndoTransaction();
static void _SplitUndoTransaction(const int iModType);
// ----------------------------------------------------------------------------
static void _DelayClearZoomCallTip(int delay);
static void _DelayUndoRedoTypingSequenceSplit(int delay);
static void _DelaySplitUndoTransaction(int delay, int iModType);
#ifdef _EXTRA_DRAG_N_DROP_HANDLER_
static CLIPFORMAT cfDrpF = CF_HDROP;
@ -465,26 +465,23 @@ static int msgcmp(void* mqc1, void* mqc2)
static void _MQ_AppendCmd(CmdMessageQueue_t* const pMsgQCmd, int cycles)
{
if (!pMsgQCmd) { return; }
CmdMessageQueue_t* pmqc = NULL;
DL_SEARCH(MessageQueue, pmqc, pMsgQCmd, msgcmp);
if (!pmqc) { // NOT found
pmqc = AllocMem(sizeof(CmdMessageQueue_t), HEAP_ZERO_MEMORY);
pmqc->hwnd = pMsgQCmd->hwnd;
pmqc->cmd = pMsgQCmd->cmd;
pmqc->wparam = pMsgQCmd->wparam;
pmqc->lparam = pMsgQCmd->lparam;
pmqc = pMsgQCmd;
pmqc->delay = cycles;
DL_APPEND(MessageQueue, pmqc);
}
if (cycles < 2) {
pmqc->delay = -1; // execute now (do not use PostMessage() here)
SendMessage(pMsgQCmd->hwnd, pMsgQCmd->cmd, pMsgQCmd->wparam, pMsgQCmd->lparam);
}
else {
pmqc->delay = (pmqc->delay + cycles) / 2; // increase delay
}
if (pmqc->delay < 2) {
pmqc->delay = -1; // execute now (do not use PostMessage() here)
SendMessage(pMsgQCmd->hwnd, pMsgQCmd->cmd, pMsgQCmd->wparam, pMsgQCmd->lparam);
}
}
// ----------------------------------------------------------------------------
@ -732,7 +729,7 @@ static void _CleanUpResources(const HWND hwnd, bool bIsInitialized)
DL_FOREACH_SAFE(MessageQueue, pmqc, dummy)
{
DL_DELETE(MessageQueue, pmqc);
FreeMem(pmqc);
//~FreeMem(pmqc); // No AllocMem Anymore
}
if (UndoRedoSelectionUTArray != NULL) {
@ -3484,7 +3481,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
break;
case IDT_TIMER_UNDO_REDO_SPLIT:
_SplitUndoTransaction();
_SplitUndoTransaction((int)lParam);
break;
@ -3864,18 +3861,19 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_EDIT_CUT:
{
if (s_flagPasteBoard)
if (s_flagPasteBoard) {
s_bLastCopyFromMe = true;
_BEGIN_UNDO_ACTION_
if (!SciCall_IsSelectionEmpty())
{
SciCall_Cut();
}
else { // VisualStudio behavior
_BEGIN_UNDO_ACTION_
if (SciCall_IsSelectionEmpty())
{
// VisualStudio behavior
SciCall_CopyAllowLine();
SciCall_LineDelete();
}
else {
SciCall_Cut();
}
_END_UNDO_ACTION_
UpdateToolbar();
}
@ -4028,13 +4026,14 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
_END_UNDO_ACTION_
break;
case IDM_EDIT_CUTLINE:
{
if (s_flagPasteBoard) {
s_bLastCopyFromMe = true;
}
_BEGIN_UNDO_ACTION_
SendMessage(Globals.hwndEdit,SCI_LINECUT,0,0);
SciCall_LineCut();
_END_UNDO_ACTION_
UpdateToolbar();
}
@ -6993,12 +6992,10 @@ inline static LRESULT _MsgNotifyLean(const LPNMHDR pnmh, const SCNotification* c
DWORD const timeout = Settings2.UndoRedoSplitTimeout;
if (timeout != 0UL) {
if (timeout > _MQ_IMMEDIATE) {
_DelayUndoRedoTypingSequenceSplit(timeout);
_DelaySplitUndoTransaction(timeout, iModType);
}
else {
if (!((iModType & SC_PERFORMED_UNDO) || (iModType & SC_PERFORMED_REDO))) {
_SplitUndoTransaction();
}
_SplitUndoTransaction(iModType);
}
}
_SetSaveNeededFlag(true);
@ -7091,20 +7088,18 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific
UpdateVisibleHotspotIndicators();
if (scn->linesAdded != 0) {
if (Settings.SplitUndoTypingSeqOnLnBreak) {
_SplitUndoTransaction();
if (Settings.SplitUndoTypingSeqOnLnBreak && (scn->linesAdded == 1)) {
_SplitUndoTransaction(iModType);
}
UpdateMarginWidth();
}
DWORD const timeout = Settings2.UndoRedoSplitTimeout;
if (timeout != 0UL) {
if (timeout > _MQ_IMMEDIATE) {
_DelayUndoRedoTypingSequenceSplit(timeout);
_DelaySplitUndoTransaction(timeout, iModType);
}
else {
if (!((iModType & SC_PERFORMED_UNDO) || (iModType & SC_PERFORMED_REDO))) {
_SplitUndoTransaction();
}
_SplitUndoTransaction(iModType);
}
}
_SetSaveNeededFlag(true);
@ -8051,11 +8046,11 @@ static void _DelayClearZoomCallTip(int delay)
// _DelayClearZoomCallTip()
//
//
static void _DelayUndoRedoTypingSequenceSplit(int delay)
static void _DelaySplitUndoTransaction(int delay, int iModType)
{
static CmdMessageQueue_t mqc = MQ_WM_CMD_INIT(IDT_TIMER_UNDO_REDO_SPLIT, 0);
mqc.hwnd = Globals.hwndMain;
//mqc.lparam = (LPARAM)bForceRedraw;
mqc.lparam = (LPARAM)iModType;
_MQ_AppendCmd(&mqc, (UINT)(delay <= 0 ? 0 : _MQ_ms(delay)));
}
@ -9312,10 +9307,13 @@ static int _UndoRedoActionMap(int token, UndoRedoSelection_t** selection)
// _SplitUndoTransaction()
//
//
static void _SplitUndoTransaction() {
static void _SplitUndoTransaction(const int iModType)
{
if (!_InUndoRedoTransaction()) {
SciCall_BeginUndoAction();
SciCall_EndUndoAction();
if (!((iModType & SC_PERFORMED_UNDO) || (iModType & SC_PERFORMED_REDO))) {
SciCall_BeginUndoAction();
SciCall_EndUndoAction();
}
}
}

View File

@ -219,6 +219,7 @@ DeclareSciCallR2(FindText, FINDTEXT, DocPos, int, flags, struct Sci_TextToFind*,
// Operations
DeclareSciCallV0(Cut, CUT)
DeclareSciCallV0(LineCut, LINECUT)
DeclareSciCallV0(Copy, COPY)
DeclareSciCallV0(Paste, PASTE)
DeclareSciCallV0(Clear, CLEAR)

View File

@ -7,8 +7,8 @@
#define SAPPNAME "Notepad3"
#define VERSION_MAJOR 5
#define VERSION_MINOR 19
#define VERSION_REV 827
#define VERSION_BUILD 2601
#define VERSION_REV 828
#define VERSION_BUILD 2602
#define SCINTILLA_VER 420
#define ONIGURUMA_REGEX_VER 6.9.3
#define UCHARDET_VER 2018.09.27