Merge pull request #1654 from RaiKoHoff/DevNewFeatures

Distinguish between rectangular and multi selections
This commit is contained in:
Rainer Kottenhoff 2019-09-18 13:05:03 +02:00 committed by GitHub
commit 5656e303e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 167 additions and 132 deletions

View File

@ -1 +1 @@
2641
2642

View File

@ -102,6 +102,8 @@
#define IDS_MUI_EXPORT_FAIL 14016
#define IDS_MUI_REGEX_INVALID 14017
#define IDS_MUI_DROP_NO_FILE 14018
#define IDS_MUI_SELMULTI 14019
#define IDS_MUI_SELRECTORMULTI 14020
#define IDS_MUI_ASK_SAVE 15000
#define IDS_MUI_ASK_REVERT 15001

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Hierdie operasie kan nie binne 'n reghoekige seleksie uitgevoer word nie."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Hierdie operasie kan nie uitgevoer word nie (lyne te lank)."
IDS_MUI_FIND_WRAPFW "Het die einde van die dokument bereik en begin die soektog weer vanaf die begin."
IDS_MUI_FIND_WRAPRE "Het die begin van die dokument bereik en begin die soektog weer vanaf die einde."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Дзеянне не можа быць выкананым з прамавугольным вылучэннем."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Дзеянне не можа быць выкананым (вельмі доўгія радкі)."
IDS_MUI_FIND_WRAPFW "Дасягнуты канец дакумента, пошук будзе працягнуты з пачатку."
IDS_MUI_FIND_WRAPRE "Дасягнуты пачатак дакумента, пошук будзе працягнуты з канцу."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Diese Operation kann nicht mit einer Rechteck-Selektion durchgeführt werden."
IDS_MUI_SELMULTI "Diese Operation kann nicht mit einer Multi-Selektion durchgeführt werden."
IDS_MUI_SELRECTORMULTI "Diese Operation kann nicht mit einer Rechteck- oder Multi-Selektion durchgeführt werden."
IDS_MUI_BUFFERTOOSMALL "Diese Operation kann nicht durchgeführt werden (die Zeilen sind zu lang)."
IDS_MUI_FIND_WRAPFW "Das Ende des Dokumentes wurde erreicht, Vorwärtssuche vom Anfang her weiter führen."
IDS_MUI_FIND_WRAPRE "Der Anfang des Dokumentes wurde erreicht, Rückwärtssuche vom Ende her weiter führen."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "This operation can't be performed within a rectangular selection."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "This operation can't be performed (lines too long)."
IDS_MUI_FIND_WRAPFW "Reached the end of the document, restarting search at the beginning."
IDS_MUI_FIND_WRAPRE "Reached the beginning of the document, restarting search at the end."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "This operation can't be performed within a rectangular selection."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "This operation can't be performed (lines too long)."
IDS_MUI_FIND_WRAPFW "Reached the end of the document, restarting search at the beginning."
IDS_MUI_FIND_WRAPRE "Reached the beginning of the document, restarting search at the end."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Esta operación no se puede realizar en una selección rectangular."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Esta operación no se puede realizar (líneas demasiado largas)."
IDS_MUI_FIND_WRAPFW "Se llegó al final del documento, reiniciando la búsqueda desde el principio."
IDS_MUI_FIND_WRAPRE "Se llegó al principio del documento, reiniciando la búsqueda desde el final."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Cette opération ne peut pas être effectuée dans une sélection rectangulaire."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Cette opération ne peut pas être effectuée (lignes trop longues)."
IDS_MUI_FIND_WRAPFW "La fin du document est atteinte, redémarrer la recherche au début."
IDS_MUI_FIND_WRAPRE "Le début du document est atteint, redémarrer la recherche à la fin."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Ez a művelet nem hajtható végre függőleges kijelölésnél."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Ez a művelet nem hajtható végre (túl hosszú sorok)."
IDS_MUI_FIND_WRAPFW "A dokumentum végére ért, a keresés újrakezdődik az elején."
IDS_MUI_FIND_WRAPRE "A dokumentum elejére ért, a keresés a végén folytatódik."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Questa operazione non può essere eseguita in una selezione rettangolare."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Questa operazione non può essere eseguita (righe troppo lunghe)."
IDS_MUI_FIND_WRAPFW "Raggiunta la fine del documento, la ricerca riprende dall'inizio."
IDS_MUI_FIND_WRAPRE "Raggiunto l'inizio del documento, la ricerca riprende dalla fine."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "この操作は矩形選択では使えません"
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "この操作は実行できません。行が長すぎます。"
IDS_MUI_FIND_WRAPFW "文書の最後に到達しました。先頭から検索しますか?"
IDS_MUI_FIND_WRAPRE "文書の先頭に到達しました。終端から検索しますか?"

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "이 작업은 사각형 선택 내에서 수행 할 수 없습니다."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "이 작업은 수행 할 수 없습니다 (너무 긴 줄)."
IDS_MUI_FIND_WRAPFW "문서 끝에 도달하여 처음부터 다시 찾습니다."
IDS_MUI_FIND_WRAPRE "문서의 처음 부분에 도달하여 끝에서 부터 다시 찾습니다."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Deze bewerking kan niet binnen een rechthoekige selectie worden uitgevoerd."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Deze bewerking kan niet worden uitgevoerd (te lange lijnen)."
IDS_MUI_FIND_WRAPFW "Het einde van het document is bereikt, hestart de zoekopdracht aan het begin."
IDS_MUI_FIND_WRAPRE "Het einde van het document is bereikt, herstart de zoekopdracht aan het einde.."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Ta operacja nie może zostać przeprowadzona w obrębie prostkštnego zaznaczenia"
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Ta operacja nie może zostać przeprowadzona (zbyt długie wiersze)."
IDS_MUI_FIND_WRAPFW "Dotarto do końca dokumentu, ponowne przeszukiwanie od poczštku."
IDS_MUI_FIND_WRAPRE "Dotarto do poczštku dokumentu, ponowne przeszukiwanie do końca."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "This operation can't be performed within a rectangular selection."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "This operation can't be performed (lines too long)."
IDS_MUI_FIND_WRAPFW "Reached the end of the document, restarting search at the beginning."
IDS_MUI_FIND_WRAPRE "Reached the beginning of the document, restarting search at the end."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "Эта операция не может быть выполнена с прямоугольным выделением."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "Эта операция не может быть выполнена (слишком длинные строки)."
IDS_MUI_FIND_WRAPFW "Достигнут конец документа, поиск будет продолжен с начала."
IDS_MUI_FIND_WRAPRE "Достигнуто начало документа, поиск будет продолжен с конца."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "This operation can't be performed within a rectangular selection."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "This operation can't be performed (lines too long)."
IDS_MUI_FIND_WRAPFW "Reached the end of the document, restarting search at the beginning."
IDS_MUI_FIND_WRAPRE "Reached the beginning of the document, restarting search at the end."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "This operation can't be performed within a rectangular selection."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "This operation can't be performed (lines too long)."
IDS_MUI_FIND_WRAPFW "Reached the end of the document, restarting search at the beginning."
IDS_MUI_FIND_WRAPRE "Reached the beginning of the document, restarting search at the end."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "This operation can't be performed within a rectangular selection."
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "This operation can't be performed (lines too long)."
IDS_MUI_FIND_WRAPFW "Reached the end of the document, restarting search at the beginning."
IDS_MUI_FIND_WRAPRE "Reached the beginning of the document, restarting search at the end."

