source: dev/trunk/ab5.0/abdev/abdev/TextEditor_KeyEvent.cpp

Last change on this file was 829, checked in by イグトランス (egtra), 12 years ago

svn:eol-styleとsvn:mime-type(文字コード指定含む)の設定

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/plain; charset=Shift_JIS
File size: 26.4 KB
RevLine 
[829]1#include "stdafx.h"
2
3#include "common.h"
4#include "HtmlAnalysis.h"
5
6
7void TextEditEvent_StartAnalysis_Basic(HWND hwnd,int WndNum,int nVirtualKey);
8void TextEditEvent_StartAnalysis_Html(HWND hwnd,int WndNum,int nVirtualKey);
9
10
11void TextEditEvent_KeyUp(HWND hwnd,int nVirtualKey){
12 if(nVirtualKey==VK_CONTROL&&pobj_nv->bCtrlKeyHyperLink){
13 int WndNum;
14 WndNum=GetWndNum(GetParent(hwnd));
15
16 if(MdiInfo[WndNum]->pMdiTextEdit->iUnderStart!=-1){
17 //ƒnƒCƒp[ƒŠƒ“ƒN‰ºü‚Ì•\Ž¦‚ð‰ðœ
18 MdiInfo[WndNum]->pMdiTextEdit->iUnderStart=-1;
19 MdiInfo[WndNum]->pMdiTextEdit->iUnderEnd=-1;
20
21 //Ä•`‰æ
22 InvalidateRect(hwnd,NULL,0);
23 UpdateWindow(hwnd);
24 }
25
26 obj_WebStrings.clear();
27 }
28}
29
30
31int IsIndentAdditionCommand_FromBuffer(char *buffer){
32 int i;
33 char temporary[255];
34
35 for(i=0;;i++){
36 if(!IsVariableChar(buffer[i])){
37 temporary[i]=0;
38 break;
39 }
40 temporary[i]=buffer[i];
41 }
42
43 if(lstrcmpi(temporary,"If")==0){
44 //If•¶‚̏ꍇ‚̓uƒƒbƒNŒ`Ž®‚Ì—L–³‚ð”»’è
45
46 for(;;i++){
47 if(buffer[i]=='\''||
48 IsCommandDelimitation(buffer,i)){
49 i--;
50 break;
51 }
52 }
53
54 while(buffer[i]==' '||buffer[i]=='\t') i--;
55
56 if(memicmp(buffer+i-3,"Then",4)==0){
57 //ƒuƒƒbƒNŒ`Ž®‚ÌIf
58 return 1;
59 }
60 else{
61 //ˆês‚Ì‚Ý‚ÌIf
62 return 0;
63 }
64 }
65
66 if(
67 lstrcmpi(temporary,"Case")==0||
68 lstrcmpi(temporary,"Class")==0||
69 lstrcmpi(temporary,"Do")==0||
70 lstrcmpi(temporary,"Else")==0||
71 lstrcmpi(temporary,"ElseIf")==0||
72 lstrcmpi(temporary,"Enum")==0||
73 lstrcmpi(temporary,"For")==0||
74 lstrcmpi(temporary,"Foreach")==0||
75 lstrcmpi(temporary,"Function")==0||
76 lstrcmpi(temporary,"Namespace")==0||
77 lstrcmpi(temporary,"Override")==0||
78 lstrcmpi(temporary,"Sub")==0||
79 lstrcmpi(temporary,"Type")==0||
80 lstrcmpi(temporary,"Virtual")==0||
81 lstrcmpi(temporary,"Static")==0||
82 lstrcmpi(temporary,"While")==0||
83 lstrcmpi(temporary,"With")==0||
84
85 lstrcmpi(temporary,"Private")==0||
86 lstrcmpi(temporary,"Protected")==0||
87 lstrcmpi(temporary,"Public")==0||
88
89 lstrcmpi(temporary,"Try")==0||
90 lstrcmpi(temporary,"Catch")==0||
91 lstrcmpi(temporary,"Finally")==0
92 ) return 1;
93 else if(lstrcmpi(temporary,"Select")==0) return 2;
94 else if(lstrcmpi(temporary,"Interface")==0) return 3;
95
96 return 0;
97}
98int IsIndentDecreaseCommand_FromBuffer(char *buffer){
99 int i;
100 char temporary[255];
101
102 for(i=0;;i++){
103 if(!IsVariableChar(buffer[i])){
104 temporary[i]=0;
105 break;
106 }
107 temporary[i]=buffer[i];
108 }
109
110 if(lstrcmpi(temporary,"End")==0&&(buffer[i]==' '||buffer[i]=='\t')){
111 //End `‚̏ꍇ
112
113 int i2=i;
114
115 while(buffer[i]==' '||buffer[i]=='\t') i++;
116
117 for(;;i++,i2++){
118 if(!IsVariableChar(buffer[i])){
119 temporary[i2]=0;
120 break;
121 }
122 temporary[i2]=buffer[i];
123 }
124 }
125
126 if(
127 lstrcmpi(temporary,"Case")==0||
128 lstrcmpi(temporary,"EndClass")==0||
129 lstrcmpi(temporary,"Loop")==0||
130 lstrcmpi(temporary,"Else")==0||
131 lstrcmpi(temporary,"ElseIf")==0||
132 lstrcmpi(temporary,"EndIf")==0||
133 lstrcmpi(temporary,"EndEnum")==0||
134 lstrcmpi(temporary,"Next")==0||
135 lstrcmpi(temporary,"EndFunction")==0||
136 lstrcmpi(temporary,"EndNamespace")==0||
137 lstrcmpi(temporary,"EndSub")==0||
138 lstrcmpi(temporary,"EndType")==0||
139 lstrcmpi(temporary,"EndTry")==0||
140 lstrcmpi(temporary,"Wend")==0||
141 lstrcmpi(temporary,"EndWith")==0||
142
143 lstrcmpi(temporary,"Private")==0||
144 lstrcmpi(temporary,"Protected")==0||
145 lstrcmpi(temporary,"Public")==0||
146
147 lstrcmpi(temporary,"Catch")==0||
148 lstrcmpi(temporary,"Finally")==0
149 ) return 1;
150 else if(lstrcmpi(temporary,"EndSelect")==0) return 2;
151 else if(lstrcmpi(temporary,"EndInterface")==0) return 3;
152
153
154 return 0;
155}
156
157int TextEdit_GetLineIndex(int WndNum,int iPos){
158 int i;
159 char *pBuf;
160
161 pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
162 for(i=iPos;i>0;i--){
163 if(pBuf[i-1]=='\r'&&pBuf[i]=='\n') return i+1;
164 }
165 return i;
166}
167void TextEditEvent_Char(HWND hwnd,int nVirtualKey){
168 extern COMPLEMENT_WINDOW_INFO ComplementWndInfo;
169 int i,i2,i3;
170 char temporary[1024];
171 char *pBuf,*pTemp;
172 CHARRANGE CharRange;
173
174
175 //BackSpace‚ÍWM_KEYDOWN‚ŏˆ—
176 if(nVirtualKey==VK_BACK) return;
177
178 if(nVirtualKey==VK_ESCAPE){
179 if(ComplementWndInfo.hWnd){
180 //ƒR[ƒh•âŠ®ƒŠƒXƒg‚ð”jŠü‚·‚é
181 DestroyWindow(ComplementWndInfo.hWnd);
182 ComplementWndInfo.hWnd=0;
183 }
184
185 extern METHODCHECKINFO MethodCheckInfo;
186 if(MethodCheckInfo.hWnd){
187 //ƒpƒ‰ƒ[ƒ^ƒqƒ“ƒg‚ð”jŠü‚·‚é
188 DestroyWindow(MethodCheckInfo.hWnd);
189 MethodCheckInfo.hWnd=0;
190 }
191
192 return;
193 }
194
195 //–¢‘Ήž‚Ì•¶ŽšƒR[ƒh‚ÌŒë‚è“ü—Í‚ð‘jŽ~
196 if(GetKeyState(VK_CONTROL)&0x8000) return;
197
198 int WndNum;
199 WndNum=GetWndNum(GetParent(hwnd));
200
201 if(ComplementWndInfo.hWnd){
202 if((!(IsVariableChar(nVirtualKey)||nVirtualKey==VK_RETURN))||nVirtualKey=='.'){
203 //ƒR[ƒh•âŠ®ƒŠƒXƒg‚ð”jŠü‚·‚é
204
205 //ƒyƒAƒXƒe[ƒgƒƒ“ƒg•âŠ®‚̏ꍇ‚́A‹ó”’•¶Žš‚ð—e”F‚·‚é
206 if(!(nVirtualKey==' '&&ComplementWndInfo.pMemberInfo[0].dwAccess==ACCESS_PAIRCOMMAND)){
207 DestroyWindow(ComplementWndInfo.hWnd);
208 ComplementWndInfo.hWnd=0;
209 }
210 }
211 }
212
213 if(nVirtualKey==VK_RETURN){
214 if(ComplementWndInfo.hWnd){
215 //ƒR[ƒh•âŠ®ƒŠƒXƒg‚ª•\Ž¦‚³‚ê‚Ä‚¢‚é‚Æ‚«
216 for(i=0;i<ComplementWndInfo.MemberNum;i++){
217 if(ListView_GetItemState(ComplementWndInfo.hList,i,LVIS_SELECTED)) break;
218 }
219 if(i!=ComplementWndInfo.MemberNum){
220 SendMessage(ComplementWndInfo.hList,WM_KEYDOWN,VK_RETURN,0);
221 return;
222 }
223 else{
224 //ƒR[ƒh•âŠ®ƒŠƒXƒg‚ð”jŠü‚·‚é
225 DestroyWindow(ComplementWndInfo.hWnd);
226 ComplementWndInfo.hWnd=0;
227 }
228 }
229
230 temporary[0]='\r';
231 temporary[1]='\n';
232 temporary[2]=0;
233
234 if(nVirtualKey==VK_RETURN&&pobj_nv->bAutoIndent){
235 //////////////////
236 // Ž©“®ƒCƒ“ƒfƒ“ƒg
237 //////////////////
238
239 //ƒCƒ“ƒfƒ“ƒgˆ—’†‚Í‚¿‚ç‚‚«–hŽ~‚Ì‚½‚߁AƒLƒƒƒŒƒbƒg‚ðˆêŽž”ñ•\Ž¦‚É‚·‚é
240 extern int hide_caret_switch;
241 HideCaret(hwnd);
242 hide_caret_switch=1;
243
244 if(MdiInfo[WndNum]->IndentStr){
245 //ˆÈ‘O‚ÌŽ©“®ƒCƒ“ƒfƒ“ƒg‚ðÁ‹Ž‚·‚é
246 CancelBeforeAutoIndent(WndNum);
247 }
248
249 pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
250
251 int StartX;
252
253 //ƒŠƒvƒŒƒCƒX‘O‚̃J[ƒ\ƒ‹ƒoƒbƒtƒ@ˆÊ’u‚ðŽæ“¾
254 i=GetBufferIndexFromCaretPos(pBuf,
255 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x,
256 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y);
257 StartX=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x;
258
259 //ƒŠƒvƒŒƒCƒX
260 TextEdit_ReplaceUpdateUndoData(WndNum,temporary,0,1);
261 pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
262
263 //ƒŠƒvƒŒƒCƒXŒã‚̃J[ƒ\ƒ‹s‚̃Cƒ“ƒfƒ“ƒg‚ði3‚Ɏ擾
264 for(i3=0;;i3++){
265 if(pBuf[i+i3]!='\t') break;
266 }
267
268 //‘O‚̍s‚̃Cƒ“ƒfƒ“ƒg‚ðƒRƒs[ii2‚Ƀ^ƒu”‚ðŠi”[j
269 for(;i>0;i--){
270 if(
271 pBuf[i-1]=='\r'&&pBuf[i]=='\n'&&
272 (!(pBuf[i+1]=='\r'&&pBuf[i+2]=='\n'))
273 ){
274 i++;
275 break;
276 }
277 }
278
279 for(i2=0;;i2++){
280 if(pBuf[i+i2]!='\t') break;
281 }
282
283 if(MdiInfo[WndNum]->DocType==WNDTYPE_BASIC){
284 //ƒCƒ“ƒfƒ“ƒg’ljÁ‚̃Rƒ}ƒ“ƒh‚©‚Ç‚¤‚©‚ð”»’f
285 if(IsIndentAdditionCommand_FromBuffer(pBuf+i+i2)) i2++;
286 }
287
288 i2-=i3;
289 if(i2<0) i2=0;
290
291 //ƒCƒ“ƒfƒ“ƒg‚ª–³‚¢‚Æ‚«
292 if(i2==0){
293 hide_caret_switch=0;
294 ResetCaretPos(WndNum);
295 ShowCaret(hwnd);
296 return;
297 }
298
299 /*i‚hcƒJ[ƒ\ƒ‹j
300 iu\t\t‡Tv‚̂悤‚ȏꍇjA
301 iu\t\t‡Ttext...v‚̂悤‚ȏꍇj‚ð”»’f
302 */
303 i=GetBufferIndexFromCaretPos(pBuf,
304 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x,
305 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y);
306 if(pBuf[i]=='\r'&&
307 pBuf[i+1]=='\n'){
308 //Ž©“®ƒCƒ“ƒfƒ“ƒg‚ðŠJŽn‚·‚éiu\t\t‡Tv‚̂悤‚ȏꍇj
309 MdiInfo[WndNum]->IndentStr=(char *)HeapAlloc(hHeap,0,i2+1);
310 memset(MdiInfo[WndNum]->IndentStr,'\t',i2);
311 MdiInfo[WndNum]->IndentStr[i2]=0;
312 TextEdit_Replace(WndNum,MdiInfo[WndNum]->IndentStr,1);
313 }
314 else{
315 //Ž©“®ƒCƒ“ƒfƒ“ƒg‚ð—LŒø‚É‚·‚éiu\t\t‡Ttext...v‚̂悤‚ȏꍇj
316
317 //ƒŠƒvƒŒƒCƒX‘O‚̃J[ƒ\ƒ‹‚ªs‚̐擪ˆÊ’u‚É‚ ‚Á‚½ê‡‚Í”²‚¯o‚·
318 if(StartX==0){
319 hide_caret_switch=0;
320 ResetCaretPos(WndNum);
321 ShowCaret(hwnd);
322 return;
323 }
324
325 memset(temporary,'\t',i2);
326 temporary[i2]=0;
327 TextEdit_ReplaceUpdateUndoData(WndNum,temporary,0,1);
328 }
329
330 hide_caret_switch=0;
331 ShowCaret(hwnd);
332 return;
333 }
334 }
335 else if(nVirtualKey==VK_TAB){
336 pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
337
338 TextEdit_GetSel(WndNum,&CharRange);
339 for(i=CharRange.cpMin;i>0;i--){
340 if(pBuf[i-1]=='\r'&&pBuf[i]=='\n'){
341 i++;
342 break;
343 }
344 }
345 CharRange.cpMin=i;
346
347 for(i2=0;i<CharRange.cpMax;i++){
348 if(pBuf[i]=='\0') break;
349 if(pBuf[i]=='\r'&&pBuf[i+1]=='\n') i2++;
350 }
351 if(i2){
352 if(GetKeyState(VK_SHIFT)&0x8000){
353 //////////////////////////////////
354 // •¡”s‚ɂ킽‚Á‚ă^ƒu•¶Žš‚ðíœ
355 //////////////////////////////////
356
357 if(pBuf[CharRange.cpMax-2]=='\r'&&pBuf[CharRange.cpMax-1]=='\n'){
358 CharRange.cpMax-=2;
359 }
360
361 TextEdit_SetSel(WndNum,CharRange.cpMin,CharRange.cpMax);
362
363 pTemp=(char *)HeapAlloc(hHeap,0,CharRange.cpMax-CharRange.cpMin+1);
364
365 i=CharRange.cpMin;
366 for(i3=0;i<CharRange.cpMax;i++,i3++){
367 if(i==CharRange.cpMin&&pBuf[i]=='\t'){
368 i3--;
369 continue;
370 }
371 if(pBuf[i]=='\r'&&pBuf[i+1]=='\n'&&pBuf[i+2]=='\t'){
372 pTemp[i3]='\r';
373 pTemp[i3+1]='\n';
374 i3++;
375
376 i+=2;
377 continue;
378 }
379 pTemp[i3]=pBuf[i];
380 }
381 pTemp[i3]=0;
382 }
383 else{
384 //////////////////////////
385 // •¡”s‚Ƀ^ƒu•¶Žš‚ð’ljÁ
386 //////////////////////////
387
388 if(pBuf[CharRange.cpMax-2]=='\r'&&pBuf[CharRange.cpMax-1]=='\n'){
389 CharRange.cpMax-=2;
390 }
391
392 i2++; //æ“ªs‚̃^ƒu•¶Žš‚à’ljÁ‚̑ΏÛ
393 TextEdit_SetSel(WndNum,CharRange.cpMin,CharRange.cpMax);
394
395 pTemp=(char *)HeapAlloc(hHeap,0,CharRange.cpMax-CharRange.cpMin+1 +i2);
396
397 i=CharRange.cpMin;
398 if(pBuf[i]=='\r'&&pBuf[i+1]=='\n'){
399 i3=0;
400 }
401 else{
402 pTemp[0]='\t';
403 i3=1;
404 }
405 for(;i<CharRange.cpMax;i++,i3++){
406 if(pBuf[i]=='\r'&&pBuf[i+1]=='\n'&&
407 (!(pBuf[i+2]=='\r'&&pBuf[i+3]=='\n'))){
408 pTemp[i3]='\r';
409 pTemp[i3+1]='\n';
410 pTemp[i3+2]='\t';
411 i3+=2;
412
413 i++;
414 continue;
415 }
416 pTemp[i3]=pBuf[i];
417 }
418 pTemp[i3]=0;
419 }
420
421 //ƒŠƒvƒŒƒCƒX
422 TextEdit_ReplaceUpdateUndoData(WndNum,pTemp,0,0);
423 pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
424
425 HeapDefaultFree(pTemp);
426
427 //ƒLƒƒƒŒƒbƒgˆÊ’u‚̐ݒè
428 for(i=CharRange.cpMin+i3;;i++){
429 if(pBuf[i]=='\0') break;
430 if(pBuf[i]=='\r'&&pBuf[i+1]=='\n'){
431 i+=2;
432 break;
433 }
434 }
435 TextEdit_SetSel(WndNum,
436 CharRange.cpMin,
437 i);
438
439 //Ä•`‰æ
440 if(!TextEdit_ScrollCaret(WndNum,0))
441 InvalidateRect(hwnd,NULL,0);
442 ResetCaretPos(WndNum);
443
444 return;
445 }
446 else{
447 temporary[0]='\t';
448 temporary[1]=0;
449 }
450 }
451 else{
452 temporary[0]=nVirtualKey;
453 temporary[1]=0;
454 }
455
456
457 if(ComplementWndInfo.hWnd){
458 //ƒR[ƒh•âŠ®ƒŠƒXƒg•\Ž¦’†‚Ì‚Æ‚«
459 ComplementWndInfo.iLength++;
460 }
461
462
463
464 ///////////////////////
465 // ƒL[“ü—͂̎󂯓ü‚ê
466 ///////////////////////
467
468 TextEdit_ReplaceUpdateUndoData(WndNum,temporary,0,1);
469
470
471
472 ////////////////////////////////////////////
473 // ƒR[ƒh•âŠ®‹@”\Aƒpƒ‰ƒ[ƒ^ƒqƒ“ƒg‚È‚Ç
474 ////////////////////////////////////////////
475
476 if(MdiInfo[WndNum]->DocType==WNDTYPE_BASIC)
477 TextEditEvent_StartAnalysis_Basic(hwnd,WndNum,nVirtualKey);
478 else if(MdiInfo[WndNum]->DocType==WNDTYPE_HTML){
479 TextEditEvent_StartAnalysis_Html(hwnd,WndNum,nVirtualKey);
480 }
481}
482void TextEditEvent_KeyDown(HWND hwnd,int nVirtualKey,int lKeyData){
483 extern COMPLEMENT_WINDOW_INFO ComplementWndInfo;
484 int i,i2;
485 CHARRANGE CharRange;
486 char *pBuf;
487
488 int WndNum;
489 WndNum=GetWndNum(GetParent(hwnd));
490 bool isSelectedBefore = MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x!=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x
491 || MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y!=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y;
492
493 if(nVirtualKey==VK_LEFT||nVirtualKey==VK_UP||nVirtualKey==VK_RIGHT||nVirtualKey==VK_DOWN||nVirtualKey==VK_PRIOR||nVirtualKey==VK_NEXT){
494 if(MdiInfo[WndNum]->IndentStr){
495 //Ž©“®ƒCƒ“ƒfƒ“ƒg’†‚̃Cƒ“ƒfƒ“ƒg‚𖳌ø‚É‚·‚é
496 CancelBeforeAutoIndent(WndNum);
497 if(nVirtualKey==VK_LEFT) return;
498 }
499
500 if(ComplementWndInfo.hWnd){
501 //ƒR[ƒh•âŠ®ƒŠƒXƒg•\Ž¦’†‚Ì‚Æ‚«
502 if(!(nVirtualKey==VK_LEFT||nVirtualKey==VK_RIGHT)){
503 //ƒR[ƒh•âŠ®ƒŠƒXƒg‚ɃtƒH[ƒJƒX‚ð—^‚¦‚é
504 PostMessage(ComplementWndInfo.hList,WM_KEYDOWN,nVirtualKey,lKeyData);
505 return;
506 }
507 }
508
509 switch(nVirtualKey){
510 case VK_LEFT:
511 //ã‰ºƒLƒƒƒŒƒbƒgˆÚ“®Žž‚̍¶‰EˆÊ’u•ÛŽ‹@”\‚ð‰ðœ
512 MdiInfo[WndNum]->pMdiTextEdit->Temp_UpDown_CaretXPos=-1;
513
514 if((MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x&&
515 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)||
516 GetKeyState(VK_SHIFT)&0x8000){
517 //‘I‘𒆂łȂ¢‚Æ‚«A‚Ü‚½‚̓VƒtƒgƒL[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚é‚Æ‚«
518 GetNaturalCaretPos_Left(WndNum);
519 }
520 else{
521 //‘I‘𒆂̂Ƃ«
522 if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y<MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)
523 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
524 else if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y>MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)
525 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos;
526 else{
527 if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x<MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x)
528 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
529 else
530 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos;
531 }
532 }
533 break;
534 case VK_RIGHT:
535 //ã‰ºƒLƒƒƒŒƒbƒgˆÚ“®Žž‚̍¶‰EˆÊ’u•ÛŽ‹@”\‚ð‰ðœ
536 MdiInfo[WndNum]->pMdiTextEdit->Temp_UpDown_CaretXPos=-1;
537
538 if((MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x&&
539 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)||
540 GetKeyState(VK_SHIFT)&0x8000){
541 //‘I‘𒆂łȂ¢‚Æ‚«A‚Ü‚½‚̓VƒtƒgƒL[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚é‚Æ‚«
542 GetNaturalCaretPos_Right(WndNum,
543 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
544 }
545 else{
546 //‘I‘𒆂̂Ƃ«
547 if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y<MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)
548 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos;
549 else if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y>MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)
550 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
551 else{
552 if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x<MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x)
553 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos;
554 else
555 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
556 }
557 }
558 break;
559 case VK_UP:
560 if((GetKeyState(VK_CONTROL)&0x8000)&&
561 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x!=0){
562 //s‚̐擪‚ÖƒLƒƒƒŒƒbƒg‚ðˆÚ“®
563 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x=0;
564
565 //ã‰ºƒLƒƒƒŒƒbƒgˆÚ“®Žž‚̍¶‰EˆÊ’u•ÛŽ‹@”\‚ð‰ðœ
566 MdiInfo[WndNum]->pMdiTextEdit->Temp_UpDown_CaretXPos=-1;
567 }
568 else{
569 if((MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x&&
570 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)||
571 GetKeyState(VK_SHIFT)&0x8000){
572 //‘I‘𒆂łȂ¢‚Æ‚«A‚Ü‚½‚̓VƒtƒgƒL[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚é‚Æ‚«
573 GetNaturalCaretPos_Up(WndNum,
574 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
575 }
576 else{
577 //‘I‘𒆂̂Ƃ«
578 if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y<MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)
579 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
580 else if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y>MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)
581 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos;
582 else{
583 if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x<MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x)
584 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
585 else
586 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos;
587 }
588
589 GetNaturalCaretPos_Up(WndNum,
590 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
591 }
592 }
593 break;
594 case VK_DOWN:
595 i2=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y;
596 if((MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x&&
597 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)||
598 GetKeyState(VK_SHIFT)&0x8000){
599 //‘I‘𒆂łȂ¢‚Æ‚«A‚Ü‚½‚̓VƒtƒgƒL[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚é‚Æ‚«
600 GetNaturalCaretPos_Down(WndNum,
601 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
602 }
603 else{
604 //‘I‘𒆂̂Ƃ«
605 if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y<MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)
606 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos;
607 else if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y>MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.y)
608 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
609 else{
610 if(MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x<MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos.x)
611 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos=MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos;
612 else
613 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
614 }
615
616 GetNaturalCaretPos_Down(WndNum,
617 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
618 }
619
620 if(GetKeyState(VK_CONTROL)&0x8000){
621 if(i2!=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y){
622 //s‚̐擪‚ÖƒLƒƒƒŒƒbƒg‚ðˆÚ“®
623 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x=0;
624 }
625 else{
626 //s‚Ì––’[‚ÖƒLƒƒƒŒƒbƒg‚ðˆÚ“®iI’[s‚̏ꍇj
627 CaretPos_LooseToNatural(WndNum,
628 INT_MAX,
629 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y,
630 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
631 }
632
633 //ã‰ºƒLƒƒƒŒƒbƒgˆÚ“®Žž‚̍¶‰EˆÊ’u•ÛŽ‹@”\‚ð‰ðœ
634 MdiInfo[WndNum]->pMdiTextEdit->Temp_UpDown_CaretXPos=-1;
635 }
636 break;
637 case VK_PRIOR:
638 GetNaturalCaretPos_PageUp(WndNum,
639 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
640 break;
641 case VK_NEXT:
642 GetNaturalCaretPos_PageDown(WndNum,
643 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
644 break;
645 }
646
647 if(!(GetKeyState(VK_SHIFT)&0x8000)){
648 //ƒVƒtƒgƒL[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¢A’ʏ펞
649 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
650 }
651
652 if(nVirtualKey==VK_PRIOR){
653 //ƒy[ƒWƒAƒbƒvƒXƒNƒ[ƒ‹
654 SendMessage(hwnd,WM_VSCROLL,SB_PAGEUP,0);
655 }
656 else if(nVirtualKey==VK_NEXT){
657 //ƒy[ƒWƒ_ƒEƒ“ƒXƒNƒ[ƒ‹
658 SendMessage(hwnd,WM_VSCROLL,SB_PAGEDOWN,0);
659 }
660 else{
661 //‚»‚Ì‘¼AƒXƒNƒ[ƒ‹‚ª•K—v‚ȏꍇ‚ðl—¶
662 TextEdit_ScrollCaret(WndNum,0);
663 ResetCaretPos(WndNum);
664 }
665
666 //•ÒWƒƒjƒ…
667[‚ðƒŠƒZƒbƒg
668 ResetState_EditMenu();
669
670 if(!TextEdit_ScrollCaret(WndNum,0)&&isSelectedBefore){
671 UpdateWindow(hwnd); //‚¿‚ç‚‚«–hŽ~
672 //Ä•`‰æi‘I‘ðŽž‚Ì”½“]•\Ž¦‚ª‰ðœ‚³‚ꂽ‚Æ‚«‚ðl—¶j
673 InvalidateRect(hwnd,NULL,0);
674 }
675 }
676 else if(nVirtualKey==VK_HOME||nVirtualKey==VK_END){
677
678 //ã‰ºƒLƒƒƒŒƒbƒgˆÚ“®Žž‚̍¶‰EˆÊ’u•ÛŽ‹@”\‚ð‰ðœ
679 MdiInfo[WndNum]->pMdiTextEdit->Temp_UpDown_CaretXPos=-1;
680
681 if(GetKeyState(VK_CONTROL)&0x8000){
682 //ƒtƒ@ƒCƒ‹‚̐擪‚Ü‚½‚Í––’[‚ÖƒLƒƒƒŒƒbƒg‚ðˆÚ“®
683 if(nVirtualKey==VK_HOME){
684 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x=0;
685 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y=0;
686 }
687 else if(nVirtualKey==VK_END){
688 //‘¶Ý‚·‚éƒLƒƒƒŒƒbƒgˆÊ’u‚É•ÏŠ·
689 CaretPos_LooseToNatural(WndNum,
690 INT_MAX,
691 INT_MAX,
692 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
693 }
694 }
695 else{
696 //s‚̐擪‚Ü‚½‚Í––’[‚ÖƒLƒƒƒŒƒbƒg‚ðˆÚ“®
697 if(nVirtualKey==VK_HOME) MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x=0;
698 else if(nVirtualKey==VK_END){
699 //‘¶Ý‚·‚éƒLƒƒƒŒƒbƒgˆÊ’u‚É•ÏŠ·
700 CaretPos_LooseToNatural(WndNum,
701 INT_MAX,
702 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y,
703 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
704 }
705 }
706
707 if(!(GetKeyState(VK_SHIFT)&0x8000)){
708 //ƒVƒtƒgƒL[‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¢A’ʏ펞
709 MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos=MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos;
710 }
711
712 if(!TextEdit_ScrollCaret(WndNum,0)&&isSelectedBefore){
713 //Ä•`‰æi‘I‘ðŽž‚Ì”½“]•\Ž¦‚ª‰ðœ‚³‚ꂽ‚Æ‚«‚ðl—¶j
714 InvalidateRect(hwnd,NULL,0);
715 }
716 ResetCaretPos(WndNum);
717
718 //•ÒWƒƒjƒ…
719[‚ðƒŠƒZƒbƒg
720 ResetState_EditMenu();
721 }
722 else if(nVirtualKey==VK_DELETE){
723 ////////////
724 // íœƒL[
725 ////////////
726
727 TextEdit_GetSel(WndNum,&CharRange);
728
729 pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
730
731 //ƒLƒƒƒŒƒbƒg‚ªƒtƒ@ƒCƒ‹‚̏I’[‚É‚ ‚é‚Æ‚«
732 if(CharRange.cpMin==lstrlen(pBuf)) return;
733
734 if(CharRange.cpMin==CharRange.cpMax){
735 if(MdiInfo[WndNum]->IndentStr){
736 //Ž©“®ƒCƒ“ƒfƒ“ƒg‚ð—LŒø‚É‚·‚é
737 char temporary[1024];
738 lstrcpy(temporary,MdiInfo[WndNum]->IndentStr);
739
740 CancelBeforeAutoIndent(WndNum);
741 TextEdit_ReplaceUpdateUndoData(WndNum,temporary,0,1);
742 }
743
744 if(pBuf[CharRange.cpMin]=='\r'&&pBuf[CharRange.cpMin+1]=='\n'||
745 IsDBCSLeadByte(pBuf[CharRange.cpMin])){
746 CharRange.cpMax+=2;
747 }
748 else CharRange.cpMax++;
749
750 GetCaretPosFromBufferIndex(
751 MdiInfo[WndNum]->pMdiTextEdit->buffer,
752 CharRange.cpMax,
753 &MdiInfo[WndNum]->pMdiTextEdit->EndCaretPos);
754 }
755
756 TextEdit_ReplaceUpdateUndoData(WndNum,"",0,1);
757 }
758 else if(nVirtualKey==VK_BACK){
759 /////////////////
760 // BackSpaceƒL[
761 /////////////////
762
763 if(MdiInfo[WndNum]->IndentStr){
764 //Ž©“®ƒCƒ“ƒfƒ“ƒg’†‚̃Cƒ“ƒfƒ“ƒg‚̏ꍇAƒCƒ“ƒfƒ“ƒg‚Ì1•¶Žš‚ðíœ‚·‚é
765 if(lstrlen(MdiInfo[WndNum]->IndentStr)==1){
766 //1•¶Žš‚µ‚©Žc‚Á‚Ä‚¢‚È‚¢ê‡‚ÍŽ©“®ƒCƒ“ƒfƒ“ƒg‚»‚Ì‚à‚Ì‚ðÁ‹Ž‚·‚é
767 CancelBeforeAutoIndent(WndNum);
768 }
769 else{
770 MdiInfo[WndNum]->IndentStr[lstrlen(MdiInfo[WndNum]->IndentStr)-1]=0;
771
772 i=GetBufferIndexFromCaretPos(
773 MdiInfo[WndNum]->pMdiTextEdit->buffer,
774 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x,
775 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y);
776 GetCaretPosFromBufferIndex(
777 MdiInfo[WndNum]->pMdiTextEdit->buffer,
778 i-1,
779 &MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos);
780 TextEdit_Replace(WndNum,"",1);
781 }
782 return;
783 }
784
785 TextEdit_GetSel(WndNum,&CharRange);
786
787 if(CharRange.cpMax==0) return;
788 if(CharRange.cpMin==CharRange.cpMax){
789 if(ComplementWndInfo.hWnd){
790 //ƒR[ƒh•âŠ®ƒŠƒXƒg•\Ž¦’†‚Ì‚Æ‚«
791 ComplementWndInfo.iLength--;
792 }
793
794 SendMessage(hwnd,WM_KEYDOWN,VK_LEFT,0);
795 }
796 SendMessage(hwnd,WM_KEYDOWN,VK_DELETE,0);
797 }
798}
799
800
801
802void TextEditEvent_StartAnalysis_Basic(HWND hwnd,int WndNum,int nVirtualKey){
803 extern COMPLEMENT_WINDOW_INFO ComplementWndInfo;
804 int i,i2,i3;
805 CHARRANGE CharRange;
806 char temporary[1024];
807
808 char *pBuf;
809 pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
810
811
812 ////////////////////
813 // ƒpƒ‰ƒ[ƒ^ƒqƒ“ƒg
814 ////////////////////
815
816 extern METHODCHECKINFO MethodCheckInfo;
817 if(pobj_nv->dwParameterHint&&
818 (!ComplementWndInfo.hWnd)&&
819 (MethodCheckInfo.hWnd||nVirtualKey==' '||nVirtualKey=='\"'||nVirtualKey=='(')){
820 //’¼‘O‚É“ü—Í‚³‚ꂽ•¶Žš‚ð•\Ž¦
821 UpdateWindow(hwnd);
822
823 //ƒpƒ‰ƒ[ƒ^ƒqƒ“ƒg‚ð•\Ž¦
824 ShowParameterHint(WndNum);
825 }
826
827
828 ///////////////////////////////
829 // ƒyƒAƒXƒe[ƒgƒƒ“ƒg•âŠ®
830 ///////////////////////////////
831
832 if(
833 pobj_nv->BackNum_PairStatementComplement&&
834 (nVirtualKey=='c'||nVirtualKey=='C'|| //CaseACatch
835 nVirtualKey=='e'||nVirtualKey=='E'|| //End `
836 nVirtualKey=='f'||nVirtualKey=='F'|| //Finally
837 nVirtualKey=='l'||nVirtualKey=='L'|| //Loop
838 nVirtualKey=='n'||nVirtualKey=='N'|| //Next
839 nVirtualKey=='p'||nVirtualKey=='P'|| //PrivateAProtectedAPublic
840 nVirtualKey=='w'||nVirtualKey=='W') //Wend
841 ){
842
843 i=GetBufferIndexFromCaretPos(pBuf,
844 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x,
845 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y);
846
847 i2=i-2;
848 while(pBuf[i2]==' '||pBuf[i2]=='\t') i2--;
849 if(IsCommandBackDelimitation(pBuf,i2)){
850 if(GetEndPairCommandInfo(pBuf,i-1)){
851
852 //“ü—Í‚³‚ꂽ“ª•¶Žš‚ƈê’v‚·‚é‚©‚Ç‚¤‚©‚ðŒŸØ
853 for(i3=0;i3<ComplementWndInfo.MemberNum;i3++){
854 if((char)CharUpper((LPSTR)(char)nVirtualKey)==
855 (char)CharUpper((LPSTR)ComplementWndInfo.pMemberInfo[i3].pName[0])) break;
856 }
857 if(i3==ComplementWndInfo.MemberNum){
858 DeleteComplementInfo();
859 return;
860 }
861
862 ComplementWndInfo.iLength=1;
863 CodeComplement(WndNum,i-1);
864
865 //‰Šú“ü—ÍŽž‚ɕ⊮ƒŠƒXƒg‚Ì‘I‘ð‚ð‚³‚¹‚邽‚ß
866 ResetCaretPos(WndNum);
867 }
868 }
869 }
870
871
872 //////////////////
873 // ƒR[ƒh•âŠ®‹@”\
874 //////////////////
875
876 if(nVirtualKey=='.'&&pobj_nv->bShowComplementWnd){
877 TextEdit_GetSel(WndNum,&CharRange);
878
879Complement:
880 i2=CharRange.cpMin-1;
881
882 i3=TextEdit_GetLineIndex(WndNum,i2);
883 int IsStr;
884 for(IsStr=0;i3<i2;i3++){
885 if(IsDBCSLeadByte(pBuf[i3])){
886 i3++;
887 continue;
888 }
889 if(pBuf[i3]=='\r'&&pBuf[i3+1]=='\n') break;
890 if(pBuf[i3]=='\''){
891 //’Žß•¶‚Ì‚Æ‚«
892 return;
893 }
894 if(pBuf[i3]=='\"') IsStr^=1;
895 }
896 if(IsStr){
897 //•¶Žš—ñ“à‚Ì‚Æ‚«
898 return;
899 }
900
901 for(i=i2;i>0;i--){
902 if(pBuf[i-1]=='-'&&pBuf[i]=='>')i-=2;
903 if(pBuf[i]==']'){
904 for(i3=1,i--;i>0;i--){
905 if(pBuf[i]==']') i3++;
906 if(pBuf[i]=='['){
907 i3--;
908 if(i3==0) break;
909 }
910 }
911 if(pBuf[i]=='[') continue;
912 break;
913 }
914 if(pBuf[i]==')'){
915 for(i3=1,i--;i>0;i--){
916 if(pBuf[i]==')') i3++;
917 if(pBuf[i]=='('){
918 i3--;
919 if(i3==0) break;
920 }
921 }
922 if(pBuf[i]=='(') continue;
923 break;
924 }
925 if(!(IsVariableChar(pBuf[i])||pBuf[i]=='.')){
926 i++;
927 break;
928 }
929 }
930
931 if((nVirtualKey=='.'&&i2-i==0)||
932 nVirtualKey=='>'&&i2-i==1){
933 //ƒIƒuƒWƒFƒNƒgŽ¯•ÊŽq‚ª‚È‚¢‚Æ‚«AWith‚ðŒŸõ
934 GetWithObjectVariable(pBuf,i2,temporary);
935
936 if(nVirtualKey=='.') lstrcat(temporary,".");
937 else lstrcat(temporary,"->");
938 }
939 else{
940 //ƒIƒuƒWƒFƒNƒgŽ¯•ÊŽq‚ðtemporary‚ɃRƒs[
941
942 //ƒAƒNƒZƒXˆá”½‚ð–h‚®‚½‚߁AVN_SIZEˆÈã‚ÌŽQÆƒf[ƒ^‚ւ̕⊮‚͍s‚í‚È‚¢
943 if(i2-i>VN_SIZE) return;
944
945 if(pBuf[i]=='.'){
946 GetWithObjectVariable(pBuf,i2,temporary);
947 }
948 else if(pBuf[i]=='-'&&pBuf[i+1]=='>'){
949 GetWithObjectVariable(pBuf,i2,temporary);
950 }
951 else temporary[0]=0;
952
953 i3=lstrlen(temporary);
954 memcpy(temporary+i3,pBuf+i,i2-i+1);
955 temporary[i3+i2-i+1]=0;
956 }
957
958 if(temporary[0]){
959 //ƒIƒuƒWƒFƒNƒgŽ¯•ÊŽq‚ðŒŸo‚µ‚½ê‡
960 if(GetComplementInfo(temporary,pBuf,i2)){
961 ComplementWndInfo.iLength=0;
962 CodeComplement(WndNum,i2+1);
963 }
964 }
965 }
966 else if(nVirtualKey=='>'&&pobj_nv->bShowComplementWnd){
967 TextEdit_GetSel(WndNum,&CharRange);
968 if(pBuf[CharRange.cpMin-2]=='-'){
969 goto Complement;
970 }
971 }
972}
973void TextEditEvent_StartAnalysis_Html(HWND hwnd,int WndNum,int nVirtualKey){
974 //////////////////////////
975 // HTML‚̃R[ƒh•âŠ®
976 //////////////////////////
977
978 extern COMPLEMENT_WINDOW_INFO ComplementWndInfo;
979 int i;
980
981 char *pBuf;
982 pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer;
983
984
985
986 ///////////////////////////////
987 // ƒR[ƒh•âŠ®
988 ///////////////////////////////
989
990 if(nVirtualKey==' '){
991
992 i=GetBufferIndexFromCaretPos(pBuf,
993 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.x,
994 MdiInfo[WndNum]->pMdiTextEdit->StartCaretPos.y);
995
996 if(GetNowTagInfo(pBuf,i-1)){
997 ComplementWndInfo.iLength=0;
998 CodeComplement(WndNum,i);
999
1000 //‰Šú“ü—ÍŽž‚ɕ⊮ƒŠƒXƒg‚Ì‘I‘ð‚ð‚³‚¹‚邽‚ß
1001 ResetCaretPos(WndNum);
1002 }
1003 }
1004}
Note: See TracBrowser for help on using the repository browser.