Skip to content

Commit

Permalink
Add "Skip empty lines" option on "Modify Lines" dialog, issue #694.
Browse files Browse the repository at this point in the history
  • Loading branch information
zufuliu committed Jul 30, 2023
1 parent 28f40b3 commit 078a14a
Show file tree
Hide file tree
Showing 12 changed files with 30 additions and 8 deletions.
1 change: 1 addition & 0 deletions locale/de/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
EDITTEXT IDC_MODIFY_LINE_PREFIX,7,18,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
LTEXT "&Append text to lines:",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
AUTOCHECKBOX "&Skip empty lines.",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
DEFPUSHBUTTON "OK",IDOK,147,108,50,14
PUSHBUTTON "Cancel",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
Expand Down
1 change: 1 addition & 0 deletions locale/fr-FR/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
LTEXT "&Ajouter le text aux lignes:",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
DEFPUSHBUTTON "OK",IDOK,147,108,50,14
AUTOCHECKBOX "&Skip empty lines.",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
PUSHBUTTON "Annuler",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
LTEXT "$(0L)",IDC_MODIFY_LINE_DLN_ZP,27,76,27,8
Expand Down
1 change: 1 addition & 0 deletions locale/it/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
EDITTEXT IDC_MODIFY_LINE_PREFIX,7,18,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
LTEXT "&Aggiungi testo alle linee:",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
AUTOCHECKBOX "&Skip empty lines.",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
DEFPUSHBUTTON "OK",IDOK,147,108,50,14
PUSHBUTTON "Annulla",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
Expand Down
1 change: 1 addition & 0 deletions locale/ja/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
EDITTEXT IDC_MODIFY_LINE_PREFIX,7,18,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
LTEXT "行の後ろの文字列(&A):",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
AUTOCHECKBOX "&Skip empty lines.",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
DEFPUSHBUTTON "OK",IDOK,147,108,50,14
PUSHBUTTON "キャンセル",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
Expand Down
1 change: 1 addition & 0 deletions locale/ko/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
EDITTEXT IDC_MODIFY_LINE_PREFIX,7,18,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
LTEXT "줄에 텍스트 추가(&A):",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
AUTOCHECKBOX "&Skip empty lines.",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
DEFPUSHBUTTON "확인",IDOK,147,108,50,14
PUSHBUTTON "취소",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
Expand Down
1 change: 1 addition & 0 deletions locale/pt-BR/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
EDITTEXT IDC_MODIFY_LINE_PREFIX,7,18,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
LTEXT "&Append text to lines:",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
AUTOCHECKBOX "&Skip empty lines.",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
DEFPUSHBUTTON "OK",IDOK,147,108,50,14
PUSHBUTTON "Cancel",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
Expand Down
1 change: 1 addition & 0 deletions locale/zh-Hans/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
EDITTEXT IDC_MODIFY_LINE_PREFIX,7,18,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
LTEXT "每行后缀文本(&A): ",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
AUTOCHECKBOX "跳过空行(&S)",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
DEFPUSHBUTTON "确定",IDOK,147,108,50,14
PUSHBUTTON "取消",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
Expand Down
1 change: 1 addition & 0 deletions locale/zh-Hant/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
EDITTEXT IDC_MODIFY_LINE_PREFIX,7,18,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
LTEXT "每行尾文字(&A): ",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
AUTOCHECKBOX "跳過空行(&S)",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
DEFPUSHBUTTON "確定",IDOK,147,108,50,14
PUSHBUTTON "取消",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
Expand Down
26 changes: 19 additions & 7 deletions src/Edit.c
Original file line number Diff line number Diff line change
Expand Up @@ -2881,7 +2881,7 @@ static inline void ConvertWinEditLineEndings(char *s, int iEOLMode) {
//
// EditModifyLines()
//
void EditModifyLines(LPCWSTR pwszPrefix, LPCWSTR pwszAppend) {
void EditModifyLines(LPCWSTR pwszPrefix, LPCWSTR pwszAppend, bool skipEmptyLine) {
if (SciCall_IsRectangleSelection()) {
NotifyRectangleSelection();
return;
Expand Down Expand Up @@ -3062,6 +3062,12 @@ void EditModifyLines(LPCWSTR pwszPrefix, LPCWSTR pwszAppend) {
char *mszInsert = (char *)NP2HeapAlloc(2 * max_i(iPrefixLen, iAppendLen) * kMaxMultiByteCount + 1);
SciCall_BeginUndoAction();
for (Sci_Line iLine = iLineStart, iLineDest = iLineStart; iLine <= iLineEnd; iLine++, iLineDest++) {
const Sci_Position iStartPos = SciCall_PositionFromLine(iLineDest);
Sci_Position iEndPos = SciCall_GetLineEndPosition(iLineDest);
if (skipEmptyLine && iStartPos == iEndPos) {
continue;
}

if (iPrefixLen != 0) {
strcpy(mszInsert, mszPrefix1);

Expand All @@ -3085,8 +3091,7 @@ void EditModifyLines(LPCWSTR pwszPrefix, LPCWSTR pwszAppend) {
iPrefixNum++;
}

const Sci_Position iPos = SciCall_PositionFromLine(iLineDest);
SciCall_SetTargetRange(iPos, iPos);
SciCall_SetTargetRange(iStartPos, iStartPos);
SciCall_ReplaceTarget(-1, mszInsert);
iLineDest += iPrefixLine;
}
Expand Down Expand Up @@ -3114,8 +3119,10 @@ void EditModifyLines(LPCWSTR pwszPrefix, LPCWSTR pwszAppend) {
iAppendNum++;
}

const Sci_Position iPos = SciCall_GetLineEndPosition(iLineDest);
SciCall_SetTargetRange(iPos, iPos);
if (iPrefixLen) {
iEndPos = SciCall_GetLineEndPosition(iLineDest);
}
SciCall_SetTargetRange(iEndPos, iEndPos);
SciCall_ReplaceTarget(-1, mszInsert);
iLineDest += iAppendLine;
}
Expand Down Expand Up @@ -6276,6 +6283,7 @@ extern int cyInsertTagDlg;
static INT_PTR CALLBACK EditModifyLinesDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) {
static DWORD id_hover;
static DWORD id_capture;
static bool skipEmptyLine;
static HFONT hFontHover;

switch (umsg) {
Expand All @@ -6299,6 +6307,9 @@ static INT_PTR CALLBACK EditModifyLinesDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
SetDlgItemText(hwnd, IDC_MODIFY_LINE_PREFIX, wchPrefixLines.buffer);
MultilineEditSetup(hwnd, IDC_MODIFY_LINE_APPEND);
SetDlgItemText(hwnd, IDC_MODIFY_LINE_APPEND, wchAppendLines.buffer);
if (skipEmptyLine) {
CheckDlgButton(hwnd, IDC_MODIFY_LINE_SKIP_EMPTY, BST_CHECKED);
}
CenterDlgInParent(hwnd);
}
return TRUE;
Expand All @@ -6321,6 +6332,7 @@ static INT_PTR CALLBACK EditModifyLinesDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
hdwp = DeferCtlPos(hdwp, hwnd, IDC_MODIFY_LINE_PREFIX, dx, cy, SWP_NOMOVE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_MODIFY_LINE_APPEND, 0, cy, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_MODIFY_LINE_TIP2, 0, cy, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_MODIFY_LINE_SKIP_EMPTY, 0, dy, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_MODIFY_LINE_DLN_NP, 0, dy, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_MODIFY_LINE_DLN_ZP, 0, dy, SWP_NOSIZE);
hdwp = DeferCtlPos(hdwp, hwnd, IDC_MODIFY_LINE_TIP_DLN, 0, dy, SWP_NOSIZE);
Expand Down Expand Up @@ -6446,8 +6458,8 @@ static INT_PTR CALLBACK EditModifyLinesDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
case IDOK: {
DStringW_GetDlgItemText(&wchPrefixLines, hwnd, IDC_MODIFY_LINE_PREFIX);
DStringW_GetDlgItemText(&wchAppendLines, hwnd, IDC_MODIFY_LINE_APPEND);

EditModifyLines(wchPrefixLines.buffer, wchAppendLines.buffer);
skipEmptyLine = IsButtonChecked(hwnd, IDC_MODIFY_LINE_SKIP_EMPTY);
EditModifyLines(wchPrefixLines.buffer, wchAppendLines.buffer, skipEmptyLine);
EndDialog(hwnd, IDOK);
}
break;
Expand Down
2 changes: 1 addition & 1 deletion src/Edit.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ void EditSpacesToTabs(int nTabWidth, bool bOnlyIndentingWS);

void EditMoveUp(void);
void EditMoveDown(void);
void EditModifyLines(LPCWSTR pwszPrefix, LPCWSTR pwszAppend);
void EditModifyLines(LPCWSTR pwszPrefix, LPCWSTR pwszAppend, bool skipEmptyLine);
void EditAlignText(EditAlignMode nMode);
void EditEncloseSelection(LPCWSTR pwszOpen, LPCWSTR pwszClose);
void EditToggleLineComments(LPCWSTR pwszComment, bool bInsertAtStart);
Expand Down
1 change: 1 addition & 0 deletions src/Notepad2.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1481,6 +1481,7 @@ BEGIN
EDITTEXT IDC_MODIFY_LINE_PREFIX,7,18,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
LTEXT "&Append text to lines:",IDC_MODIFY_LINE_TIP2,7,41,97,8
EDITTEXT IDC_MODIFY_LINE_APPEND,7,52,246,18,ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_WANTRETURN
AUTOCHECKBOX "&Skip empty lines.",IDC_MODIFY_LINE_SKIP_EMPTY,7,108,96,14,WS_TABSTOP
DEFPUSHBUTTON "OK",IDOK,147,108,50,14
PUSHBUTTON "Cancel",IDCANCEL,203,108,50,14
LTEXT "$(L)",IDC_MODIFY_LINE_DLN_NP,7,76,21,8
Expand Down
1 change: 1 addition & 0 deletions src/resource.h
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@
#define IDC_MODIFY_LINE_PREFIX 100
#define IDC_MODIFY_LINE_APPEND 101
#define IDC_MODIFY_LINE_TIP2 103
#define IDC_MODIFY_LINE_SKIP_EMPTY 104
#define IDC_MODIFY_LINE_DLN_NP 200
#define IDC_MODIFY_LINE_DLN_ZP 201
#define IDC_MODIFY_LINE_CN_NP 202
Expand Down

0 comments on commit 078a14a

Please sign in to comment.