Commit | Line | Data |
---|---|---|
87f787ee BJ |
1 | #include "ex.h" |
2 | /* | |
3 | * Ex - a text editor | |
4 | * Bill Joy UCB June 1977 | |
5 | */ | |
6 | ||
7 | delete() | |
8 | { | |
9 | ||
10 | nonzero(); | |
11 | change(); | |
12 | if (!inglobal && !inopen) | |
13 | deletem(); | |
14 | else | |
15 | deleted(); | |
16 | killed(); | |
17 | } | |
18 | ||
19 | deleted() | |
20 | { | |
21 | register int *a1, *a2, *a3; | |
22 | ||
23 | a1 = addr1; | |
24 | a2 = addr2 + 1; | |
25 | a3 = unddol; | |
26 | unddol =- a2 - a1; | |
27 | undap2 =- a2 - a1; | |
28 | dol =- a2 - a1; | |
29 | do | |
30 | *a1++ = *a2++; | |
31 | while (a2 <= a3); | |
32 | a1 = addr1; | |
33 | if (a1 > dol) | |
34 | a1 = dol; | |
35 | dot = a1; | |
36 | } | |
37 | ||
38 | deletem() | |
39 | { | |
40 | register int *a1, *a2, ra; | |
41 | int dsavint; | |
42 | ||
43 | dsavint = signal(INTR, 1); | |
44 | undkind = UNDCHANGE; | |
45 | a1 = addr1; | |
46 | unddol = dol; | |
47 | a2 = addr2; | |
48 | if (a2++ != dol) { | |
49 | reverse(a1, a2); | |
50 | reverse(a2, dol + 1); | |
51 | reverse(a1, dol + 1); | |
52 | } | |
53 | dol =- a2 - a1; | |
54 | unddel = a1 - 1; | |
55 | if (a1 > dol) | |
56 | a1 = dol; | |
57 | dot = a1; | |
58 | signal(INTR, dsavint); | |
59 | } | |
60 | ||
61 | deletenone() | |
62 | { | |
63 | if (!inglobal) { | |
64 | undkind = UNDCHANGE; | |
65 | unddol = dol; | |
66 | unddel = addr1; | |
67 | } | |
68 | } |