diff --git a/language/common_res.h b/language/common_res.h index 9ad12bc28..117674a56 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -370,9 +370,9 @@ #define CMD_SCROLLDOWN 20004 #define CMD_CTRLLEFT 20005 #define CMD_CTRLRIGHT 20006 -//#define CMD_DELETEBACK 20007 +#define CMD_DELETEBACK 20007 #define CMD_CTRLBACK 20008 -//#define CMD_CLEAR 20009 +#define CMD_CLEAR 20009 #define CMD_CTRLDEL 20010 #define CMD_CTRLTAB 20011 #define CMD_RECODEDEFAULT 20012 diff --git a/src/Edit.c b/src/Edit.c index 147ef0381..ecb7a1597 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -7816,6 +7816,27 @@ void EditBookMarkLineRange(HWND hwnd) } +//============================================================================= +// +// EditDeleteMarkerInSelection() +// +void EditDeleteMarkerInSelection() +{ + if (Sci_IsStreamSelection() && !SciCall_IsSelectionEmpty()) + { + DocPos const posSelBeg = SciCall_GetSelectionStart(); + DocPos const posSelEnd = SciCall_GetSelectionEnd(); + DocLn const lnBeg = SciCall_LineFromPosition(posSelBeg); + DocLn const lnEnd = SciCall_LineFromPosition(posSelEnd); + DocLn const lnDelBeg = (posSelBeg <= SciCall_PositionFromLine(lnBeg)) ? lnBeg : lnBeg + 1; + DocLn const lnDelEnd = (posSelEnd > SciCall_GetLineEndPosition(lnEnd)) ? lnEnd : lnEnd - 1; + for (DocLn ln = lnDelBeg; ln <= lnDelEnd; ++ln) { + SciCall_MarkerDelete(ln, -1); + } + } +} + + //============================================================================= // // _HighlightIfBrace() diff --git a/src/Edit.h b/src/Edit.h index 581d73caa..38917f484 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -130,6 +130,7 @@ void EditBookmarkToggle(HWND hwnd, const DocLn ln, const int modifiers); void EditMarkAllOccurrences(HWND hwnd, bool bForceClear); void EditFoldMarkedLineRange(HWND hwnd, bool bHideLines); void EditBookMarkLineRange(HWND hwnd); +void EditDeleteMarkerInSelection(); void EditSelectionMultiSelectAll(); void EditSelectionMultiSelectAllEx(EDITFINDREPLACE edFndRpl); diff --git a/src/Notepad3.c b/src/Notepad3.c index b65d51151..c85fc5bd1 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -4174,6 +4174,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) { if (!Settings2.NoCutLineOnEmptySelection) { _BEGIN_UNDO_ACTION_; + SciCall_MarkerDelete(Sci_GetCurrentLineNumber(), -1); SciCall_LineCut(); _END_UNDO_ACTION_; } @@ -4193,6 +4194,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) s_bLastCopyFromMe = true; } _BEGIN_UNDO_ACTION_; + SciCall_MarkerDelete(Sci_GetCurrentLineNumber(), -1); SciCall_LineCut(); _END_UNDO_ACTION_; } @@ -4371,6 +4373,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_EDIT_DELETELINE: { _BEGIN_UNDO_ACTION_; + SciCall_MarkerDelete(Sci_GetCurrentLineNumber(), -1); SciCall_LineDelete(); _END_UNDO_ACTION_; } @@ -4429,11 +4432,14 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) } break; - //case CMD_DELETEBACK: - // ///~_BEGIN_UNDO_ACTION_; - // SciCall_DeleteBack(); - // ///~_END_UNDO_ACTION_; - // break; + case CMD_DELETEBACK: + { + ///~_BEGIN_UNDO_ACTION_; + EditDeleteMarkerInSelection(); + SciCall_DeleteBack(); + ///~_END_UNDO_ACTION_; + } + break; case CMD_VK_INSERT: SciCall_EditToggleOverType(); @@ -5863,9 +5869,10 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; + case CMD_CLEAR: case IDM_EDIT_CLEAR: - //case CMD_CLEAR: ///~_BEGIN_UNDO_ACTION_; + EditDeleteMarkerInSelection(); SciCall_Clear(); ///~_END_UNDO_ACTION_; break; @@ -5971,10 +5978,12 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) _END_UNDO_ACTION_; } else { - if (iStartPos != iEndPos) + if (iStartPos != iEndPos) { SciCall_DelWordRight(); - else // iStartPos == iEndPos + } else { // iStartPos == iEndPos + SciCall_MarkerDelete(Sci_GetCurrentLineNumber(), -1); SciCall_LineDelete(); + } } } break; @@ -7679,11 +7688,11 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) case TBN_QUERYDELETE: case TBN_QUERYINSERT: // (!) must exist and return true - GUARD_RETURN(!0); + GUARD_RETURN(TRUE); case TBN_BEGINADJUST: s_tb_reset_already = false; - GUARD_RETURN(0); + GUARD_RETURN(FALSE); case TBN_GETBUTTONINFO: { @@ -7693,10 +7702,10 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) GetLngString(s_tbbMainWnd[((LPTBNOTIFY)lParam)->iItem].idCommand, tch, COUNTOF(tch)); StringCchCopyN(((LPTBNOTIFY)lParam)->pszText, ((LPTBNOTIFY)lParam)->cchText, tch, ((LPTBNOTIFY)lParam)->cchText); CopyMemory(&((LPTBNOTIFY)lParam)->tbButton, &s_tbbMainWnd[((LPTBNOTIFY)lParam)->iItem], sizeof(TBBUTTON)); - GUARD_RETURN(!0); + GUARD_RETURN(TRUE); } } - GUARD_RETURN(0); + GUARD_RETURN(FALSE); case TBN_RESET: { @@ -7716,14 +7725,14 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) } s_tb_reset_already = !s_tb_reset_already; } - GUARD_RETURN(0); + GUARD_RETURN(FALSE); case TBN_ENDADJUST: UpdateToolbar(); - GUARD_RETURN(!0); + GUARD_RETURN(TRUE); default: - GUARD_RETURN(0); + GUARD_RETURN(FALSE); } break; diff --git a/src/Notepad3.rc b/src/Notepad3.rc index 943c0719d..14bbfcda8 100644 --- a/src/Notepad3.rc +++ b/src/Notepad3.rc @@ -284,11 +284,11 @@ BEGIN VK_ADD, IDM_VIEW_ZOOMIN, VIRTKEY, CONTROL, NOINVERT //~VK_ADD, CMD_INCLINELIMIT, VIRTKEY, ALT, NOINVERT /// ALT+[+] is used for universal Unicode input VK_ADD, CMD_INCREASENUM, VIRTKEY, CONTROL, ALT, NOINVERT - //~VK_BACK, CMD_DELETEBACK, VIRTKEY, NOINVERT + VK_BACK, CMD_DELETEBACK, VIRTKEY, NOINVERT VK_BACK, CMD_CTRLBACK, VIRTKEY, CONTROL, NOINVERT VK_BACK, IDM_EDIT_UNDO, VIRTKEY, ALT, NOINVERT VK_BACK, IDM_EDIT_DELETELINELEFT, VIRTKEY, SHIFT, CONTROL, NOINVERT - //~VK_DELETE, CMD_CLEAR, VIRTKEY, NOINVERT + VK_DELETE, CMD_CLEAR, VIRTKEY, NOINVERT VK_DELETE, CMD_CTRLDEL, VIRTKEY, CONTROL, NOINVERT VK_DELETE, IDM_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT VK_DELETE, IDM_EDIT_DELETELINERIGHT, VIRTKEY, SHIFT, CONTROL, NOINVERT diff --git a/src/SciCall.h b/src/SciCall.h index 34db53bc6..f7cf26cb7 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -233,6 +233,7 @@ DeclareSciCallV0(DelWordRight, DELWORDRIGHT) DeclareSciCallV0(DelLineLeft, DELLINELEFT) DeclareSciCallV0(DelLineRight, DELLINERIGHT) DeclareSciCallV0(LineDelete, LINEDELETE) +DeclareSciCallV0(LineCut, LINECUT) DeclareSciCallV1(LinesSplit, LINESSPLIT, int, pix) DeclareSciCallV0(LinesJoin, LINESJOIN) DeclareSciCallV0(EditToggleOverType, EDITTOGGLEOVERTYPE) @@ -248,7 +249,6 @@ 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) @@ -593,6 +593,7 @@ DeclareSciCallR0(IsSelectionRectangle, SELECTIONISRECTANGLE, bool) #define Sci_IsDocEmpty() (SciCall_GetTextLength() <= 0LL) #define Sci_IsThinSelection() (SciCall_GetSelectionMode() == SC_SEL_THIN) +#define Sci_IsStreamSelection() (SciCall_GetSelectionMode() == SC_SEL_STREAM) #define Sci_IsMultiSelection() ((SciCall_GetSelections() > 1) && !SciCall_IsSelectionRectangle()) #define Sci_IsMultiOrRectangleSelection() ((SciCall_GetSelections() > 1) || SciCall_IsSelectionRectangle())