View File

@ -157,6 +157,8 @@ END
STRINGTABLE
BEGIN
IDS_MUI_SELRECT "该操作不能在矩形选区上执行。"
IDS_MUI_SELMULTI "This operation can't be performed within a multi-selection."
IDS_MUI_SELRECTORMULTI "This operation can't be performed within a rectangular or multi-selection."
IDS_MUI_BUFFERTOOSMALL "该操作不能执行,因为有些行太长了。"
IDS_MUI_FIND_WRAPFW "已到达文件结尾,将从开头开始重新查找。"
IDS_MUI_FIND_WRAPRE "已到达文件开头,将从结尾开始重新查找。"

View File

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

View File

@ -736,7 +736,7 @@ bool EditCopyAppend(HWND hwnd, bool bAppend)
if (iSelStart != iSelEnd) {
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return res;
}
length = (iSelEnd - iSelStart);
@ -1547,50 +1547,49 @@ void EditInvertCase(HWND hwnd)
if (iCurPos != iAnchorPos)
{
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
_BEGIN_UNDO_ACTION_
if (Sci_IsMultiOrRectangleSelection())
{
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
const DocPos iSelStart = SciCall_GetSelectionStart();
const DocPos iSelEnd = SciCall_GetSelectionEnd();
const DocPos iSelSize = SciCall_GetSelText(NULL);
LPSTR pszText = AllocMem(iSelSize, HEAP_ZERO_MEMORY);
LPWSTR pszTextW = AllocMem(iSelSize * sizeof(WCHAR), HEAP_ZERO_MEMORY);
if (!pszText || !pszTextW) {
FreeMem(pszText);
FreeMem(pszTextW);
}
else {
const DocPos iSelStart = SciCall_GetSelectionStart();
const DocPos iSelEnd = SciCall_GetSelectionEnd();
const DocPos iSelSize = SciCall_GetSelText(NULL);
SciCall_GetSelText(pszText);
LPSTR pszText = AllocMem(iSelSize, HEAP_ZERO_MEMORY);
LPWSTR pszTextW = AllocMem(iSelSize * sizeof(WCHAR), HEAP_ZERO_MEMORY);
if (!pszText || !pszTextW) {
FreeMem(pszText);
FreeMem(pszTextW);
}
else {
SciCall_GetSelText(pszText);
int const cchTextW = MultiByteToWideChar(Encoding_SciCP, 0, pszText, (MBWC_DocPos_Cast)(iSelSize - 1),
pszTextW, (MBWC_DocPos_Cast)iSelSize);
int const cchTextW = MultiByteToWideChar(Encoding_SciCP, 0, pszText, (MBWC_DocPos_Cast)(iSelSize - 1),
pszTextW, (MBWC_DocPos_Cast)iSelSize);
bool bChanged = false;
for (int i = 0; i < cchTextW; i++) {
if (IsCharUpperW(pszTextW[i])) {
pszTextW[i] = LOWORD(CharLowerW((LPWSTR)(LONG_PTR)MAKELONG(pszTextW[i], 0)));
bChanged = true;
}
else if (IsCharLowerW(pszTextW[i])) {
pszTextW[i] = LOWORD(CharUpperW((LPWSTR)(LONG_PTR)MAKELONG(pszTextW[i], 0)));
bChanged = true;
}
bool bChanged = false;
for (int i = 0; i < cchTextW; i++) {
if (IsCharUpperW(pszTextW[i])) {
pszTextW[i] = LOWORD(CharLowerW((LPWSTR)(LONG_PTR)MAKELONG(pszTextW[i], 0)));
bChanged = true;
}
if (bChanged) {
WideCharToMultiByte(Encoding_SciCP, 0, pszTextW, cchTextW,
pszText, (MBWC_DocPos_Cast)SizeOfMem(pszText), NULL, NULL);
SciCall_Clear();
SciCall_AddText((iSelEnd - iSelStart), pszText);
SciCall_SetSel(iAnchorPos, iCurPos);
else if (IsCharLowerW(pszTextW[i])) {
pszTextW[i] = LOWORD(CharUpperW((LPWSTR)(LONG_PTR)MAKELONG(pszTextW[i], 0)));
bChanged = true;
}
FreeMem(pszText);
FreeMem(pszTextW);
}
if (bChanged) {
WideCharToMultiByte(Encoding_SciCP, 0, pszTextW, cchTextW,
pszText, (MBWC_DocPos_Cast)SizeOfMem(pszText), NULL, NULL);
SciCall_Clear();
SciCall_AddText((iSelEnd - iSelStart), pszText);
SciCall_SetSel(iAnchorPos, iCurPos);
}
FreeMem(pszText);
FreeMem(pszTextW);
}
_END_UNDO_ACTION_
}
@ -1609,9 +1608,8 @@ void EditTitleCase(HWND hwnd)
if (iCurPos != iAnchorPos)
{
if (Sci_IsMultiOrRectangleSelection())
{
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
const DocPos iSelStart = SciCall_GetSelectionStart();
@ -1673,9 +1671,8 @@ void EditSentenceCase(HWND hwnd)
if (iCurPos != iAnchorPos)
{
if (Sci_IsMultiOrRectangleSelection())
{
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
const DocPos iSelStart = SciCall_GetSelectionStart();
@ -1748,7 +1745,7 @@ void EditURLEncode(HWND hwnd)
if (SciCall_IsSelectionEmpty()) { return; }
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -1821,7 +1818,7 @@ void EditURLDecode(HWND hwnd)
if (SciCall_IsSelectionEmpty()) { return; }
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -1897,9 +1894,8 @@ void EditEscapeCChars(HWND hwnd) {
if (!SciCall_IsSelectionEmpty())
{
if (Sci_IsMultiOrRectangleSelection())
{
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -1933,9 +1929,8 @@ void EditUnescapeCChars(HWND hwnd) {
if (!SciCall_IsSelectionEmpty())
{
if (Sci_IsMultiOrRectangleSelection())
{
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -1968,7 +1963,7 @@ void EditUnescapeCChars(HWND hwnd) {
void EditChar2Hex(HWND hwnd) {
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -2031,7 +2026,7 @@ void EditHex2Char(HWND hwnd)
if (SciCall_IsSelectionEmpty()) { return; }
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -2159,7 +2154,7 @@ void EditSelectToMatchingBrace(HWND hwnd)
void EditModifyNumber(HWND hwnd,bool bIncrease) {
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -2229,7 +2224,7 @@ void EditTabsToSpaces(HWND hwnd,int nTabWidth,bool bOnlyIndentingWS)
if (SciCall_IsSelectionEmpty()) { return; } // no selection
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -2327,7 +2322,7 @@ void EditSpacesToTabs(HWND hwnd,int nTabWidth,bool bOnlyIndentingWS)
if (SciCall_IsSelectionEmpty()) { return; } // no selection
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -2443,45 +2438,44 @@ void EditSpacesToTabs(HWND hwnd,int nTabWidth,bool bOnlyIndentingWS)
static void _EditMoveLines(bool bMoveUp)
{
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
else {
DocPos const iSelBeg = SciCall_GetSelectionStart();
DocPos const iSelEnd = SciCall_GetSelectionEnd();
DocLn const iBegLine = SciCall_LineFromPosition(iSelBeg);
DocLn const iEndLine = SciCall_LineFromPosition(iSelEnd);
DocPos const iSelBeg = SciCall_GetSelectionStart();
DocPos const iSelEnd = SciCall_GetSelectionEnd();
DocLn const iBegLine = SciCall_LineFromPosition(iSelBeg);
DocLn const iEndLine = SciCall_LineFromPosition(iSelEnd);
DocLn lastLine = Sci_GetLastDocLineNumber();
DocLn lastLine = Sci_GetLastDocLineNumber();
if (Sci_GetNetLineLength(lastLine) == 0) { --lastLine; }
if (Sci_GetNetLineLength(lastLine) == 0) { --lastLine; }
bool const bCanMove = bMoveUp ? (iBegLine > 0) : (iEndLine < lastLine);
if (bCanMove) {
bool const bCanMove = bMoveUp ? (iBegLine > 0) : (iEndLine < lastLine);
if (bCanMove) {
_BEGIN_UNDO_ACTION_
_BEGIN_UNDO_ACTION_
bool const bForwardSelection = Sci_IsForwardSelection();
int const direction = (bMoveUp ? -1 : 1);
int const direction = (bMoveUp ? -1 : 1);
DocPos const iBegChCount = SciCall_CountCharacters(SciCall_PositionFromLine(iBegLine), iSelBeg);
DocPos const iEndChCount = SciCall_CountCharacters(SciCall_PositionFromLine(iEndLine), iSelEnd);
DocPos const iBegChCount = SciCall_CountCharacters(SciCall_PositionFromLine(iBegLine), iSelBeg);
DocPos const iEndChCount = SciCall_CountCharacters(SciCall_PositionFromLine(iEndLine), iSelEnd);
if (bMoveUp)
SciCall_MoveSelectedLinesUp();
else
SciCall_MoveSelectedLinesDown();
if (bMoveUp)
SciCall_MoveSelectedLinesUp();
else
SciCall_MoveSelectedLinesDown();
DocPos const iNewSelBeg = SciCall_PositionRelative(SciCall_PositionFromLine(iBegLine + direction), iBegChCount);
DocPos const iNewSelEnd = SciCall_PositionRelative(SciCall_PositionFromLine(iEndLine + direction), iEndChCount);
DocPos const iNewSelBeg = SciCall_PositionRelative(SciCall_PositionFromLine(iBegLine + direction), iBegChCount);
DocPos const iNewSelEnd = SciCall_PositionRelative(SciCall_PositionFromLine(iEndLine + direction), iEndChCount);
if (bForwardSelection)
SciCall_SetSel(iNewSelBeg, iNewSelEnd);
else
SciCall_SetSel(iNewSelEnd, iNewSelBeg);
if (bForwardSelection)
SciCall_SetSel(iNewSelBeg, iNewSelEnd);
else
SciCall_SetSel(iNewSelEnd, iNewSelBeg);
_END_UNDO_ACTION_
}
_END_UNDO_ACTION_
}
}
@ -2543,9 +2537,8 @@ void EditJumpToSelectionEnd(HWND hwnd)
//
void EditModifyLines(HWND hwnd, LPCWSTR pwszPrefix, LPCWSTR pwszAppend)
{
if (Sci_IsMultiOrRectangleSelection())
{
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -2821,7 +2814,7 @@ void EditIndentBlock(HWND hwnd, int cmd, bool bFormatIndentation, bool bForceAll
DocLn const iCurLine = SciCall_LineFromPosition(iCurPos);
DocLn const iAnchorLine = SciCall_LineFromPosition(iAnchorPos);
bool const bSingleLine = Sci_IsSingleLineSelection();
bool const bSingleLine = Sci_IsSelectionSingleLine();
bool const _bTabIndents = SciCall_GetTabIndents();
bool const _bBSpUnindents = SciCall_GetBackSpaceUnIndents();
@ -2909,9 +2902,10 @@ void EditAlignText(HWND hwnd, int nMode)
DocPos const iAnchorCol = SciCall_GetColumn(iAnchorPos);
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
if (iLineEnd <= iLineStart) { return; }
int iMinIndent = INT_MAX;
@ -3131,7 +3125,7 @@ void EditAlignText(HWND hwnd, int nMode)
void EditEncloseSelection(HWND hwnd, LPCWSTR pwszOpen, LPCWSTR pwszClose)
{
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -3182,12 +3176,12 @@ void EditEncloseSelection(HWND hwnd, LPCWSTR pwszOpen, LPCWSTR pwszClose)
void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart)
{
UNUSED(hwnd);
//const DocPos iCurPos = SciCall_GetCurrentPos();
//const DocPos iAnchorPos = SciCall_GetAnchor();
const DocPos iSelStart = SciCall_GetSelectionStart();
const DocPos iSelEnd = SciCall_GetSelectionEnd();
//~const DocPos iCurPos = SciCall_GetCurrentPos();
//~const DocPos iAnchorPos = SciCall_GetAnchor();
DocPos const iSelStart = SciCall_GetSelectionStart();
DocPos const iSelEnd = SciCall_GetSelectionEnd();
const DocPos iSelBegCol = SciCall_GetColumn(iSelStart);
//~const DocPos iSelBegCol = SciCall_GetColumn(iSelStart);
char mszComment[32 * 3] = { '\0' };
@ -3198,8 +3192,8 @@ void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart)
if (cchComment == 0) { return; }
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
if (Sci_IsMultiSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELMULTI);
return;
}
@ -3207,8 +3201,9 @@ void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart)
DocLn iLineEnd = SciCall_LineFromPosition(iSelEnd);
if (iSelEnd <= SciCall_PositionFromLine(iLineEnd)) {
if ((iLineEnd - iLineStart) >= 1)
if ((iLineEnd - iLineStart) >= 1) {
--iLineEnd;
}
}
DocPos iCommentCol = 0;
@ -3226,8 +3221,8 @@ void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart)
}
}
DocPos iSelStartOffset = (iCommentCol >= iSelBegCol) ? 0 : cchComment;
DocPos iSelEndOffset = 0;
//~DocPos iSelStartOffset = (iCommentCol >= iSelBegCol) ? 0 : cchComment;
//~DocPos iSelEndOffset = 0;
_BEGIN_UNDO_ACTION_
_IGNORE_NOTIFY_CHANGE_;
@ -3262,10 +3257,10 @@ void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart)
case 2:
SciCall_SetTargetRange(iIndentPos, iSelPos);
SciCall_ReplaceTarget(0, "");
iSelEndOffset -= cchComment;
if (iLine == iLineStart) {
iSelStartOffset = (iSelStart == SciCall_PositionFromLine(iLine)) ? 0 : (0 - cchComment);
}
//~iSelEndOffset -= cchComment;
//~if (iLine == iLineStart) {
//~ iSelStartOffset = (iSelStart == SciCall_PositionFromLine(iLine)) ? 0 : (0 - cchComment);
//~}
utarray_push_back(sel_positions, &iIndentPos);
break;
case 1:
@ -3282,10 +3277,10 @@ void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart)
{
DocPos const iPos = SciCall_FindColumn(iLine, iCommentCol);
SciCall_InsertText(iPos, mszComment);
iSelEndOffset += cchComment;
if (iLine == iLineStart) {
iSelStartOffset = (iCommentCol >= iSelBegCol) ? 0 : cchComment;
}
//~iSelEndOffset += cchComment;
//~if (iLine == iLineStart) {
//~ iSelStartOffset = (iCommentCol >= iSelBegCol) ? 0 : cchComment;
//~}
DocPos const iSelPos = iIndentPos + cchComment;
utarray_push_back(sel_positions, &iSelPos);
}
@ -3298,15 +3293,15 @@ void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart)
SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore
//if (iCurPos < iAnchorPos) {
// EditSetSelectionEx(hwnd, iAnchorPos + iSelEndOffset, iCurPos + iSelStartOffset, -1, -1);
//}
//else if (iCurPos > iAnchorPos) {
// EditSetSelectionEx(hwnd, iAnchorPos + iSelStartOffset, iCurPos + iSelEndOffset, -1, -1);
//}
//else {
// EditSetSelectionEx(hwnd, iAnchorPos + iSelStartOffset, iCurPos + iSelStartOffset, -1, -1);
//}
//~if (iCurPos < iAnchorPos) {
//~ EditSetSelectionEx(hwnd, iAnchorPos + iSelEndOffset, iCurPos + iSelStartOffset, -1, -1);
//~}
//~else if (iCurPos > iAnchorPos) {
//~ EditSetSelectionEx(hwnd, iAnchorPos + iSelStartOffset, iCurPos + iSelEndOffset, -1, -1);
//~}
//~else {
//~ EditSetSelectionEx(hwnd, iAnchorPos + iSelStartOffset, iCurPos + iSelStartOffset, -1, -1);
//~}
DocPos* p = (DocPos*)utarray_next(sel_positions, NULL);
if (p) { SciCall_SetSelection(*p, *p); }
@ -3750,9 +3745,9 @@ void EditCompressBlanks(HWND hwnd)
_OBSERVE_NOTIFY_CHANGE_;
_END_UNDO_ACTION_
}
else if (Sci_IsMultiOrRectangleSelection()) {
else if (Sci_IsMultiSelection()) {
// @@@ not implemented
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELMULTI);
}
else // SC_SEL_LINES | SC_SEL_STREAM
{
@ -3862,7 +3857,7 @@ void EditRemoveBlankLines(HWND hwnd, bool bMerge, bool bRemoveWhiteSpace)
UNUSED(hwnd);
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -3937,7 +3932,7 @@ void EditRemoveDuplicateLines(HWND hwnd, bool bRemoveEmptyLines)
UNUSED(hwnd);
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -4010,7 +4005,7 @@ void EditRemoveDuplicateLines(HWND hwnd, bool bRemoveEmptyLines)
void EditWrapToColumn(HWND hwnd,DocPos nColumn/*,int nTabWidth*/)
{
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -4189,7 +4184,7 @@ void EditJoinLinesEx(HWND hwnd, bool bPreserveParagraphs, bool bCRLF2Space)
if (SciCall_IsSelectionEmpty()) { return; }
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return;
}
@ -5596,7 +5591,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara
s_tchBuf[0] = L'\0';
DocPos const cchSelection = SciCall_GetSelText(NULL);
if ((1 < cchSelection) && !(GetDlgItem(hwnd, IDC_REPLACE) && Sci_IsMultiLineSelection())) {
if ((1 < cchSelection) && !(GetDlgItem(hwnd, IDC_REPLACE) && Sci_IsSelectionMultiLine())) {
lpszSelection = AllocMem(cchSelection, HEAP_ZERO_MEMORY);
SciCall_GetSelText(lpszSelection);
}
@ -5700,7 +5695,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wPara
if (s_anyMatch != match) { s_anyMatch = match; }
// we have to set Sci's regex instance to first find (have substitution in place)
DocPos const iStartPos = (DocPos)lParam;
if (!GetDlgItem(hwnd, IDC_REPLACE) || !Sci_IsMultiLineSelection()) {
if (!GetDlgItem(hwnd, IDC_REPLACE) || !Sci_IsSelectionMultiLine()) {
s_fwrdMatch = _FindHasMatch(sg_pefrData->hwnd, sg_pefrData, iStartPos, false, true);
}
else {
@ -6652,7 +6647,7 @@ bool EditReplaceAll(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bShowInfo)
bool EditReplaceAllInSelection(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bShowInfo)
{
if (Sci_IsMultiOrRectangleSelection()) {
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECT);
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI);
return false;
}

View File

@ -3140,7 +3140,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
bool const se = SciCall_IsSelectionEmpty();
bool const te = (SciCall_GetTextLength() <= 0);
bool const pst = SciCall_CanPaste();
bool const mls = Sci_IsMultiLineSelection();
bool const mls = Sci_IsSelectionMultiLine();
EnableCmd(hmenu,IDM_EDIT_CUT, !te && !ro); // allow Ctrl-X w/o selection
EnableCmd(hmenu,IDM_EDIT_COPY, !te); // allow Ctrl-C w/o selection
@ -3938,7 +3938,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
if (s_flagPasteBoard) {
s_bLastCopyFromMe = true;
}
_BEGIN_UNDO_ACTION_
//~_BEGIN_UNDO_ACTION_
if (SciCall_IsSelectionEmpty()) {
if (!HandleHotSpotURLClicked(SciCall_GetCurrentPos(), COPY_HYPERLINK))
{
@ -3949,7 +3949,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
else {
SciCall_Copy();
}
_END_UNDO_ACTION_
//~_END_UNDO_ACTION_
UpdateToolbar();
}
break;

View File

@ -534,8 +534,8 @@ DeclareSciCallR0(IsSelectionRectangle, SELECTIONISRECTANGLE, bool)
#define Sci_IsMultiSelection() ((SciCall_GetSelections() > 1) && !SciCall_IsSelectionRectangle())
#define Sci_IsMultiOrRectangleSelection() ((SciCall_GetSelections() > 1) || SciCall_IsSelectionRectangle())
#define Sci_IsSingleLineSelection() (SciCall_LineFromPosition(SciCall_GetSelectionEnd()) == SciCall_LineFromPosition(SciCall_GetSelectionStart()))
#define Sci_IsMultiLineSelection() ((SciCall_LineFromPosition(SciCall_GetSelectionEnd()) - SciCall_LineFromPosition(SciCall_GetSelectionStart())) > 1)
#define Sci_IsSelectionSingleLine() (SciCall_LineFromPosition(SciCall_GetSelectionEnd()) == SciCall_LineFromPosition(SciCall_GetSelectionStart()))
#define Sci_IsSelectionMultiLine() ((SciCall_LineFromPosition(SciCall_GetSelectionEnd()) - SciCall_LineFromPosition(SciCall_GetSelectionStart())) > 1)
#define Sci_IsPosInSelection(position) ((position >= SciCall_GetSelectionStart()) && (position <= SciCall_GetSelectionEnd()))

View File

@ -8,7 +8,7 @@
#define VERSION_MAJOR 5
#define VERSION_MINOR 19
#define VERSION_REV 918
#define VERSION_BUILD 2641
#define VERSION_BUILD 2642
#define SCINTILLA_VER 420
#define ONIGURUMA_REGEX_VER 6.9.3
#define UCHARDET_VER 2018.09.27