994
|
1 /* move.c */
|
|
2 #include <stdio.h>
|
|
3 #include "tools.h"
|
|
4 #include "ed.h"
|
|
5
|
|
6 int move(num)
|
|
7 int num;
|
|
8 {
|
|
9 LINE *k0, *k1, *k2, *k3;
|
|
10
|
|
11 if (line1 <= 0 || line2 < line1 || (line1 <= num && num <= line2))
|
|
12 return(ERR);
|
|
13 k0 = getptr(prevln(line1));
|
|
14 k1 = getptr(line1);
|
|
15 k2 = getptr(line2);
|
|
16 k3 = getptr(nextln(line2));
|
|
17
|
|
18 relink(k0, k3, k0, k3);
|
|
19 lastln -= line2 - line1 + 1;
|
|
20
|
|
21 if (num > line1) num -= line2 - line1 + 1;
|
|
22
|
|
23 curln = num + (line2 - line1 + 1);
|
|
24
|
|
25 k0 = getptr(num);
|
|
26 k3 = getptr(nextln(num));
|
|
27
|
|
28 relink(k0, k1, k2, k3);
|
|
29 relink(k2, k3, k0, k1);
|
|
30 lastln += line2 - line1 + 1;
|
|
31
|
|
32 return(1);
|
|
33 }
|
|
34
|
|
35 int transfer(num)
|
|
36 int num;
|
|
37 {
|
|
38 int mid, lin, ntrans;
|
|
39
|
|
40 if (line1 <= 0 || line1 > line2) return(ERR);
|
|
41
|
|
42 mid = num < line2 ? num : line2;
|
|
43
|
|
44 curln = num;
|
|
45 ntrans = 0;
|
|
46
|
|
47 for (lin = line1; lin <= mid; lin++) {
|
|
48 ins(gettxt(lin));
|
|
49 ntrans++;
|
|
50 }
|
|
51 lin += ntrans;
|
|
52 line2 += ntrans;
|
|
53
|
|
54 for (; lin <= line2; lin += 2) {
|
|
55 ins(gettxt(lin));
|
|
56 line2++;
|
|
57 }
|
|
58 return(1);
|
|
59 }
|
|
60
|