Skip to content

Commit

Permalink
Fix dynamic complement with backward match
Browse files Browse the repository at this point in the history
  • Loading branch information
nathancorvussolis committed Jul 11, 2016
1 parent 67b6283 commit b974921
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 14 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ SKK辞書のダウンロード機能では HTTP, HTTPS が使用可能です。
|---|---|
| 複数補完/複数動的補完の表示数 | 複数補完、複数動的補完での1ページあたりの候補数を指定します。 |
| 複数補完を使用する | 通常の補完のとき、ユーザー辞書から補完された見出し語を一覧で表示します。<br>補完対象は「候補一覧の色」の「選択」、補完部分は「候補」の色が使用されます。 |
| 動的補完を使用する | 見出し語が入力されたとき、ユーザー辞書から補完された見出し語を表示します。<br>「▽表示属性」の「\*送り」の色が使用されます。 |
| 動的補完を使用する | 見出し語が入力されたとき、ユーザー辞書から補完された見出し語を表示します。 |
| 複数動的補完を使用する | 見出し語が入力されたとき、ユーザー辞書から補完された見出し語を一覧で表示します。<br>補完対象は「候補一覧の色」の「選択」、補完部分は「候補」の色が使用されます。 |
| 補完された見出し語の候補を表示する | 補完/複数補完/動的補完/複数動的補完のとき、ユーザー辞書の検索結果を追加して表示します。<br>表示する候補の数は最大で「候補一覧表示に要する変換回数」-1 です。<br>補完/動的補完では「▽表示属性」の「\*送り」の色が使用されます。<br>複数補完/複数動的補完では「候補一覧の色」の「注釈」の色が使用されます。 |
| 前方一致と後方一致で補完する | 通常の前方一致での補完に加えて後方一致でも補完します。 |
Expand Down
1 change: 1 addition & 0 deletions imcrvtip/Globals.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ LPCWSTR markRegR = L"]";
LPCWSTR markRegKeyEnd = L"";
LPCWSTR markSP = L"\x20";
LPCWSTR markNBSP = L"\u00A0";
LPCWSTR markHM = L"\x2D";
LPCWSTR markMidashi = L"";
LPCWSTR markHenkan = L"";
LPCWSTR markOkuri = L"*";
Expand Down
36 changes: 23 additions & 13 deletions imcrvtip/KeyHandlerConv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -626,32 +626,38 @@ void CTextService::_DynamicComp(TfEditCookie ec, ITfContext *pContext, BOOL sel)
complement = FALSE;
_NextComp();

cursoridx = cursoridx_bak;

if(complement)
{
if(cx_compuserdic)
if(cx_dynamiccomp)
{
if(!candidates.empty())
kana.insert(cursoridx, markHM);
cursoridx = cursoridx_bak;
if(kana_bak.size() < kana.size() &&
kana.compare(0, kana_bak.size(), kana_bak) != 0)
{
kana += markSP + candidates[0].first.second;
cursoridx += (kana.size() - kana_bak.size());
}
}

okuriidx = kana_bak.size();

if(cx_dynamiccomp)
{
kana.insert(okuriidx, 1, CHAR_SKK_OKURI);
if(cx_compuserdic && !cx_dyncompmulti)
{
if(!candidates.empty())
{
okuriidx = kana.size();
kana += markSP + candidates[0].first.second;
kana.insert(okuriidx, 1, CHAR_SKK_OKURI);
}
}

_Update(ec, pContext);

kana.erase(okuriidx);
kana = kana_bak;
cursoridx = cursoridx_bak;
okuriidx = 0;
}
else
{
kana.erase(okuriidx);
kana = kana_bak;
cursoridx = cursoridx_bak;
okuriidx = 0;

_Update(ec, pContext);
Expand Down Expand Up @@ -687,6 +693,10 @@ void CTextService::_DynamicComp(TfEditCookie ec, ITfContext *pContext, BOOL sel)
else
{
_EndCompletionList(ec, pContext);

kana = kana_bak;
cursoridx = cursoridx_bak;

_Update(ec, pContext);
}
}
Expand Down
1 change: 1 addition & 0 deletions imcrvtip/imcrvtip.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ extern LPCWSTR markRegR;
extern LPCWSTR markRegKeyEnd;
extern LPCWSTR markSP;
extern LPCWSTR markNBSP;
extern LPCWSTR markHM;
extern LPCWSTR markMidashi;
extern LPCWSTR markHenkan;
extern LPCWSTR markOkuri;
Expand Down

0 comments on commit b974921

Please sign in to comment.