Skip to content

Commit

Permalink
Merge f89b17d into edbb86c
Browse files Browse the repository at this point in the history
  • Loading branch information
kengoide authored Dec 16, 2020
2 parents edbb86c + f89b17d commit 71094ea
Show file tree
Hide file tree
Showing 8 changed files with 364 additions and 7 deletions.
6 changes: 3 additions & 3 deletions sakura_core/CSearchAgent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ void CSearchAgent::CreateWordList(
{
for( CLogicInt pos = CLogicInt(0); pos < nPatternLen; ) {
CLogicInt begin, end; // 検索語に含まれる単語?の posを基準とした相対位置。WhereCurrentWord_2()の仕様では空白文字列も単語に含まれる。
if( CWordParse::WhereCurrentWord_2( pszPattern + pos, nPatternLen - pos, CLogicInt(0), &begin, &end, NULL, NULL )
if( CWordParse::WhereCurrentWord_2( pszPattern + pos, nPatternLen - pos, CLogicInt(0), GetDllShareData().m_Common.m_sEdit.m_bEnableExtEol, &begin, &end, NULL, NULL )
&& begin == 0 && begin < end
) {
if( ! WCODE::IsWordDelimiter( pszPattern[pos] ) ) {
Expand Down Expand Up @@ -324,7 +324,7 @@ const wchar_t* CSearchAgent::SearchStringWord(
CLogicInt nNextWordFrom = CLogicInt(nIdxPos);
CLogicInt nNextWordFrom2;
CLogicInt nNextWordTo2;
while( CWordParse::WhereCurrentWord_2( pLine, CLogicInt(nLineLen), nNextWordFrom, &nNextWordFrom2, &nNextWordTo2, NULL, NULL ) ){
while( CWordParse::WhereCurrentWord_2( pLine, CLogicInt(nLineLen), nNextWordFrom, GetDllShareData().m_Common.m_sEdit.m_bEnableExtEol, &nNextWordFrom2, &nNextWordTo2, NULL, NULL ) ){
size_t nSize = searchWords.size();
for( size_t iSW = 0; iSW < nSize; ++iSW ) {
if( searchWords[iSW].second == nNextWordTo2 - nNextWordFrom2 ){
Expand Down Expand Up @@ -368,7 +368,7 @@ bool CSearchAgent::WhereCurrentWord(
const wchar_t* pLine = pDocLine->GetDocLineStrWithEOL( &nLineLen );

/* 現在位置の単語の範囲を調べる */
return CWordParse::WhereCurrentWord_2( pLine, nLineLen, nIdx, pnIdxFrom, pnIdxTo, pcmcmWord, pcmcmWordLeft );
return CWordParse::WhereCurrentWord_2( pLine, nLineLen, nIdx, GetDllShareData().m_Common.m_sEdit.m_bEnableExtEol, pnIdxFrom, pnIdxTo, pcmcmWord, pcmcmWordLeft );
}

// 現在位置の左右の単語の先頭位置を調べる
Expand Down
1 change: 1 addition & 0 deletions sakura_core/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ endif
CFLAGS= \
-finput-charset=utf-8 \
-fexec-charset=cp932 \
-fwide-exec-charset=utf-16le \
-MMD \
-I. \
-I$(SRCDIR) \
Expand Down
3 changes: 2 additions & 1 deletion sakura_core/parse/CWordParse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ bool CWordParse::WhereCurrentWord_2(
const wchar_t* pLine, //!< [in] 調べるメモリ全体の先頭アドレス
CLogicInt nLineLen, //!< [in] 調べるメモリ全体の有効長
CLogicInt nIdx, //!< [in] 調査開始地点:pLineからの相対的な位置
bool bEnableExtEol, //!< [in] Unicode改行文字を改行とみなすかどうか
CLogicInt* pnIdxFrom, //!< [out] 単語が見つかった場合は、単語の先頭インデックスを返す。
CLogicInt* pnIdxTo, //!< [out] 単語が見つかった場合は、単語の終端の次のバイトの先頭インデックスを返す。
CNativeW* pcmcmWord, //!< [out] 単語が見つかった場合は、現在単語を切り出して指定されたCMemoryオブジェクトに格納する。情報が不要な場合はNULLを指定する。
Expand All @@ -33,7 +34,7 @@ bool CWordParse::WhereCurrentWord_2(
}

// 現在位置の文字の種類によっては選択不可
if( WCODE::IsLineDelimiter(pLine[nIdx], GetDllShareData().m_Common.m_sEdit.m_bEnableExtEol) ){
if( WCODE::IsLineDelimiter(pLine[nIdx], bEnableExtEol) ){
return false;
}

Expand Down
3 changes: 2 additions & 1 deletion sakura_core/parse/CWordParse.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ class CWordParse{
static bool WhereCurrentWord_2(
const wchar_t* pLine, //[in] 調べるメモリ全体の先頭アドレス
CLogicInt nLineLen, //[in] 調べるメモリ全体の有効長
CLogicInt nIdx, //[out] 調査開始地点:pLineからの相対的な位置
CLogicInt nIdx, //[in] 調査開始地点:pLineからの相対的な位置
bool bEnableExtEol, //[in] Unicode改行文字を改行とみなすかどうか
CLogicInt* pnIdxFrom, //[out] 単語が見つかった場合は、単語の先頭インデックスを返す。
CLogicInt* pnIdxTo, //[out] 単語が見つかった場合は、単語の終端の次のバイトの先頭インデックスを返す。
CNativeW* pcmcmWord, //[out] 単語が見つかった場合は、現在単語を切り出して指定されたCMemoryオブジェクトに格納する。情報が不要な場合はNULLを指定する。
Expand Down
4 changes: 2 additions & 2 deletions sakura_core/view/CEditView_Search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,7 @@ int CEditView::IsSearchString(
else if( m_sCurSearchOption.bWordOnly ) { // 単語検索
/* 指定位置の単語の範囲を調べる */
CLogicInt posWordHead, posWordEnd;
if( ! CWordParse::WhereCurrentWord_2( cStr.GetPtr(), CLogicInt(cStr.GetLength()), nPos, &posWordHead, &posWordEnd, NULL, NULL ) ) {
if( ! CWordParse::WhereCurrentWord_2( cStr.GetPtr(), CLogicInt(cStr.GetLength()), nPos, GetDllShareData().m_Common.m_sEdit.m_bEnableExtEol, &posWordHead, &posWordEnd, NULL, NULL ) ) {
return 0; // 指定位置に単語が見つからなかった。
}
if( nPos != posWordHead ) {
Expand All @@ -481,7 +481,7 @@ int CEditView::IsSearchString(
const wchar_t* const searchKeyEnd = m_strCurSearchKey.data() + m_strCurSearchKey.size();
for( const wchar_t* p = m_strCurSearchKey.data(); p < searchKeyEnd; ) {
CLogicInt begin, end; // 検索語に含まれる単語?の位置。WhereCurrentWord_2()の仕様では空白文字列も単語に含まれる。
if( CWordParse::WhereCurrentWord_2( p, CLogicInt(searchKeyEnd - p), CLogicInt(0), &begin, &end, NULL, NULL )
if( CWordParse::WhereCurrentWord_2( p, CLogicInt(searchKeyEnd - p), CLogicInt(0), GetDllShareData().m_Common.m_sEdit.m_bEnableExtEol, &begin, &end, NULL, NULL )
&& begin == 0 && begin < end
) {
if( ! WCODE::IsWordDelimiter( *p ) ) {
Expand Down
Loading

0 comments on commit 71094ea

Please sign in to comment.