1. 다중 선택시 paste하면 보통의 Scintilla 어플들은 선택행마다 각각 paste가 동작하는데(키보드 입력과 유사하게), 현재의 patch에서는 기존 Notepad2와 동일하게 동작합니다.
혹시 이 부분에 대해선 어떤 생각이 있으신가요?
2. IME Inline은 한국어로 번역하려니 뭐라고 할지 애매하네요.
혹시 적절한 번역을 추천해주실 수 있을까요?
3. Notepad2.c의 수정 중에
//cancel selection
int curPos = ...
부분은 변수 선언이 case 내에 위치하는데, 이건 {...}로 묶는 등의 처리가 있으면 좋겠습니다.
VS2015에선 컴파일이 잘 되지만, WDK에선 이 부분에서 오류가 발생합니다.
계속 테스트해보면서 리포트할 내용들 있으면 계속 올리겠습니다.
1. 추가: SendMessage(hwndEdit,SCI_SETMULTIPASTE,SC_MULTIPASTE_EACH,0);
2. IME 인라인
3. {...}로 묶음
case CMD_ESCAPE:
{
//close the autocomplete box
SendMessage(hwndEdit,SCI_AUTOCCANCEL,0, 0);
//cancel selection
int curPos = (int)SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
SendMessage(hwndEdit,SCI_SETEMPTYSELECTION,(WPARAM)curPos,(LPARAM)curPos);
if (iEscFunction == 1)
SendMessage(hwnd,WM_SYSCOMMAND,SC_MINIMIZE,0);
else if (iEscFunction == 2)
SendMessage(hwnd,WM_CLOSE,0,0);
}
break; case CMD_ESCAPE:
//close the autocomplete box
SendMessage(hwndEdit,SCI_AUTOCCANCEL,0, 0);
//cancel selection
{
int curPos = (int)SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
SendMessage(hwndEdit,SCI_SETEMPTYSELECTION,(WPARAM)curPos,(LPARAM)curPos);
}
if (iEscFunction == 1)
SendMessage(hwnd,WM_SYSCOMMAND,SC_MINIMIZE,0);
else if (iEscFunction == 2)
SendMessage(hwnd,WM_CLOSE,0,0);
break; else if (bAutoCompleteWords && (!SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0) || !__isascii(scn->ch))) CompleteWord(hwndEdit, FALSE); break;else if (bAutoCompleteWords && (!SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0) || (scn->ch < 32) || (scn->ch > 255)))scn->ch > 255
scn->ch > '\xFF'
같은 코드가 아닌 것 같습니다..
같은 코드라면
else if (bAutoCompleteWords && (!SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0) || (scn->ch < 32) || (scn->ch > 255)))
; 5626 : }
; 5627 : }
; 5628 : }
; 5629 : }
; 5630 : }
; 5631 : else if (bAutoCompleteWords && (!SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0) || scn->ch > '\xFF'))
cmp DWORD PTR _bAutoCompleteWords, 0
je $LN90@MsgNotify
push 0
push 0
push 2102 ; 00000836H
push DWORD PTR _hwndEdit
call DWORD PTR __imp__SendMessageW@16
test eax, eax
je SHORT $LN63@MsgNotify
cmp DWORD PTR [esi+16], -1
jle SHORT $LN90@MsgNotify
$LN63@MsgNotify:; 5626 : }
; 5627 : }
; 5628 : }
; 5629 : }
; 5630 : }
; 5631 : else if (bAutoCompleteWords && (!SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0) || (scn->ch < 32) || (scn->ch > 255)))
cmp DWORD PTR _bAutoCompleteWords, 0
je $LN90@MsgNotify
push 0
push 0
push 2102 ; 00000836H
push DWORD PTR _hwndEdit
call DWORD PTR __imp__SendMessageW@16
test eax, eax
je SHORT $LN63@MsgNotify
mov eax, DWORD PTR [esi+16]
cmp eax, 32 ; 00000020H
jl SHORT $LN63@MsgNotify
cmp eax, 255 ; 000000ffH
jle SHORT $LN90@MsgNotify
$LN63@MsgNotify:
else if (bAutoCompleteWords && (!SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0) || (scn->ch < 32) || ((scn->ch > 0x7f) && (scn->ch < 0xc2)) || (scn->ch > 0xc3)))else if (bAutoCompleteWords && (!SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0) || (scn->ch < 32) || ((scn->ch > 0x7f) && (scn->ch < 0xc2)) || (scn->ch > 0xc3)))어쩌면 _그것보다
어쩌면 _그것보다
어쩌면 _그것보다
Do you _love me?
Do you _love me?
Do you _love me?
자동 완성 새로운 문제
어쩌면 _그것보다
어쩌면 _그것보다
어쩌면 _그것보다
1. "ㄱ"을 입력하면 "ㄱ그것보다"가 자동 입력으로 뜹니다.
2. 여기서 다시 Back space를 눌러 "ㄱ"를 제거해도 자동 입력창에 "ㄱ그것보다"가 남아있습니다.
Do you _love me?
Do you _love me?
Do you _love me?
이렇게 입력하고 언더라인 위치의 3개를 선택한 뒤에
(역시 언더라인은 내용이 아니라 그냥 커서...)
영문을 입력하면 2, 4, 6...(짝수) 개를 입력하면 자동입력 활성화,
홀수 개를 입력하거나 Back space를 입력하면 자동입력 비활성화가 됩니다.
case SCN_MODIFIED:
if (scn->modificationType & SC_LASTSTEPINUNDOREDO)
if (SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0))
SendMessage(hwndEdit, SCI_AUTOCCANCEL, 0, 0);
case SCN_ZOOM:
UpdateLineNumberWidth();
break;