From ce113f5f4e54b4716d1dff9b1f27b09da350e9a8 Mon Sep 17 00:00:00 2001 From: nathancorvussolis Date: Sat, 9 Jul 2016 01:33:16 +0900 Subject: [PATCH] Add backward match complement option --- .gitignore | 10 --- README.md | 7 +- common/configxml.cpp | 1 + common/configxml.h | 1 + imcrvcnf/DlgProcBehavior2.cpp | 3 + imcrvcnf/imcrvcnf.rc | 1 + imcrvcnf/resource.h | 1 + imcrvmgr/ConfigMgr.cpp | 8 ++ imcrvmgr/SearchUserDictionary.cpp | 19 +++- imcrvmgr/imcrvmgr.h | 1 + imcrvtip/CandidatePaint.cpp | 86 +++++++++++++------ imcrvtip/FnConfig.cpp | 2 +- imcrvtip/KeyHandler.cpp | 3 +- imcrvtip/KeyHandlerConv.cpp | 26 +++++- installer/config-sample/config - act.xml | 1 + .../config-sample/config - azik-jpkbd.xml | 1 + .../config-sample/config - azik-uskbd.xml | 1 + installer/config-sample/config - gact10.xml | 1 + installer/config-sample/config - kana.xml | 1 + installer/config-sample/config - roman.xml | 1 + installer/config-share/config.xml | 1 + 21 files changed, 128 insertions(+), 48 deletions(-) diff --git a/.gitignore b/.gitignore index 386a23ec..f858bdf1 100644 --- a/.gitignore +++ b/.gitignore @@ -244,16 +244,6 @@ ModelManifest.xml # FAKE - F# Make .fake/ - - -# WiX Toolset files -*.msi -*.wixobj -*.wixpdb - -# Archive files -*.zip - # Backup files *.BAK *.bak diff --git a/README.md b/README.md index 8e4b8297..94e03e13 100644 --- a/README.md +++ b/README.md @@ -102,10 +102,14 @@ IME ON/OFF のキーのみ、IME ON → OFF のときにも反映されます。 | config.xml | 各種設定 | | skkdict.txt | 取込済SKK辞書 | -各種設定の config.xml ファイルは、UTF-8 の XML フォーマットのテキストファイルとなっており、テキストエディタで編集可能です。変更した後は、IME OFF → ON で新しい設定が反映されます。 +各種設定の config.xml ファイルは、UTF-8 の XML フォーマットのテキストファイルとなっています。 + +設定ダイアログで OK ボタンまたは適用ボタンを押すと config.xml ファイルが保存されます。テキストエディタなどでも編集可能です。変更した後は、IME OFF → ON で新しい設定が反映されます。 取込済SKK辞書の skkdict.txt ファイルは、UTF-16 (LE, BOMあり) のSKK辞書フォーマットとなっています。 +設定ダイアログのリストにSKK辞書を追加して取込ボタンを押すと取込済SKK辞書に変換されます。後述の[SKK辞書](#skk辞書)の項を参照してください。 + SKK辞書サーバーを使用するなどでローカルのSKK辞書を使用したくないときは、設定ダイアログのSKK辞書のリストが空またはチェック無しの状態で取込処理をおこなってください。空の取込済SKK辞書が生成されます。 下記のディレクトリの優先順位で各ファイルが読み込まれます。 @@ -216,6 +220,7 @@ SKK辞書のダウンロード機能では HTTP, HTTPS が使用可能です。 | 動的補完を使用する | 見出し語が入力されたとき、ユーザー辞書から補完された見出し語を表示します。
「▽表示属性」の「\*送り」の色が使用されます。 | | 複数動的補完を使用する | 見出し語が入力されたとき、ユーザー辞書から補完された見出し語を一覧で表示します。
補完対象は「候補一覧の色」の「選択」、補完部分は「候補」の色が使用されます。 | | 補完された見出し語の候補を表示する | 補完/複数補完/動的補完/複数動的補完のとき、ユーザー辞書の検索結果を追加して表示します。
表示する候補の数は最大で「候補一覧表示に要する変換回数」-1 です。
補完/動的補完では「▽表示属性」の「\*送り」の色が使用されます。
複数補完/複数動的補完では「候補一覧の色」の「注釈」の色が使用されます。 | +| 前方一致と後方一致で補完する | 通常の前方一致での補完に加えて後方一致でも補完します。 | ###表示 diff --git a/common/configxml.cpp b/common/configxml.cpp index 21926c4f..46c0dec5 100644 --- a/common/configxml.cpp +++ b/common/configxml.cpp @@ -74,6 +74,7 @@ LPCWSTR ValueStaCompMulti = L"stacompmulti"; LPCWSTR ValueDynamicComp = L"dynamiccomp"; LPCWSTR ValueDynCompMulti = L"dyncompmulti"; LPCWSTR ValueCompUserDic = L"compuserdic"; +LPCWSTR ValueCompIncBack = L"compincback"; //font section diff --git a/common/configxml.h b/common/configxml.h index 85e73918..4c7e8d90 100644 --- a/common/configxml.h +++ b/common/configxml.h @@ -101,6 +101,7 @@ extern LPCWSTR ValueStaCompMulti; extern LPCWSTR ValueDynamicComp; extern LPCWSTR ValueDynCompMulti; extern LPCWSTR ValueCompUserDic; +extern LPCWSTR ValueCompIncBack; //font section diff --git a/imcrvcnf/DlgProcBehavior2.cpp b/imcrvcnf/DlgProcBehavior2.cpp index b9a97ec7..60b459a1 100644 --- a/imcrvcnf/DlgProcBehavior2.cpp +++ b/imcrvcnf/DlgProcBehavior2.cpp @@ -32,6 +32,7 @@ INT_PTR CALLBACK DlgProcBehavior2(HWND hDlg, UINT message, WPARAM wParam, LPARAM LoadCheckButton(hDlg, IDC_CHECKBOX_DYNAMINCOMP, SectionBehavior, ValueDynamicComp); LoadCheckButton(hDlg, IDC_CHECKBOX_DYNCOMPMULTI, SectionBehavior, ValueDynCompMulti); LoadCheckButton(hDlg, IDC_CHECKBOX_COMPUSERDIC, SectionBehavior, ValueCompUserDic); + LoadCheckButton(hDlg, IDC_CHECKBOX_COMPINCBACK, SectionBehavior, ValueCompIncBack); return TRUE; @@ -53,6 +54,7 @@ INT_PTR CALLBACK DlgProcBehavior2(HWND hDlg, UINT message, WPARAM wParam, LPARAM case IDC_CHECKBOX_DYNAMINCOMP: case IDC_CHECKBOX_DYNCOMPMULTI: case IDC_CHECKBOX_COMPUSERDIC: + case IDC_CHECKBOX_COMPINCBACK: PropSheet_Changed(GetParent(hDlg), hDlg); @@ -78,6 +80,7 @@ INT_PTR CALLBACK DlgProcBehavior2(HWND hDlg, UINT message, WPARAM wParam, LPARAM SaveCheckButton(hDlg, IDC_CHECKBOX_DYNAMINCOMP, ValueDynamicComp); SaveCheckButton(hDlg, IDC_CHECKBOX_DYNCOMPMULTI, ValueDynCompMulti); SaveCheckButton(hDlg, IDC_CHECKBOX_COMPUSERDIC, ValueCompUserDic); + SaveCheckButton(hDlg, IDC_CHECKBOX_COMPINCBACK, ValueCompIncBack); WriterEndSection(pXmlWriter); //End of SectionBehavior diff --git a/imcrvcnf/imcrvcnf.rc b/imcrvcnf/imcrvcnf.rc index c096a242..6d8adb5e 100644 --- a/imcrvcnf/imcrvcnf.rc +++ b/imcrvcnf/imcrvcnf.rc @@ -116,6 +116,7 @@ FONT 10, "MS Gothic" AUTOCHECKBOX "動的補完を使用する", IDC_CHECKBOX_DYNAMINCOMP, 24, 50, 220, 8 AUTOCHECKBOX "複数動的補完を使用する", IDC_CHECKBOX_DYNCOMPMULTI, 24, 65, 220, 8 AUTOCHECKBOX "補完された見出し語の候補を表示する", IDC_CHECKBOX_COMPUSERDIC, 24, 80, 220, 8 + AUTOCHECKBOX "前方一致と後方一致で補完する", IDC_CHECKBOX_COMPINCBACK, 24, 95, 220, 8 } IDD_DIALOG_DISPLAY DIALOG 0, 0, 268, 244 diff --git a/imcrvcnf/resource.h b/imcrvcnf/resource.h index 25d436e8..7a78f5d0 100644 --- a/imcrvcnf/resource.h +++ b/imcrvcnf/resource.h @@ -57,6 +57,7 @@ #define IDC_CHECKBOX_DYNAMINCOMP 1303 #define IDC_CHECKBOX_DYNCOMPMULTI 1304 #define IDC_CHECKBOX_COMPUSERDIC 1305 +#define IDC_CHECKBOX_COMPINCBACK 1306 #define IDC_EDIT_FONTNAME 2001 #define IDC_EDIT_FONTPOINT 2002 diff --git a/imcrvmgr/ConfigMgr.cpp b/imcrvmgr/ConfigMgr.cpp index ac4cec5d..132e1ced 100644 --- a/imcrvmgr/ConfigMgr.cpp +++ b/imcrvmgr/ConfigMgr.cpp @@ -25,6 +25,7 @@ DWORD encoding = 0; //エンコーディング DWORD timeout = 1000; //タイムアウト BOOL precedeokuri = FALSE; //送り仮名が一致した候補を優先する +BOOL compincback = FALSE; //前方一致と後方一致で補完する const luaL_Reg luaFuncs[] = { @@ -237,6 +238,13 @@ void LoadConfig() { precedeokuri = FALSE; } + + ReadValue(pathconfigxml, SectionBehavior, ValueCompIncBack, strxmlval); + compincback = _wtoi(strxmlval.c_str()); + if(compincback != TRUE && compincback != FALSE) + { + compincback = FALSE; + } } BOOL IsFileModified(LPCWSTR path, FILETIME *ft) diff --git a/imcrvmgr/SearchUserDictionary.cpp b/imcrvmgr/SearchUserDictionary.cpp index e362cb1b..f6e3c780 100644 --- a/imcrvmgr/SearchUserDictionary.cpp +++ b/imcrvmgr/SearchUserDictionary.cpp @@ -85,11 +85,22 @@ void SearchComplement(const std::wstring &searchkey, SKKDICCANDIDATES &sc) break; } - if(keyorder_ritr->compare(0, searchkey.size(), searchkey) == 0 && - searchkey.size() < keyorder_ritr->size()) + if(searchkey.size() < keyorder_ritr->size()) { - sc.push_back(SKKDICCANDIDATE(*keyorder_ritr, L"")); - ++count; + if(keyorder_ritr->compare(0, searchkey.size(), searchkey) == 0) + { + //前方一致 + sc.push_back(SKKDICCANDIDATE(*keyorder_ritr, L"")); + ++count; + } + else if(compincback && + keyorder_ritr->compare((keyorder_ritr->size() - searchkey.size()), + searchkey.size(), searchkey) == 0) + { + //後方一致 + sc.push_back(SKKDICCANDIDATE(*keyorder_ritr, L"")); + ++count; + } } } } diff --git a/imcrvmgr/imcrvmgr.h b/imcrvmgr/imcrvmgr.h index 33d7cb02..9b82a963 100644 --- a/imcrvmgr/imcrvmgr.h +++ b/imcrvmgr/imcrvmgr.h @@ -117,5 +117,6 @@ extern DWORD encoding; //エンコーディング extern DWORD timeout; //タイムアウト extern BOOL precedeokuri; //送り仮名が一致した候補を優先する +extern BOOL compincback; //前方一致と後方一致で補完する #endif //IMCRVMGR_H diff --git a/imcrvtip/CandidatePaint.cpp b/imcrvtip/CandidatePaint.cpp index 82cf437a..419cb422 100644 --- a/imcrvtip/CandidatePaint.cpp +++ b/imcrvtip/CandidatePaint.cpp @@ -7,6 +7,12 @@ #define MERGIN_X 2 #define MERGIN_Y 4 +const int colors_compback[DISPLAY_COLOR_NUM] = +{ + CL_COLOR_BG, CL_COLOR_FR, CL_COLOR_CA, CL_COLOR_CO, + CL_COLOR_SE, CL_COLOR_SC, CL_COLOR_AN, CL_COLOR_NO +}; + void CCandidateWindow::_WindowProcPaint(HWND hWnd) { PAINTSTRUCT ps; @@ -18,7 +24,7 @@ void CCandidateWindow::_WindowProcPaint(HWND hWnd) HGDIOBJ bmp = nullptr, font = nullptr, pen, brush; RECT r, rc; POINT pt; - int cx, cy, cycle; + int cx, cy; UINT page, count, i; std::wstring s; WCHAR strPage[32]; @@ -97,7 +103,7 @@ void CCandidateWindow::_WindowProcPaint(HWND hWnd) for(i = 0; i < _CandCount[page]; i++) { s.clear(); - for(cycle = CL_COLOR_BG; cycle < DISPLAY_COLOR_NUM; cycle++) + for(int cycle = 0; cycle < DISPLAY_COLOR_NUM; cycle++) { s += _MakeCandidateString(page, count, i, cycle); } @@ -284,8 +290,17 @@ void CCandidateWindow::_PaintRegWord(HDC hdc, LPRECT lpr) std::wstring CCandidateWindow::_MakeCandidateString(UINT page, UINT count, UINT idx, int cycle) { std::wstring s; + std::wstring ca = candidates[count + _uShowedCount + idx].first.first; + std::wstring an = candidates[count + _uShowedCount + idx].first.second; + + int color_cycle = cycle; + if(_comp && ca.compare(0, searchkey.size(), searchkey) != 0) + { + //補完かつ後方一致 + color_cycle = colors_compback[cycle]; + } - switch(cycle) + switch(color_cycle) { case CL_COLOR_BG: s.append(markNBSP); @@ -315,30 +330,40 @@ std::wstring CCandidateWindow::_MakeCandidateString(UINT page, UINT count, UINT case CL_COLOR_CA: if(!_comp) { - s.append( - std::regex_replace(candidates[ count + _uShowedCount + idx ].first.first, + s.append(std::regex_replace(ca, std::wregex(markSP), std::wstring(markNBSP))); } else { - s.append( - std::regex_replace(candidates[ count + _uShowedCount + idx ].first.first.substr(searchkey.size()), - std::wregex(markSP), std::wstring(markNBSP))); + if(searchkey.size() < ca.size()) + { + if(ca.compare(0, searchkey.size(), searchkey) == 0) + { + //前方一致 + s.append(std::regex_replace(ca.substr(searchkey.size()), + std::wregex(markSP), std::wstring(markNBSP))); + } + else + { + //後方一致 + s.append(std::regex_replace(ca.substr(0, ca.size() - searchkey.size()), + std::wregex(markSP), std::wstring(markNBSP))); + } + } } break; case CL_COLOR_SC: if(!_comp) { - if(_pTextService->cx_annotation && - !candidates[count + _uShowedCount + idx].first.second.empty()) + if(_pTextService->cx_annotation && !an.empty()) { s.append(markAnnotation); } } else { - if(!candidates[count + _uShowedCount + idx].first.second.empty()) + if(!an.empty()) { s.append(markNBSP); } @@ -348,20 +373,17 @@ std::wstring CCandidateWindow::_MakeCandidateString(UINT page, UINT count, UINT case CL_COLOR_AN: if(!_comp) { - if(_pTextService->cx_annotation && - !candidates[count + _uShowedCount + idx].first.second.empty()) + if(_pTextService->cx_annotation && !an.empty()) { - s.append( - std::regex_replace(candidates[count + _uShowedCount + idx].first.second, + s.append(std::regex_replace(an, std::wregex(markSP), std::wstring(markNBSP))); } } else { - if(!candidates[count + _uShowedCount + idx].first.second.empty()) + if(!an.empty()) { - s.append( - std::regex_replace(candidates[count + _uShowedCount + idx].first.second, + s.append(std::regex_replace(an, std::wregex(markSP), std::wstring(markNBSP))); } } @@ -381,7 +403,6 @@ std::wstring CCandidateWindow::_MakeCandidateString(UINT page, UINT count, UINT void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT count, UINT idx) { - int cycle; std::wstring s; RECT r, r_ex; D2D1_RECT_F rd2d; @@ -391,10 +412,19 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun r_ex = *lpr; r_ex.right = r_ex.left; - for(cycle = CL_COLOR_BG; cycle < DISPLAY_COLOR_NUM; cycle++) + std::wstring ca = candidates[count + _uShowedCount + idx].first.first; + + for(int cycle = 0; cycle < DISPLAY_COLOR_NUM; cycle++) { s = _MakeCandidateString(page, count, idx, cycle); + int color_cycle = cycle; + if(_comp && ca.compare(0, searchkey.size(), searchkey) != 0) + { + //補完かつ後方一致 + color_cycle = colors_compback[cycle]; + } + if(_pD2DDCRT != nullptr && _pDWTF != nullptr) { if(_GetTextMetrics(s.c_str(), &dwTM) == S_OK) @@ -411,7 +441,8 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun rd2d = D2D1::RectF((FLOAT)r.left, (FLOAT)r.top, (FLOAT)r.right, (FLOAT)r.bottom); - if(_comp && (count + _uShowedCount + idx == candidx) && (cycle == CL_COLOR_SE || cycle == CL_COLOR_CA)) + if(_comp && (count + _uShowedCount + idx == candidx) && + (color_cycle == CL_COLOR_SE || color_cycle == CL_COLOR_CA)) { _pD2DDCRT->FillRectangle(&rd2d, _pD2DBrush[CL_COLOR_SE]); _pD2DDCRT->DrawText(s.c_str(), (UINT32)s.size(), @@ -420,7 +451,7 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun else { _pD2DDCRT->DrawText(s.c_str(), (UINT32)s.size(), - _pDWTF, &rd2d, _pD2DBrush[cycle], _drawtext_option); + _pDWTF, &rd2d, _pD2DBrush[color_cycle], _drawtext_option); } } else @@ -433,7 +464,8 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun r_ex.right = r.right; - if(_comp && (count + _uShowedCount + idx == candidx) && (cycle == CL_COLOR_SE || cycle == CL_COLOR_CA)) + if(_comp && (count + _uShowedCount + idx == candidx) && + (color_cycle == CL_COLOR_SE || color_cycle == CL_COLOR_CA)) { SetTextColor(hdc, _pTextService->cx_colors[CL_COLOR_BG]); SetBkColor(hdc, _pTextService->cx_colors[CL_COLOR_SE]); @@ -441,7 +473,7 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun } else { - SetTextColor(hdc, _pTextService->cx_colors[cycle]); + SetTextColor(hdc, _pTextService->cx_colors[color_cycle]); SetBkMode(hdc, TRANSPARENT); } @@ -459,7 +491,7 @@ void CCandidateWindow::_CalcWindowRect() HGDIOBJ font = nullptr; RECT r, rw; POINT pt; - int x, y, cx = 0, cy = 0, xmax = 0, cycle; + int x, y, cx = 0, cy = 0, xmax = 0; UINT page, count, i; std::wstring s; WCHAR strPage[32]; @@ -538,7 +570,7 @@ void CCandidateWindow::_CalcWindowRect() for(i = 0; i < _CandCount[page]; i++) { s.clear(); - for(cycle = CL_COLOR_BG; cycle < DISPLAY_COLOR_NUM; cycle++) + for(int cycle = 0; cycle < DISPLAY_COLOR_NUM; cycle++) { s += _MakeCandidateString(page, count, i, cycle); } @@ -596,7 +628,7 @@ void CCandidateWindow::_CalcWindowRect() for(i = 0; i < _CandCount[page]; i++) { s.clear(); - for(cycle = CL_COLOR_BG; cycle < DISPLAY_COLOR_NUM; cycle++) + for(int cycle = 0; cycle < DISPLAY_COLOR_NUM; cycle++) { s += _MakeCandidateString(page, count, i, cycle); } diff --git a/imcrvtip/FnConfig.cpp b/imcrvtip/FnConfig.cpp index 985f3ab7..c2a9e8c4 100644 --- a/imcrvtip/FnConfig.cpp +++ b/imcrvtip/FnConfig.cpp @@ -48,7 +48,7 @@ static const TF_PRESERVEDKEY configpreservedkey[] = static const struct { LPCWSTR value; COLORREF color; -} colorsxmlvalue[8] = +} colorsxmlvalue[DISPLAY_COLOR_NUM] = { {ValueColorBG, RGB(0xFF,0xFF,0xFF)}, {ValueColorFR, RGB(0x00,0x00,0x00)}, diff --git a/imcrvtip/KeyHandler.cpp b/imcrvtip/KeyHandler.cpp index 7e1c9f03..9d71ae68 100644 --- a/imcrvtip/KeyHandler.cpp +++ b/imcrvtip/KeyHandler.cpp @@ -94,7 +94,8 @@ HRESULT CTextService::_HandleKey(TfEditCookie ec, ITfContext *pContext, WPARAM w if(complement) { complement = FALSE; //補完終了 - kana = kana.erase(cursoridx); + kana = searchkey; + cursoridx = kana.size(); if(cx_dynamiccomp || cx_dyncompmulti) { diff --git a/imcrvtip/KeyHandlerConv.cpp b/imcrvtip/KeyHandlerConv.cpp index 122010af..316081ae 100644 --- a/imcrvtip/KeyHandlerConv.cpp +++ b/imcrvtip/KeyHandlerConv.cpp @@ -540,7 +540,13 @@ void CTextService::_NextComp() { complement = TRUE; candidx = 0; - _SetComp(candidates[candidx].first.first); + std::wstring compc = candidates[candidx].first.first; + cursoridx = searchkey.size(); + if(compc.compare(0, searchkey.size(), searchkey) != 0) + { + cursoridx = compc.size() - searchkey.size(); + } + _SetComp(compc); } } else @@ -548,7 +554,13 @@ void CTextService::_NextComp() if(candidx < candidates.size() - 1) { ++candidx; - _SetComp(candidates[candidx].first.first); + std::wstring compc = candidates[candidx].first.first; + cursoridx = searchkey.size(); + if(compc.compare(0, searchkey.size(), searchkey) != 0) + { + cursoridx = compc.size() - searchkey.size(); + } + _SetComp(compc); } } } @@ -560,15 +572,21 @@ void CTextService::_PrevComp() if(candidx == 0) { complement = FALSE; + kana = searchkey; + cursoridx = kana.size(); + _SetComp(searchkey); } else { --candidx; - if(candidx < candidates.size()) + std::wstring compc = candidates[candidx].first.first; + cursoridx = searchkey.size(); + if(compc.compare(0, searchkey.size(), searchkey) != 0) { - _SetComp(candidates[candidx].first.first); + cursoridx = compc.size() - searchkey.size(); } + _SetComp(compc); } } } diff --git a/installer/config-sample/config - act.xml b/installer/config-sample/config - act.xml index a5aafe78..8d0cfb6d 100644 --- a/installer/config-sample/config - act.xml +++ b/installer/config-sample/config - act.xml @@ -33,6 +33,7 @@ +
diff --git a/installer/config-sample/config - azik-jpkbd.xml b/installer/config-sample/config - azik-jpkbd.xml index 5dd6229a..c0842e11 100644 --- a/installer/config-sample/config - azik-jpkbd.xml +++ b/installer/config-sample/config - azik-jpkbd.xml @@ -33,6 +33,7 @@ +
diff --git a/installer/config-sample/config - azik-uskbd.xml b/installer/config-sample/config - azik-uskbd.xml index 7cce25e3..f9858531 100644 --- a/installer/config-sample/config - azik-uskbd.xml +++ b/installer/config-sample/config - azik-uskbd.xml @@ -33,6 +33,7 @@ +
diff --git a/installer/config-sample/config - gact10.xml b/installer/config-sample/config - gact10.xml index 65f8feb6..c3dba2fe 100644 --- a/installer/config-sample/config - gact10.xml +++ b/installer/config-sample/config - gact10.xml @@ -68,6 +68,7 @@ +
diff --git a/installer/config-sample/config - kana.xml b/installer/config-sample/config - kana.xml index bddeb84a..5f7da227 100644 --- a/installer/config-sample/config - kana.xml +++ b/installer/config-sample/config - kana.xml @@ -46,6 +46,7 @@ +
diff --git a/installer/config-sample/config - roman.xml b/installer/config-sample/config - roman.xml index 9c9c7ceb..9ee3e150 100644 --- a/installer/config-sample/config - roman.xml +++ b/installer/config-sample/config - roman.xml @@ -33,6 +33,7 @@ +
diff --git a/installer/config-share/config.xml b/installer/config-share/config.xml index 968e9480..298ed9d2 100644 --- a/installer/config-share/config.xml +++ b/installer/config-share/config.xml @@ -26,6 +26,7 @@ +