comparison src/ex_getln.c @ 230:9281a51ca7a2

updated for version 7.0064
author vimboss
date Fri, 25 Mar 2005 21:53:48 +0000
parents 49748afd794b
children 006e9c8a6a8a
comparison
equal deleted inserted replaced
229:723a01584c3e 230:9281a51ca7a2
324 * typed by the user directly, not when the result of a 324 * typed by the user directly, not when the result of a
325 * mapping. */ 325 * mapping. */
326 switch (c) 326 switch (c)
327 { 327 {
328 case K_RIGHT: c = K_LEFT; break; 328 case K_RIGHT: c = K_LEFT; break;
329 case K_XRIGHT: c = K_XLEFT; break;
330 case K_S_RIGHT: c = K_S_LEFT; break; 329 case K_S_RIGHT: c = K_S_LEFT; break;
331 case K_C_RIGHT: c = K_C_LEFT; break; 330 case K_C_RIGHT: c = K_C_LEFT; break;
332 case K_LEFT: c = K_RIGHT; break; 331 case K_LEFT: c = K_RIGHT; break;
333 case K_XLEFT: c = K_XRIGHT; break;
334 case K_S_LEFT: c = K_S_RIGHT; break; 332 case K_S_LEFT: c = K_S_RIGHT; break;
335 case K_C_LEFT: c = K_C_RIGHT; break; 333 case K_C_LEFT: c = K_C_RIGHT; break;
336 } 334 }
337 } 335 }
338 #endif 336 #endif
361 #ifdef FEAT_CMDHIST 359 #ifdef FEAT_CMDHIST
362 /* free old command line when finished moving around in the history 360 /* free old command line when finished moving around in the history
363 * list */ 361 * list */
364 if (lookfor != NULL 362 if (lookfor != NULL
365 && c != K_S_DOWN && c != K_S_UP 363 && c != K_S_DOWN && c != K_S_UP
366 && c != K_DOWN && c != K_UP && c != K_XDOWN && c != K_XUP 364 && c != K_DOWN && c != K_UP
367 && c != K_PAGEDOWN && c != K_PAGEUP 365 && c != K_PAGEDOWN && c != K_PAGEUP
368 && c != K_KPAGEDOWN && c != K_KPAGEUP 366 && c != K_KPAGEDOWN && c != K_KPAGEUP
369 && c != K_LEFT && c != K_RIGHT && c != K_XLEFT && c != K_XRIGHT 367 && c != K_LEFT && c != K_RIGHT
370 && (xpc.xp_numfiles > 0 || (c != Ctrl_P && c != Ctrl_N))) 368 && (xpc.xp_numfiles > 0 || (c != Ctrl_P && c != Ctrl_N)))
371 { 369 {
372 vim_free(lookfor); 370 vim_free(lookfor);
373 lookfor = NULL; 371 lookfor = NULL;
374 } 372 }
382 380
383 #ifdef FEAT_WILDMENU 381 #ifdef FEAT_WILDMENU
384 /* Special translations for 'wildmenu' */ 382 /* Special translations for 'wildmenu' */
385 if (did_wild_list && p_wmnu) 383 if (did_wild_list && p_wmnu)
386 { 384 {
387 if (c == K_LEFT || c == K_XLEFT) 385 if (c == K_LEFT)
388 c = Ctrl_P; 386 c = Ctrl_P;
389 else if (c == K_RIGHT || c == K_XRIGHT) 387 else if (c == K_RIGHT)
390 c = Ctrl_N; 388 c = Ctrl_N;
391 } 389 }
392 /* Hitting CR after "emenu Name.": complete submenu */ 390 /* Hitting CR after "emenu Name.": complete submenu */
393 if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu 391 if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu
394 && ccline.cmdpos > 1 392 && ccline.cmdpos > 1
405 && c != Ctrl_L) 403 && c != Ctrl_L)
406 { 404 {
407 (void)ExpandOne(&xpc, NULL, NULL, 0, WILD_FREE); 405 (void)ExpandOne(&xpc, NULL, NULL, 0, WILD_FREE);
408 did_wild_list = FALSE; 406 did_wild_list = FALSE;
409 #ifdef FEAT_WILDMENU 407 #ifdef FEAT_WILDMENU
410 if (!p_wmnu || (c != K_UP && c != K_DOWN 408 if (!p_wmnu || (c != K_UP && c != K_DOWN))
411 && c != K_XUP && c != K_XDOWN))
412 #endif 409 #endif
413 xpc.xp_context = EXPAND_NOTHING; 410 xpc.xp_context = EXPAND_NOTHING;
414 wim_index = 0; 411 wim_index = 0;
415 #ifdef FEAT_WILDMENU 412 #ifdef FEAT_WILDMENU
416 if (p_wmnu && wild_menu_showing != 0) 413 if (p_wmnu && wild_menu_showing != 0)
453 #ifdef FEAT_WILDMENU 450 #ifdef FEAT_WILDMENU
454 /* Special translations for 'wildmenu' */ 451 /* Special translations for 'wildmenu' */
455 if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu) 452 if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu)
456 { 453 {
457 /* Hitting <Down> after "emenu Name.": complete submenu */ 454 /* Hitting <Down> after "emenu Name.": complete submenu */
458 if (ccline.cmdbuff[ccline.cmdpos - 1] == '.' 455 if (ccline.cmdbuff[ccline.cmdpos - 1] == '.' && c == K_DOWN)
459 && (c == K_DOWN || c == K_XDOWN))
460 c = p_wc; 456 c = p_wc;
461 else if (c == K_UP || c == K_XUP) 457 else if (c == K_UP)
462 { 458 {
463 /* Hitting <Up>: Remove one submenu name in front of the 459 /* Hitting <Up>: Remove one submenu name in front of the
464 * cursor */ 460 * cursor */
465 int found = FALSE; 461 int found = FALSE;
466 462
503 upseg[2] = '.'; 499 upseg[2] = '.';
504 upseg[3] = PATHSEP; 500 upseg[3] = PATHSEP;
505 upseg[4] = NUL; 501 upseg[4] = NUL;
506 502
507 if (ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP 503 if (ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP
508 && (c == K_DOWN || c == K_XDOWN) 504 && c == K_DOWN
509 && (ccline.cmdbuff[ccline.cmdpos - 2] != '.' 505 && (ccline.cmdbuff[ccline.cmdpos - 2] != '.'
510 || ccline.cmdbuff[ccline.cmdpos - 3] != '.')) 506 || ccline.cmdbuff[ccline.cmdpos - 3] != '.'))
511 { 507 {
512 /* go down a directory */ 508 /* go down a directory */
513 c = p_wc; 509 c = p_wc;
514 } 510 }
515 else if (STRNCMP(xpc.xp_pattern, upseg + 1, 3) == 0 511 else if (STRNCMP(xpc.xp_pattern, upseg + 1, 3) == 0 && c == K_DOWN)
516 && (c == K_DOWN || c == K_XDOWN))
517 { 512 {
518 /* If in a direct ancestor, strip off one ../ to go down */ 513 /* If in a direct ancestor, strip off one ../ to go down */
519 int found = FALSE; 514 int found = FALSE;
520 515
521 j = ccline.cmdpos; 516 j = ccline.cmdpos;
539 { 534 {
540 cmdline_del(j - 2); 535 cmdline_del(j - 2);
541 c = p_wc; 536 c = p_wc;
542 } 537 }
543 } 538 }
544 else if (c == K_UP || c == K_XUP) 539 else if (c == K_UP)
545 { 540 {
546 /* go up a directory */ 541 /* go up a directory */
547 int found = FALSE; 542 int found = FALSE;
548 543
549 j = ccline.cmdpos - 1; 544 j = ccline.cmdpos - 1;
1105 1100
1106 redrawcmd(); 1101 redrawcmd();
1107 continue; /* don't do incremental search now */ 1102 continue; /* don't do incremental search now */
1108 1103
1109 case K_RIGHT: 1104 case K_RIGHT:
1110 case K_XRIGHT:
1111 case K_S_RIGHT: 1105 case K_S_RIGHT:
1112 case K_C_RIGHT: 1106 case K_C_RIGHT:
1113 do 1107 do
1114 { 1108 {
1115 if (ccline.cmdpos >= ccline.cmdlen) 1109 if (ccline.cmdpos >= ccline.cmdlen)
1134 set_cmdspos_cursor(); 1128 set_cmdspos_cursor();
1135 #endif 1129 #endif
1136 goto cmdline_not_changed; 1130 goto cmdline_not_changed;
1137 1131
1138 case K_LEFT: 1132 case K_LEFT:
1139 case K_XLEFT:
1140 case K_S_LEFT: 1133 case K_S_LEFT:
1141 case K_C_LEFT: 1134 case K_C_LEFT:
1142 do 1135 do
1143 { 1136 {
1144 if (ccline.cmdpos == 0) 1137 if (ccline.cmdpos == 0)
1294 goto cmdline_not_changed; 1287 goto cmdline_not_changed;
1295 1288
1296 case Ctrl_B: /* begin of command line */ 1289 case Ctrl_B: /* begin of command line */
1297 case K_HOME: 1290 case K_HOME:
1298 case K_KHOME: 1291 case K_KHOME:
1299 case K_XHOME:
1300 case K_S_HOME: 1292 case K_S_HOME:
1301 case K_C_HOME: 1293 case K_C_HOME:
1302 ccline.cmdpos = 0; 1294 ccline.cmdpos = 0;
1303 set_cmdspos(); 1295 set_cmdspos();
1304 goto cmdline_not_changed; 1296 goto cmdline_not_changed;
1305 1297
1306 case Ctrl_E: /* end of command line */ 1298 case Ctrl_E: /* end of command line */
1307 case K_END: 1299 case K_END:
1308 case K_KEND: 1300 case K_KEND:
1309 case K_XEND:
1310 case K_S_END: 1301 case K_S_END:
1311 case K_C_END: 1302 case K_C_END:
1312 ccline.cmdpos = ccline.cmdlen; 1303 ccline.cmdpos = ccline.cmdlen;
1313 set_cmdspos_cursor(); 1304 set_cmdspos_cursor();
1314 goto cmdline_not_changed; 1305 goto cmdline_not_changed;
1333 goto cmdline_changed; 1324 goto cmdline_changed;
1334 } 1325 }
1335 1326
1336 #ifdef FEAT_CMDHIST 1327 #ifdef FEAT_CMDHIST
1337 case K_UP: 1328 case K_UP:
1338 case K_XUP:
1339 case K_DOWN: 1329 case K_DOWN:
1340 case K_XDOWN:
1341 case K_S_UP: 1330 case K_S_UP:
1342 case K_S_DOWN: 1331 case K_S_DOWN:
1343 case K_PAGEUP: 1332 case K_PAGEUP:
1344 case K_KPAGEUP: 1333 case K_KPAGEUP:
1345 case K_PAGEDOWN: 1334 case K_PAGEDOWN:
1359 1348
1360 j = (int)STRLEN(lookfor); 1349 j = (int)STRLEN(lookfor);
1361 for (;;) 1350 for (;;)
1362 { 1351 {
1363 /* one step backwards */ 1352 /* one step backwards */
1364 if (c == K_UP || c == K_XUP || c == K_S_UP || c == Ctrl_P 1353 if (c == K_UP|| c == K_S_UP || c == Ctrl_P
1365 || c == K_PAGEUP || c == K_KPAGEUP) 1354 || c == K_PAGEUP || c == K_KPAGEUP)
1366 { 1355 {
1367 if (hiscnt == hislen) /* first time */ 1356 if (hiscnt == hislen) /* first time */
1368 hiscnt = hisidx[histype]; 1357 hiscnt = hisidx[histype];
1369 else if (hiscnt == 0 && hisidx[histype] != hislen - 1) 1358 else if (hiscnt == 0 && hisidx[histype] != hislen - 1)
1396 if (hiscnt < 0 || history[histype][hiscnt].hisstr == NULL) 1385 if (hiscnt < 0 || history[histype][hiscnt].hisstr == NULL)
1397 { 1386 {
1398 hiscnt = i; 1387 hiscnt = i;
1399 break; 1388 break;
1400 } 1389 }
1401 if ((c != K_UP && c != K_DOWN && c != K_XUP && c != K_XDOWN) 1390 if ((c != K_UP && c != K_DOWN)
1402 || hiscnt == i 1391 || hiscnt == i
1403 || STRNCMP(history[histype][hiscnt].hisstr, 1392 || STRNCMP(history[histype][hiscnt].hisstr,
1404 lookfor, (size_t)j) == 0) 1393 lookfor, (size_t)j) == 0)
1405 break; 1394 break;
1406 } 1395 }