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;