+ fix: delete marker of (comletely) deleted lines

This commit is contained in:
Rainer Kottenhoff 2020-09-06 11:03:52 +02:00
parent d042eb284f
commit 85c0fefafe
6 changed files with 52 additions and 20 deletions

View File

@ -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

View File

@ -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()

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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())