Mercurial > vim
comparison src/fold.c @ 41:f529edb9bab3 v7.0025
updated for version 7.0025
author | vimboss |
---|---|
date | Mon, 27 Dec 2004 21:59:20 +0000 |
parents | 410fa1a31baf |
children | e474bae3795f |
comparison
equal
deleted
inserted
replaced
40:f1d2a58883b9 | 41:f529edb9bab3 |
---|---|
687 if (end_rel < fp[cont - 1].fd_top + fp[cont - 1].fd_len - 1) | 687 if (end_rel < fp[cont - 1].fd_top + fp[cont - 1].fd_len - 1) |
688 end_rel = fp[cont - 1].fd_top + fp[cont - 1].fd_len - 1; | 688 end_rel = fp[cont - 1].fd_top + fp[cont - 1].fd_len - 1; |
689 /* Move contained folds to inside new fold. */ | 689 /* Move contained folds to inside new fold. */ |
690 mch_memmove(fold_ga.ga_data, fp, sizeof(fold_T) * cont); | 690 mch_memmove(fold_ga.ga_data, fp, sizeof(fold_T) * cont); |
691 fold_ga.ga_len += cont; | 691 fold_ga.ga_len += cont; |
692 fold_ga.ga_room -= cont; | |
693 i += cont; | 692 i += cont; |
694 | 693 |
695 /* Adjust line numbers in contained folds to be relative to the | 694 /* Adjust line numbers in contained folds to be relative to the |
696 * new fold. */ | 695 * new fold. */ |
697 for (j = 0; j < cont; ++j) | 696 for (j = 0; j < cont; ++j) |
700 /* Move remaining entries to after the new fold. */ | 699 /* Move remaining entries to after the new fold. */ |
701 if (i < gap->ga_len) | 700 if (i < gap->ga_len) |
702 mch_memmove(fp + 1, (fold_T *)gap->ga_data + i, | 701 mch_memmove(fp + 1, (fold_T *)gap->ga_data + i, |
703 sizeof(fold_T) * (gap->ga_len - i)); | 702 sizeof(fold_T) * (gap->ga_len - i)); |
704 gap->ga_len = gap->ga_len + 1 - cont; | 703 gap->ga_len = gap->ga_len + 1 - cont; |
705 gap->ga_room = gap->ga_room - 1 + cont; | |
706 | 704 |
707 /* insert new fold */ | 705 /* insert new fold */ |
708 fp->fd_nested = fold_ga; | 706 fp->fd_nested = fold_ga; |
709 fp->fd_top = start_rel; | 707 fp->fd_top = start_rel; |
710 fp->fd_len = end_rel - start_rel + 1; | 708 fp->fd_len = end_rel - start_rel + 1; |
1134 to_p->fd_len = from_p->fd_len; | 1132 to_p->fd_len = from_p->fd_len; |
1135 to_p->fd_flags = from_p->fd_flags; | 1133 to_p->fd_flags = from_p->fd_flags; |
1136 to_p->fd_small = from_p->fd_small; | 1134 to_p->fd_small = from_p->fd_small; |
1137 cloneFoldGrowArray(&from_p->fd_nested, &to_p->fd_nested); | 1135 cloneFoldGrowArray(&from_p->fd_nested, &to_p->fd_nested); |
1138 ++to->ga_len; | 1136 ++to->ga_len; |
1139 --to->ga_room; | |
1140 ++from_p; | 1137 ++from_p; |
1141 ++to_p; | 1138 ++to_p; |
1142 } | 1139 } |
1143 } | 1140 } |
1144 | 1141 |
1453 if (recursive || fp->fd_nested.ga_len == 0) | 1450 if (recursive || fp->fd_nested.ga_len == 0) |
1454 { | 1451 { |
1455 /* recursively delete the contained folds */ | 1452 /* recursively delete the contained folds */ |
1456 deleteFoldRecurse(&fp->fd_nested); | 1453 deleteFoldRecurse(&fp->fd_nested); |
1457 --gap->ga_len; | 1454 --gap->ga_len; |
1458 ++gap->ga_room; | |
1459 if (idx < gap->ga_len) | 1455 if (idx < gap->ga_len) |
1460 mch_memmove(fp, fp + 1, sizeof(fold_T) * (gap->ga_len - idx)); | 1456 mch_memmove(fp, fp + 1, sizeof(fold_T) * (gap->ga_len - idx)); |
1461 } | 1457 } |
1462 else | 1458 else |
1463 { | 1459 { |
1483 sizeof(fold_T) * (gap->ga_len - idx)); | 1479 sizeof(fold_T) * (gap->ga_len - idx)); |
1484 /* move the contained folds one level up */ | 1480 /* move the contained folds one level up */ |
1485 mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved)); | 1481 mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved)); |
1486 vim_free(nfp); | 1482 vim_free(nfp); |
1487 gap->ga_len += moved - 1; | 1483 gap->ga_len += moved - 1; |
1488 gap->ga_room -= moved - 1; | |
1489 } | 1484 } |
1490 } | 1485 } |
1491 } | 1486 } |
1492 | 1487 |
1493 /* deleteFoldRecurse() {{{2 */ | 1488 /* deleteFoldRecurse() {{{2 */ |
2760 return FAIL; | 2755 return FAIL; |
2761 fp = (fold_T *)gap->ga_data + i; | 2756 fp = (fold_T *)gap->ga_data + i; |
2762 if (i < gap->ga_len) | 2757 if (i < gap->ga_len) |
2763 mch_memmove(fp + 1, fp, sizeof(fold_T) * (gap->ga_len - i)); | 2758 mch_memmove(fp + 1, fp, sizeof(fold_T) * (gap->ga_len - i)); |
2764 ++gap->ga_len; | 2759 ++gap->ga_len; |
2765 --gap->ga_room; | |
2766 ga_init2(&fp->fd_nested, (int)sizeof(fold_T), 10); | 2760 ga_init2(&fp->fd_nested, (int)sizeof(fold_T), 10); |
2767 return OK; | 2761 return OK; |
2768 } | 2762 } |
2769 | 2763 |
2770 /* foldSplit() {{{2 */ | 2764 /* foldSplit() {{{2 */ |
2810 ((fold_T *)gap2->ga_data)[idx] = fp2[idx]; | 2804 ((fold_T *)gap2->ga_data)[idx] = fp2[idx]; |
2811 ((fold_T *)gap2->ga_data)[idx].fd_top | 2805 ((fold_T *)gap2->ga_data)[idx].fd_top |
2812 -= fp[1].fd_top - fp->fd_top; | 2806 -= fp[1].fd_top - fp->fd_top; |
2813 } | 2807 } |
2814 gap2->ga_len = len; | 2808 gap2->ga_len = len; |
2815 gap2->ga_room -= len; | |
2816 gap1->ga_len -= len; | 2809 gap1->ga_len -= len; |
2817 gap1->ga_room += len; | |
2818 } | 2810 } |
2819 fp->fd_len = top - fp->fd_top; | 2811 fp->fd_len = top - fp->fd_top; |
2820 fold_changed = TRUE; | 2812 fold_changed = TRUE; |
2821 } | 2813 } |
2822 | 2814 |
2929 { | 2921 { |
2930 ((fold_T *)gap1->ga_data)[gap1->ga_len] | 2922 ((fold_T *)gap1->ga_data)[gap1->ga_len] |
2931 = ((fold_T *)gap2->ga_data)[idx]; | 2923 = ((fold_T *)gap2->ga_data)[idx]; |
2932 ((fold_T *)gap1->ga_data)[gap1->ga_len].fd_top += fp1->fd_len; | 2924 ((fold_T *)gap1->ga_data)[gap1->ga_len].fd_top += fp1->fd_len; |
2933 ++gap1->ga_len; | 2925 ++gap1->ga_len; |
2934 --gap1->ga_room; | |
2935 } | 2926 } |
2936 gap2->ga_len = 0; | 2927 gap2->ga_len = 0; |
2937 /* fp2->fd_nested.ga_room isn't updated, we delete it below */ | |
2938 } | 2928 } |
2939 | 2929 |
2940 fp1->fd_len += fp2->fd_len; | 2930 fp1->fd_len += fp2->fd_len; |
2941 deleteFoldEntry(gap, (int)(fp2 - (fold_T *)gap->ga_data), TRUE); | 2931 deleteFoldEntry(gap, (int)(fp2 - (fold_T *)gap->ga_data), TRUE); |
2942 fold_changed = TRUE; | 2932 fold_changed = TRUE; |