mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-28 16:24:27 +02:00
[NEW] Make Marker Jumper wrap able.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@562 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
f5d7e44e2c
commit
86248087b2
@ -9739,66 +9739,98 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Notepad_plus::goToPreviousIndicator(int indicID2Search) const
|
bool Notepad_plus::goToPreviousIndicator(int indicID2Search, bool isWrap) const
|
||||||
{
|
|
||||||
int position = _pEditView->execute(SCI_GETCURRENTPOS);
|
|
||||||
BOOL isInIndicator = _pEditView->execute(SCI_INDICATORVALUEAT, indicID2Search, position);
|
|
||||||
int posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, position);
|
|
||||||
int posEnd;
|
|
||||||
|
|
||||||
if (isInIndicator)
|
|
||||||
{
|
|
||||||
if (posStart <= 0)
|
|
||||||
return;
|
|
||||||
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, posStart - 1);
|
|
||||||
if (posStart <= 0)
|
|
||||||
return;
|
|
||||||
int newPos = posStart - 1;
|
|
||||||
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, newPos);
|
|
||||||
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, newPos);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (posStart <= 0)
|
|
||||||
return;
|
|
||||||
int newPos = posStart - 1;
|
|
||||||
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, newPos);
|
|
||||||
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, newPos);
|
|
||||||
}
|
|
||||||
_pEditView->execute(SCI_SETSEL, posEnd, posStart);
|
|
||||||
_pEditView->execute(SCI_SCROLLCARET);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Notepad_plus::goToNextIndicator(int indicID2Search) const
|
|
||||||
{
|
{
|
||||||
int position = _pEditView->execute(SCI_GETCURRENTPOS);
|
int position = _pEditView->execute(SCI_GETCURRENTPOS);
|
||||||
int docLen = _pEditView->getCurrentDocLen();
|
int docLen = _pEditView->getCurrentDocLen();
|
||||||
|
|
||||||
BOOL isInIndicator = _pEditView->execute(SCI_INDICATORVALUEAT, indicID2Search, position);
|
BOOL isInIndicator = _pEditView->execute(SCI_INDICATORVALUEAT, indicID2Search, position);
|
||||||
int posStart;
|
int posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, position);
|
||||||
int posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, position);
|
int posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, position);
|
||||||
|
|
||||||
if (isInIndicator)
|
// pre-condition
|
||||||
|
if ((posStart == 0) && (posEnd == docLen - 1))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (posStart <= 0)
|
||||||
{
|
{
|
||||||
|
if (!isWrap)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
isInIndicator = _pEditView->execute(SCI_INDICATORVALUEAT, indicID2Search, docLen - 1);
|
||||||
|
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, docLen - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isInIndicator) // try to get out of indicator
|
||||||
|
{
|
||||||
|
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, posStart - 1);
|
||||||
|
if (posStart <= 0)
|
||||||
|
{
|
||||||
|
if (!isWrap)
|
||||||
|
return false;
|
||||||
|
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, docLen - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int newPos = posStart - 1;
|
||||||
|
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, newPos);
|
||||||
|
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, newPos);
|
||||||
|
|
||||||
|
// found
|
||||||
|
if (_pEditView->execute(SCI_INDICATORVALUEAT, indicID2Search, posStart))
|
||||||
|
{
|
||||||
|
_pEditView->execute(SCI_SETSEL, posEnd, posStart);
|
||||||
|
_pEditView->execute(SCI_SCROLLCARET);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Notepad_plus::goToNextIndicator(int indicID2Search, bool isWrap) const
|
||||||
|
{
|
||||||
|
int position = _pEditView->execute(SCI_GETCURRENTPOS);
|
||||||
|
int docLen = _pEditView->getCurrentDocLen();
|
||||||
|
|
||||||
|
BOOL isInIndicator = _pEditView->execute(SCI_INDICATORVALUEAT, indicID2Search, position);
|
||||||
|
int posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, position);
|
||||||
|
int posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, position);
|
||||||
|
|
||||||
|
// pre-condition
|
||||||
|
if ((posStart == 0) && (posEnd == docLen - 1))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (posEnd >= docLen)
|
if (posEnd >= docLen)
|
||||||
return;
|
{
|
||||||
|
if (!isWrap)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
isInIndicator = _pEditView->execute(SCI_INDICATORVALUEAT, indicID2Search, 0);
|
||||||
|
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isInIndicator) // try to get out of indicator
|
||||||
|
{
|
||||||
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, posEnd);
|
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, posEnd);
|
||||||
|
|
||||||
if (posEnd >= docLen)
|
if (posEnd >= docLen)
|
||||||
return;
|
|
||||||
int newPos = posEnd;
|
|
||||||
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, newPos);
|
|
||||||
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, newPos);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (posEnd >= docLen)
|
if (!isWrap)
|
||||||
return;
|
return false;
|
||||||
|
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
int newPos = posEnd + 1;
|
int newPos = posEnd + 1;
|
||||||
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, newPos);
|
posStart = _pEditView->execute(SCI_INDICATORSTART, indicID2Search, newPos);
|
||||||
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, newPos);
|
posEnd = _pEditView->execute(SCI_INDICATOREND, indicID2Search, newPos);
|
||||||
}
|
|
||||||
|
// found
|
||||||
|
if (_pEditView->execute(SCI_INDICATORVALUEAT, indicID2Search, posStart))
|
||||||
|
{
|
||||||
_pEditView->execute(SCI_SETSEL, posStart, posEnd);
|
_pEditView->execute(SCI_SETSEL, posStart, posEnd);
|
||||||
_pEditView->execute(SCI_SCROLLCARET);
|
_pEditView->execute(SCI_SCROLLCARET);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT CALLBACK Notepad_plus::Notepad_plus_Proc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
LRESULT CALLBACK Notepad_plus::Notepad_plus_Proc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
|
||||||
|
@ -573,8 +573,8 @@ private:
|
|||||||
|
|
||||||
void loadCommandlineParams(const TCHAR * commandLine, CmdLineParams * pCmdParams);
|
void loadCommandlineParams(const TCHAR * commandLine, CmdLineParams * pCmdParams);
|
||||||
bool noOpenedDoc() const;
|
bool noOpenedDoc() const;
|
||||||
void goToPreviousIndicator(int indicID2Search) const;
|
bool goToPreviousIndicator(int indicID2Search, bool isWrap = true) const;
|
||||||
void goToNextIndicator(int indicID2Search) const;
|
bool goToNextIndicator(int indicID2Search, bool isWrap = true) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //NOTEPAD_PLUS_H
|
#endif //NOTEPAD_PLUS_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user