home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume41 / vim / part04 < prev    next >
Encoding:
Text File  |  1993-12-20  |  57.3 KB  |  1,843 lines

  1. Newsgroups: comp.sources.misc
  2. From: mool@oce.nl (Bram Moolenaar)
  3. Subject: v41i054:  vim - Vi IMitation editor, v2.0, Part04/25
  4. Message-ID: <1993Dec21.034400.27149@sparky.sterling.com>
  5. X-Md4-Signature: f25c4b36c5c6debf267a08a9becebd55
  6. Keywords: utility, editor, vi, vim
  7. Sender: kent@sparky.sterling.com (Kent Landfield)
  8. Organization: Sterling Software
  9. Date: Tue, 21 Dec 1993 03:44:00 GMT
  10. Approved: kent@sparky.sterling.com
  11.  
  12. Submitted-by: mool@oce.nl (Bram Moolenaar)
  13. Posting-number: Volume 41, Issue 54
  14. Archive-name: vim/part04
  15. Environment: UNIX, AMIGA, MS-DOS
  16. Supersedes: vim: Volume 37, Issue 1-24
  17.  
  18. #! /bin/sh
  19. # This is a shell archive.  Remove anything before this line, then unpack
  20. # it by saving it into a file and typing "sh file".  To overwrite existing
  21. # files, type "sh file -c".  You can also feed this as standard input via
  22. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  23. # will see the following message at the end:
  24. #        "End of archive 4 (of 25)."
  25. # Contents:  vim/doc/vim_man.uue vim/src/globals.h
  26. #   vim/src/makefile.manx vim/src/makefile.sas vim/src/tag.c
  27. #   vim/src/vim.h
  28. # Wrapped by mool@oce-rd2 on Wed Dec 15 09:50:04 1993
  29. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  30. if test -f 'vim/doc/vim_man.uue' -a "${1}" != "-c" ; then 
  31.   echo shar: Will not clobber existing file \"'vim/doc/vim_man.uue'\"
  32. else
  33. echo shar: Extracting \"'vim/doc/vim_man.uue'\" \(9655 characters\)
  34. sed "s/^X//" >'vim/doc/vim_man.uue' <<'END_OF_FILE'
  35. X
  36. Xbegin 644 vim.man
  37. XM"@I624TH,2D@("`@("`@("`@("`@("`@("`@("`@("`@(%5315(@0T]-34%.<
  38. XM1%,@("`@("`@("`@("`@("`@("`@("`@("`@("!624TH,2D*"@I."$X(3D$(&
  39. XM00A!30A-"$U%"$4(10H@("`@('9I;2`M(%9I($E-<')O=F5D+"!A('!R;V=R_
  40. XM86UM97)S('1E>'0@961I=&]R"@I3"%,(4UD(60A93@A."$Y/"$\(3U`(4`A0`
  41. XM4PA3"%-)"$D(25,(4PA3"B`@("`@=@AV"'9I"&D(:6T(;0AM(%MO<'1I;VYS"
  42. XM72!;9FEL92`N+ET*("`@("!V"'8(=FD(:0AI;0AM"&T@6V]P=&EO;G-=("UTT
  43. XM('1A9PH@("`@('8(=@AV:0AI"&EM"&T(;2!;;W!T:6]N<UT@*UMC;VUM86YD#
  44. XM72!F:6QE("XN"B`@("`@=@AV"'9I"&D(:6T(;0AM(%MO<'1I;VYS72`M8R![&
  45. XM8V]M;6%N9'T@9FEL92`N+@H@("`@('8(=@AV:0AI"&EM"&T(;2!;;W!T:6]NJ
  46. XM<UT@+64@6V5R<F]R9FEL95T*"D0(1`A$10A%"$53"%,(4T,(0PA#4@A2"%))D
  47. XM"$D(25`(4`A05`A4"%1)"$D(24\(3PA/3@A."$X*("`@("!6"%8(5FD(:0AI7
  48. XM;0AM"&T@:7,@82!T97AT(&5D:71O<B!T:&%T(&ES('5P=V%R9',@8V]M<&%TW
  49. XM:6)L92!T;R!V:2X@270@8V%N(&)E('5S960@('1O"B`@("`@961I="!A;GD@N
  50. XM05-#24D@=&5X="X@270@:7,@97-P96-I86QL>2!U<V5F=6P@9F]R(&5D:71IJ
  51. XM;F<@<')O9W)A;7,N"@H@("`@(%1H97)E(&%R92!A(&QO="!O9B!E;FAA;F-EI
  52. XM;65N=',@86)O=F4@=FDZ(&UU;'1I(&QE=F5L('5N9&\L(&-O;6UA;F0@(&QIF
  53. XM;F4*("`@("!E9&ET:6YG+"`@(&9I;&5N86UE("`@8V]M<&QE=&EO;BP@(&]N1
  54. XM("!L:6YE("!H96QP+"`@<75O=&EN9RP@(&5T8RXN("!296%D"B`@("`@9&EFA
  55. XM9F5R96YC92YD;V,@9F]R(&$@<W5M;6%R>2!O9B!T:&4@9&EF9F5R96YC97,@F
  56. XM8F5T=V5E;B!V:2!A;F0@5FEM+@H*("`@("!-;W-T(&]F=&5N(%8(5@A6:0AI5
  57. XM"&EM"&T(;2!I<R!S=&%R=&5D('1O(&5D:70@82!S:6YG;&4@9FEL92!W:71HC
  58. XM('1H92!C;VUM86YD"@H@("`@("`@("`@=FEM(&9I;&4*"B`@("`@36]R92!G.
  59. XM96YE<F%L;'D@5DE-(&ES('-T87)T960@=VET:#H*"B`@("`@("`@("!V:6T@1
  60. XM6V]P=&EO;G-=(%MF:6QE;&ES=%T*"B`@("`@268@=&AE(&9I;&5L:7-T(&EST
  61. XM(&UI<W-I;F<L('1H92!E9&ET;W(@=VEL;"!S=&%R="!W:71H(&%N("!E;7!TU
  62. XM>2`@8G5F9F5R+@H@("`@($]T:&5R=VES92!E>&%C=&QY(&]N92!O=70@;V8@.
  63. XM=&AE(&9O;&QO=VEN9R!F;W5R(&UA>2!B92!U<V5D('1O(&-H;V]S92!O;F4*]
  64. XM("`@("!O<B!M;W)E(&9I;&5S('1O(&)E(&5D:71E9"X*"B`@("`@9FEL92`N0
  65. XM+B`@("`@02!L:7-T(&]F(&9I;&4@;F%M97,N(%1H92!F:7)S="!O;F4@*&%L"
  66. XM<&AA8F5T:6-A;&QY*2!W:6QL("!B90H@("`@("`@("`@("`@("`@('1H92!CH
  67. XM=7)R96YT(&9I;&4@86YD(')E860@:6YT;R!T:&4@8G5F9F5R+B!4:&4@8W5R=
  68. XM<V]R('=I;&P@8F4*("`@("`@("`@("`@("`@("!P;W-I=&EO;F5D(&]N('1HT
  69. XM92!F:7)S="!L:6YE(&]F('1H92!B=69F97(N(%EO=2`@8V%N("!G970@('1O%
  70. XM"B`@("`@("`@("`@("`@("`@=&AE(&]T:&5R(&9I;&5S('=I=&@@=&AE("(Z9
  71. XM;F5X="(@8V]M;6%N9"X*"B`@("`@*UMN=6U=(&9I;&4@+BX*("`@("`@("`@;
  72. XM("`@("`@("!386UE(&%S('1H92!A8F]V92P@8G5T('1H92!C=7)S;W(@=VELJ
  73. XM;"!B92!P;W-I=&EO;F5D(&]N("!L:6YE"B`@("`@("`@("`@("`@("`@(FYU%
  74. XM;2(N("!)9B`B;G5M(B!I<R!M:7-S:6YG+"!T:&4@8W5R<V]R('=I;&P@8F4@@
  75. XM<&]S:71I;VYE9"!O;@H@("`@("`@("`@("`@("`@('1H92!L87-T(&QI;F4NP
  76. XM"@H@("`@("LO<&%T(&9I;&4@+BX*("`@("`@("`@("`@("`@("!386UE(&%SS
  77. XM('1H92!A8F]V92P@8G5T('1H92!C=7)S;W(@=VEL;"!B92!P;W-I=&EO;F5DA
  78. XM("!O;B`@=&AE"B`@("`@("`@("`@("`@("`@9FER<W0@("!O8V-U<G)E;F-EY
  79. XM("`@;V8@("`B<&%T(B`@:6X@('1H92`@8W5R<F5N="`@9FEL92`@*'-E90H@H
  80. XM("`@("`@("`@("`@("`@(')E9F5R96YC92YD;V,L('-E8W1I;VX@(G!A='1ET
  81. XM<FX@<V5A<F-H97,B(&9O<B`@=&AE("!A=F%I;&%B;&4*("`@("`@("`@("`@#
  82. XM("`@("!S96%R8V@@<&%T=&5R;G,I+@H*("`@("`K>V-O;6UA;F1](&9I;&4@4
  83. XM+BX*"B`@("`@+6,@>V-O;6UA;F1](&9I;&4@+BX*("`@("`@("`@("`@("`@]
  84. XM("!386UE(&%S('1H92!A8F]V92P@8G5T('MC;VUM86YD?2!W:6QL(&)E(&5X2
  85. XM96-U=&5D("!A9G1E<B`@=&AE"B`@("`@("`@("`@("`@("`@9FEL92`@:&%S3
  86. XM("!B965N("!R96%D+B`@>V-O;6UA;F1]("!I<R`@:6YT97)P<F5T960@(&%S1
  87. XM("!A;B!%>`H@("`@("`@("`@("`@("`@(&-O;6UA;F0N($EF('1H92![8V]MM
  88. XM;6%N9'T@8V]N=&%I;G,@<W!A8V5S(&ET(&UU<W0@8F4@96YC;&]S960*("`@?
  89. XM("`@("`@("`@("`@("!I;B`@9&]U8FQE("!Q=6]T97,@("AT:&ES(&1E<&5N_
  90. XM9',@;VX@=&AE('-H96QL('1H870@:7,@=7-E9"DN"B`@("`@("`@("`@("`@L
  91. XM("`@17AA;7!L93H@5FEM("(K<V5T('-I(B!M86EN+F,*"@H*"B`@("`@("`@1
  92. XM("`@("`@("`@("`@("`@("`@("`@("`@,C@@36%R8V@@,3DY,B`@("`@("`@J
  93. XM("`@("`@("`@("`@("`@("`@("`@("`@,0H*#`H*5DE-*#$I("`@("`@("`@S
  94. XM("`@("`@("`@("`@("`@("!54T52($-/34U!3D13("`@("`@("`@("`@("`@Q
  95. XM("`@("`@("`@("`@5DE-*#$I"@H*("`@("`M="![=&%G?2`@("!4:&4@9FEL=
  96. XM92!T;R!E9&ET(&%N9"!T:&4@:6YI=&EA;"!C=7)S;W(@<&]S:71I;VX@9&5P8
  97. XM96YD<R!O;B!A"B`@("`@("`@("`@("`@("`@(G1A9R(L("!A("!S;W)T(&]F<
  98. XM(&=O=&\@;&%B96PN('MT86=](&ES(&QO;VME9"!U<"!I;B!T:&4@=&%G<PH@K
  99. XM("`@("`@("`@("`@("`@(&9I;&4L('1H92!A<W-O8VEA=&5D(&9I;&4@8F5CW
  100. XM;VUE<R!T:&4@8W5R<F5N="`@9FEL92`@86YD("!T:&4*("`@("`@("`@("`@6
  101. XM("`@("!A<W-O8VEA=&5D("!C;VUM86YD("!I<R`@97AE8W5T960N("!-;W-TC
  102. XM;'D@=&AI<R!I<R!U<V5D(&9O<B!#"B`@("`@("`@("`@("`@("`@<')O9W)A)
  103. XM;7,N('MT86=]('1H96X@<VAO=6QD(&)E(&$@9G5N8W1I;VX@;F%M92X@5&AE^
  104. XM(&5F9F5C="!I<PH@("`@("`@("`@("`@("`@('1H870@('1H92`@9FEL92`@%
  105. XM8V]N=&%I;FEN9R!T:&%T(&9U;F-T:6]N(&)E8V]M97,@=&AE(&-U<G)E;G0*-
  106. XM("`@("`@("`@("`@("`@("!F:6QE(&%N9"!T:&4@(&-U<G-O<B`@:7,@('!O-
  107. XM<VET:6]N960@(&]N("!T:&4@('-T87)T("!O9B`@=&AE"B`@("`@("`@("`@K
  108. XM("`@("`@9G5N8W1I;VX@*'-E92!R969E<F5N8V4N9&]C+"!S96-T:6]N(")T5
  109. XM86<@<V5A<F-H97,B*2X*"B`@("`@+64@6V5R<F]R9FEL95T*("`@("`@("`@!
  110. XM("`@("`@("!3=&%R="!I;B!Q=6EC:T9I>"!M;V1E+B!4:&4@9FEL92!;97)RA
  111. XM;W)F:6QE72!I<R!R96%D(&%N9"`@=&AE"B`@("`@("`@("`@("`@("`@9FER5
  112. XM<W0@(&5R<F]R(&ES(&1I<W!L87EE9"X@268@6V5R<F]R9FEL95T@:7,@;VUIL
  113. XM='1E9"!T:&4@9FEL90H@("`@("`@("`@("`@("`@(&YA;64@:7,@;V)T86ENV
  114. XM960@9G)O;2!T:&4@("=E<G)O<F9I;&4G("!O<'1I;VX@("AD969A=6QT<R`@O
  115. XM=&\*("`@("`@("`@("`@("`@("`B07IT96-#+D5R<B(@(&9O<B`@=&AE("!!K
  116. XM;6EG82P@(")E<G)O<G,B("!O;B`@;W1H97(@<WES=&5M<RDN"B`@("`@("`@#
  117. XM("`@("`@("`@1G5R=&AE<B!E<G)O<G,@8V%N(&)E(&IU;7!E9"!T;R!W:71HZ
  118. XM('1H92`B.F-N(B`@8V]M;6%N9"X@(%-E90H@("`@("`@("`@("`@("`@(')E[
  119. XM9F5R96YC92YD;V,@<V5C=&EO;B`U+C4N"@I/"$\(3U`(4`A05`A4"%1)"$D(V
  120. XM24\(3PA/3@A."$Y3"%,(4PH@("`@(%1H92!O<'1I;VYS+"!I9B!P<F5S96YT\
  121. XM+"!M=7-T('!R96-E9&4@=&AE(&9I;&5L:7-T+B!4:&4@(&]P=&EO;G,@(&UAS
  122. XM>2`@8F4*("`@("!G:79E;B!I;B!A;GD@;W)D97(N"@H@("`@("UR("`@("`@?
  123. XM("`@(%)E8V]V97)Y(&UO9&4N(%1H92!A=71O<V-R:7!T("!F:6QE("!I<R`@M
  124. XM<F5A9"`@=&\@(')E8V]V97(@(&$*("`@("`@("`@("`@("`@("!C<F%S:&5D:
  125. XM(&5D:71I;F<@<V5S<VEO;BX@270@:&%S(&%L;6]S="!T:&4@<V%M92!E9F9E<
  126. XM8W0@87,@(BUS"B`@("`@("`@("`@("`@("`@9FEL92YV:6TB+B`@4V5E("!R0
  127. XM969E<F5N8V4N9&]C+"`@8VAA<'1E<B`@(E)E8V]V97)Y("!A9G1E<B`@80H@"
  128. XM("`@("`@("`@("`@("`@(&-R87-H(BX*"B`@("`@+78@("`@("`@("`@5FEE<
  129. XM=R!M;V1E+B!4:&4@)W)E861O;FQY)R!O<'1I;VX@=VEL;"!B92!S970N(%EOQ
  130. XM=2`@8V%N("!S=&EL;`H@("`@("`@("`@("`@("`@(&5D:70@('1H92`@8G5F=
  131. XM9F5R+"`@8G5T("!W:6QL("!B92`@<')E=F5N=&5D("!F<F]M(&%C8VED96YT/
  132. XM86P*("`@("`@("`@("`@("`@("!O=F5R=W)I=&EN9R!A(&9I;&4N($EF('EO]
  133. XM=2!D;R!W86YT('1O(&]V97)W<FET92!A("!F:6QE+"`@861D"B`@("`@("`@,
  134. XM("`@("`@("`@86X@(&5X8VQA;6%T:6]N("!M87)K("!T;R`@=&AE("!%>"`@0
  135. XM8V]M;6%N9"P@87,@:6X@(CIW(2(N(%1H90H@("`@("`@("`@("`@("`@("=R>
  136. XM96%D;VYL>2<@(&]P=&EO;B`@8V%N("!B92`@<F5S970@('=I=&@@("(Z<V5TL
  137. XM("!N;W)O(B`@("AS964*("`@("`@("`@("`@("`@("!R969E<F5N8V4N9&]CB
  138. XM+"!O<'1I;VYS(&-H87!T97(I+@H*("`@("`M8B`@("`@("`@("!":6YA<GDN,
  139. XM($$@9F5W(&]P=&EO;G,@=VEL;"!B92!S970@=&AA="!M86ME<R!I="`@<&]SK
  140. XM<VEB;&4@('1O"B`@("`@("`@("`@("`@("`@961I="!A(&)I;F%R>2!O<B!EN
  141. XM>&5C=71A8FQE(&9I;&4N"@H@("`@("UX("`@("`@("`@("A!;6EG82!O;FQYM
  142. XM*2!6:6T@:7,@;F]T(')E<W1A<G1E9"!T;R!O<&5N(&$@;F5W('=I;F1O=RX@6
  143. XM(%1H:7,*("`@("`@("`@("`@("`@("!O<'1I;VX@('-H;W5L9"!B92!U<V5D"
  144. XM('=H96X@5FEM(&ES(&5X96-U=&5D(&)Y(&$@<')O9W)A;2!T:&%T"B`@("`@@
  145. XM("`@("`@("`@("`@=VEL;"!W86ET(&9O<B!T:&4@961I="!S97-S:6]N('1O"
  146. XM("!F:6YI<V@@("AE+F<N("!M86EL*2X@(%1H90H@("`@("`@("`@("`@("`@V
  147. XM("(Z<V@B(&%N9"`B.B$B(&-O;6UA;F1S('=I;&P@;F]T('=O<FLN"@H@("`@K
  148. XM("UN("`@("`@("`@($YO(&%U=&]S8W)I<'0@9FEL92!W:6QL(&)E('=R:71T_
  149. XM96XN(%)E8V]V97)Y("!A9G1E<B`@82`@8W)A<V@*("`@("`@("`@("`@("`@>
  150. XM("!W:6QL("!B92`@:6UP;W-S:6)L92X@($AA;F1Y("!I9B!Y;W4@=V%N="!T2
  151. XM;R!E9&ET(&$@9FEL92!O;B!A"B`@("`@("`@("`@("`@("`@=F5R>2!S;&]W)
  152. XM(&UE9&EU;2`H92YG+B!F;&]P<'DI+B!#86X@86QS;R!B92!D;VYE("!W:71H,
  153. XM("`B.G-E=`H@("`@("`@("`@("`@("`@('5C/3`B+@H*("`@("`M<R![<V-R>
  154. XM:7!T:6Y]"B`@("`@("`@("`@("`@("`@5&AE('-C<FEP="!F:6QE('MS8W)IM
  155. XM<'1I;GT@:7,@<F5A9"X@(%1H92`@8VAA<F%C=&5R<R`@:6X@('1H90H@("`@!
  156. XM("`@("`@("`@("`@(&9I;&4@(&%R92`@:6YT97)P<F5T960@87,@:68@>6]U^
  157. XM(&AA9"!T>7!E9"!T:&5M+B!4:&4@<V%M92!C86X*("`@("`@("`@("`@("`@2
  158. XM("!B92!D;VYE('=I=&@@=&AE(&-O;6UA;F0@(CIS;W5R8V4A('MS8W)I<'1I0
  159. XM;GTB+B!)9B!T:&4@96YD(&]F"B`@("`@("`@("`@("`@("`@=&AE("`@9FEL]
  160. XM92`@:7,@(')E86-H960@(&)E9F]R92`@=&AE("!E9&ET;W(@(&5X:71S+"`@A
  161. XM9G5R=&AE<@H@("`@("`@("`@("`@("`@(&-H87)A8W1E<G,@87)E(')E860@^
  162. XM9G)O;2!T:&4@:V5Y8F]A<F0N"@H@("`@("UW('MS8W)I<'1O=71]"B`@("`@[
  163. XM("`@("`@("`@("`@06QL('1H92!C:&%R86-T97)S('1H870@>6]U('1Y<&4@*
  164. XM87)E("!R96-O<F1E9"`@:6X@('1H92`@9FEL90H@("`@("`@("`@("`@("`@"
  165. XM('MS8W)I<'1O=71]+"`@=6YT:6P@('EO=2!E>&ET(%9)32X@5&AI<R!I<R!U7
  166. XM<V5F=6P@:68@>6]U('=A;G0*"@H@("`@("`@("`@("`@("`@("`@("`@("`@C
  167. XM("`@("`@(#(X($UA<F-H(#$Y.3(@("`@("`@("`@("`@("`@("`@("`@("`@J
  168. XM("`@("`@(#(*"@P*"E9)32@Q*2`@("`@("`@("`@("`@("`@("`@("`@("`@T
  169. XM55-%4B!#3TU-04Y$4R`@("`@("`@("`@("`@("`@("`@("`@("`@(%9)32@Q6
  170. XM*0H*"B`@("`@("`@("`@("`@("`@=&\@8W)E871E("!A("!S8W)I<'0@(&9IC
  171. XM;&4@('1O("!B92`@=7-E9"`@=VET:"`@(G9I;2`@+7,B("!O<@H@("`@("`@C
  172. XM("`@("`@("`@("(Z<V]U<F-E(2(N"@H@("`@("U4('1E<FUI;F%L(%1E;&QSS
  173. XM(%9I;2!T:&4@;F%M92!O9B!T:&4@=&5R;6EN86P@>6]U(&%R92!U<VEN9RX@I
  174. XM4VAO=6QD(&)E(&$*("`@("`@("`@("`@("`@("!T97)M:6YA;"`@:VYO=VX@J
  175. XM('1O("!6:6T@("AB=6EL=&EN*2!O<B!D969I;F5D(&EN('1H92!T97)M8V%P+
  176. XM"B`@("`@("`@("`@("`@("`@9FEL92X*"B`@("`@+60@9&5V:6-E("`@3W!E1
  177. XM;B`B9&5V:6-E(B!F;W(@=7-E(&%S("!A("!T97)M:6YA;"X@($]N;'D@(&]NT
  178. XM("!T:&4@($%M:6=A+@H@("`@("`@("`@("`@("`@($5X86UP;&4Z("`B+60@1
  179. XM8V]N.C(P+S,P+S8P,"\Q-3`B+@H*4PA3"%-%"$4(144(10A%($$(00A!3`A,V
  180. XM"$Q3"%,(4T\(3PA/"B`@("`@5FEM("!D;V-U;65N=&%T:6]N.B`@4F5F97)E]
  181. XM;F-E+F1O8RP@(&EN9&5X+"`@(&1I9F9E<F5N8V4N9&]C+"`@('5N:7@N9&]C-
  182. XM+`H@("`@('9I;2YH;'`N"@I!"$$(054(50A55`A4"%1("$@(2$\(3PA/4@A25
  183. XM"%(*("`@("!-;W-T(&]F(%9)32!W87,@;6%D92!B>2!"<F%M($UO;VQE;F%AS
  184. XM<BX*("`@("!624T@:7,@8F%S960@;VX@4W1E=FEE+"!W;W)K960@;VX@8GDZH
  185. XM(%1I;2!4:&]M<'-O;BP@5&]N>2!!;F1R97=S(&%N9"!'+E(N"B`@("`@*$9R>
  186. XM960I(%=A;'1E<@H*0@A""$)5"%4(54<(1PA'4PA3"%,*("`@("!0<F]B86)L4
  187. XM>2X*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"B`@("`@#
  188. XM("`@("`@("`@("`@("`@("`@("`@("`@("`@,C@@36%R8V@@,3DY,B`@("`@J
  189. X>("`@("`@("`@("`@("`@("`@("`@("`@("`@,PH*G
  190. X``
  191. Xend
  192. Xsize 6870
  193. END_OF_FILE
  194. if test 9655 -ne `wc -c <'vim/doc/vim_man.uue'`; then
  195.     echo shar: \"'vim/doc/vim_man.uue'\" unpacked with wrong size!
  196. fi
  197. chmod +x 'vim/doc/vim_man.uue'
  198. # end of 'vim/doc/vim_man.uue'
  199. fi
  200. if test -f 'vim/src/globals.h' -a "${1}" != "-c" ; then 
  201.   echo shar: Will not clobber existing file \"'vim/src/globals.h'\"
  202. else
  203. echo shar: Extracting \"'vim/src/globals.h'\" \(9305 characters\)
  204. sed "s/^X//" >'vim/src/globals.h' <<'END_OF_FILE'
  205. X/* vi:ts=4:sw=4
  206. X *
  207. X * VIM - Vi IMproved
  208. X *
  209. X * Code Contributions By:    Bram Moolenaar            mool@oce.nl
  210. X *                            Tim Thompson            twitch!tjt
  211. X *                            Tony Andrews            onecom!wldrdg!tony 
  212. X *                            G. R. (Fred) Walter        watmath!watcgl!grwalter 
  213. X */
  214. X
  215. X/*
  216. X * definition of global variables
  217. X *
  218. X * EXTERN is only defined in main.c (and in param.h)
  219. X */
  220. X
  221. X#ifndef EXTERN
  222. X# define EXTERN extern
  223. X# define INIT(x)
  224. X#else
  225. X# ifndef INIT
  226. X#  define INIT(x) x
  227. X# endif
  228. X#endif
  229. X
  230. X/*
  231. X * Number of Rows and Columns in the current window.
  232. X * Must be long to be able to use them as options in param.c.
  233. X */
  234. XEXTERN long        Rows;            /* currently used nr. of rows */
  235. XEXTERN long        Columns;
  236. XEXTERN long        Rows_max;        /* maximal physical nr. of rows */
  237. X
  238. XEXTERN char     *Filename INIT(= NULL);        /* Current file name */
  239. XEXTERN char     *sFilename INIT(= NULL);    /* Filename without path */
  240. XEXTERN char     *xFilename INIT(= NULL);    /* Filename maybe without path */
  241. X
  242. XEXTERN linenr_t Topline;        /* number of the line at the top of the screen */
  243. XEXTERN linenr_t Botline;        /* number of the line below the bottom of the
  244. X                                 * screen */
  245. XEXTERN int        redraw_msg INIT(= TRUE);
  246. X                                /* TRUE when "insert mode" needs updating */
  247. XEXTERN int        emptyrows INIT(= 0);    /* number of '~' rows on screen */
  248. XEXTERN linenr_t line_count;     /* current number of lines in the file */
  249. X
  250. XEXTERN FPOS     Curpos;         /* current position of the cursor */
  251. X
  252. XEXTERN int        Curscol;        /* Current position of cursor (column) */
  253. XEXTERN int        Cursrow;        /* Current position of cursor (row) */
  254. X
  255. XEXTERN int        Cursvcol;        /* Current virtual column, the column number
  256. X                                 * of the file's actual line, as opposed to
  257. X                                 * the column number we're at on the screen.
  258. X                                 * This makes a difference on lines that span
  259. X                                 * more than one screen line. */
  260. X
  261. XEXTERN colnr_t    Curswant INIT(= 0);     /* The column we'd like to be at. This is
  262. X                                 * used to try to stay in the same column
  263. X                                 * through up/down cursor motions. */
  264. X
  265. XEXTERN int        set_want_col;    /* If set, then update Curswant the next time
  266. X                                 * through cursupdate() to the current
  267. X                                 * virtual column. */
  268. X
  269. XEXTERN int        cmdoffset INIT(= 0);     /* offset for command line position */
  270. XEXTERN int        ru_col;            /* column for ruler */
  271. XEXTERN int        sc_col;            /* column for shown command */
  272. X
  273. XEXTERN int        char_count;        /* number of characters sent to screen */
  274. X
  275. XEXTERN int        starting INIT(= TRUE);
  276. X                                /* set to FALSE when starting up finished */
  277. XEXTERN int        exiting INIT(= FALSE);
  278. X                                /* set to TRUE when abandoning Vim */
  279. X
  280. XEXTERN int        secure INIT(= FALSE);
  281. X                                /* set to TRUE when only "safe" commands are 
  282. X                                 * allowed, e.g. when sourcing .exrc or .vimrc
  283. X                                 * in current directory */
  284. X
  285. XEXTERN FPOS     Visual;         /* start position of Visual
  286. X                                 * (Visual.lnum == 0 when not active) */
  287. XEXTERN int        Visual_block INIT(= FALSE);
  288. X                                /* Visual is blockwise */
  289. X
  290. XEXTERN FPOS     Insstart;        /* This is where the latest insert/append
  291. X                                 * mode started. */
  292. X
  293. X/*
  294. X * This flag is used to make auto-indent work right on lines where only a
  295. X * <RETURN> or <ESC> is typed. It is set when an auto-indent is done, and
  296. X * reset when any other editting is done on the line. If an <ESC> or <RETURN>
  297. X * is received, and did_ai is TRUE, the line is truncated.
  298. X */
  299. XEXTERN int               did_ai INIT(= FALSE);
  300. X
  301. X/*
  302. X * This flag is set when a smart indent has been performed. When the next typed
  303. X * character is a '{' the inserted tab will be deleted again.
  304. X */
  305. XEXTERN int                did_si INIT(= FALSE);
  306. X
  307. X/*
  308. X * This flag is set after an auto indent. If the next typed character is a '}'
  309. X * one indent character will be removed.
  310. X */
  311. XEXTERN int                can_si INIT(= FALSE);
  312. X
  313. XEXTERN int                old_indent INIT(= 0); /* for ^^D command in insert mode */
  314. X
  315. X/*
  316. X * This flag is set after doing a reverse replace in column 0.
  317. X * An extra space has been inserted in column 0.
  318. X */
  319. XEXTERN int                extraspace INIT(= FALSE);
  320. X
  321. XEXTERN int        State INIT(= NORMAL);    /* This is the current state of the command
  322. X                                         * interpreter. */
  323. X
  324. XEXTERN int        Recording INIT(= FALSE);/* TRUE when recording into a register */
  325. XEXTERN int        Exec_reg INIT(= FALSE);    /* TRUE when executing a register */
  326. X
  327. XEXTERN int        Changed INIT(= FALSE);    /* Set to TRUE if something in the file has
  328. X                                          * been changed and not written out. */
  329. X
  330. XEXTERN int        NotEdited INIT(= FALSE);/* Set to TRUE with ":file xxx" command,
  331. X                                          * reset when file is written out. */
  332. X
  333. XEXTERN int        Updated INIT(= FALSE);    /* Set to TRUE if something in the file has
  334. X                                          * been changed and .vim not flushed yet */
  335. X
  336. XEXTERN int        did_cd INIT(= FALSE);    /* TRUE when :cd dir used */
  337. XEXTERN int        no_abbr INIT(= TRUE);    /* TRUE when no abbreviations loaded */
  338. X
  339. X
  340. XEXTERN char     *IObuff;                /* sprintf's are done into this buffer */
  341. X
  342. XEXTERN int        RedrawingDisabled INIT(= FALSE);
  343. X                                        /* Set to TRUE if doing :g */
  344. X#ifndef MSDOS
  345. XEXTERN int        thisfile_sn INIT(= FALSE);    /* this file uses shortname */
  346. X#endif
  347. X
  348. XEXTERN int        readonlymode INIT(= FALSE); /* Set to TRUE for "view" */
  349. XEXTERN int        recoverymode INIT(= FALSE); /* Set to TRUE for "-r" option */
  350. X
  351. XEXTERN int        KeyTyped;                /* TRUE if user typed the character */
  352. XEXTERN int        must_redraw INIT(= 0);    /* type of redraw necessary */
  353. X
  354. XEXTERN char     **files INIT(= NULL);    /* list of input files */
  355. XEXTERN int        numfiles INIT(= 0);     /* number of input files */
  356. XEXTERN int        curfile INIT(= 0);        /* number of the current file */
  357. XEXTERN int        files_exp INIT(= FALSE);    /* *files must be freed */
  358. X#define NSCRIPT 15
  359. XEXTERN FILE     *scriptin[NSCRIPT];        /* streams to read script from */
  360. XEXTERN int        curscript INIT(= 0);    /* index in scriptin[] */
  361. XEXTERN FILE     *scriptout    INIT(= NULL); /* stream to write script to */
  362. X
  363. XEXTERN int        got_int INIT(= FALSE);    /* set to TRUE when interrupt
  364. X                                           signal occurred */
  365. XEXTERN int        term_console INIT(= FALSE);    /* set to TRUE when Amiga window used */
  366. XEXTERN int        termcap_active INIT(= FALSE);    /* set to TRUE by starttermcap() */
  367. XEXTERN int        bangredo INIT(= FALSE);    /* set to TRUE whith ! command */
  368. XEXTERN int        searchcmdlen;            /* length of previous search command */
  369. XEXTERN int        did_outofmem_msg INIT(= FALSE);    /* set after out of memory msg */
  370. X
  371. X#ifdef DEBUG
  372. XEXTERN FILE *debugfp INIT(=NULL);
  373. X#endif
  374. X
  375. Xextern char *Version;            /* this is in version.c */
  376. Xextern char *longVersion;        /* this is in version.c */
  377. X
  378. X/*
  379. X * The error messages that can be shared are included here.
  380. X * Excluded are very specific errors and debugging messages.
  381. X */
  382. XEXTERN char e_abbr[]        INIT(="No such abbreviation");
  383. XEXTERN char e_abort[]        INIT(="Command aborted");
  384. XEXTERN char e_ambmap[]        INIT(="Ambiguous mapping");
  385. XEXTERN char e_argreq[]        INIT(="Argument required");
  386. XEXTERN char e_curdir[]        INIT(="Command not allowed from from .exrc/.vimrc in current dir");
  387. XEXTERN char e_errorf[]        INIT(="No errorfile name");
  388. XEXTERN char e_exists[]        INIT(="File exists (use ! to override)");
  389. XEXTERN char e_failed[]         INIT(="Command failed");
  390. XEXTERN char e_internal[]    INIT(="Internal error");
  391. XEXTERN char e_interr[]        INIT(="Interrupted");
  392. XEXTERN char e_invaddr[]        INIT(="Invalid address");
  393. XEXTERN char e_invarg[]        INIT(="Invalid argument");
  394. XEXTERN char e_invrange[]    INIT(="Invalid range");
  395. XEXTERN char e_invcmd[]        INIT(="Invalid command");
  396. XEXTERN char e_invstring[]    INIT(="Invalid search string");
  397. XEXTERN char e_more[]        INIT(="Still more files to edit");
  398. XEXTERN char e_nesting[]        INIT(="Scripts nested too deep");
  399. XEXTERN char e_noalt[]        INIT(="No alternate file");
  400. XEXTERN char e_nomap[]        INIT(="No such mapping");
  401. XEXTERN char e_nomatch[]        INIT(="No match");
  402. XEXTERN char e_nomore[]        INIT(="No more files to edit");
  403. XEXTERN char e_noname[]        INIT(="No file name");
  404. XEXTERN char e_nopresub[]    INIT(="No previous substitute");
  405. XEXTERN char e_noprev[]        INIT(="No previous command");
  406. XEXTERN char e_noprevre[]    INIT(="No previous regexp");
  407. XEXTERN char e_norange[]     INIT(="No range allowed");
  408. XEXTERN char e_notcreate[]     INIT(="Can't create file");
  409. XEXTERN char e_notmp[]        INIT(="Can't get temp file name");
  410. XEXTERN char e_notopen[]        INIT(="Can't open file");
  411. XEXTERN char e_notread[]        INIT(="Can't read file");
  412. XEXTERN char e_nowrtmsg[]    INIT(="No write since last change (use ! to override)");
  413. XEXTERN char e_null[]        INIT(="Null argument");
  414. XEXTERN char e_number[]        INIT(="Number expected");
  415. XEXTERN char e_openerrf[]    INIT(="Can't open errorfile");
  416. XEXTERN char e_outofmem[]    INIT(="Out of memory!");
  417. XEXTERN char e_patnotf[]        INIT(="Pattern not found");
  418. XEXTERN char e_positive[]    INIT(="Argument must be positive");
  419. XEXTERN char e_quickfix[]    INIT(="No errorfile; use :cf");
  420. XEXTERN char e_re_damg[]        INIT(="Damaged match string");
  421. XEXTERN char e_re_corr[]        INIT(="Corrupted regexp program");
  422. XEXTERN char e_readonly[]    INIT(="File is readonly");
  423. XEXTERN char e_readerrf[]    INIT(="Error while reading errorfile");
  424. XEXTERN char e_scroll[]        INIT(="Invalid scroll size");
  425. XEXTERN char e_toocompl[]    INIT(="Command too complex");
  426. XEXTERN char e_toombra[]        INIT(="Too many (");
  427. XEXTERN char e_toomket[]        INIT(="Too many )");
  428. XEXTERN char e_toomsbra[]    INIT(="Too many [");
  429. XEXTERN char e_toolong[]        INIT(="Command too long");
  430. XEXTERN char e_toomany[]        INIT(="Too many file names");
  431. XEXTERN char e_trailing[]    INIT(="Trailing characters");
  432. XEXTERN char e_umark[]        INIT(="Unknown mark");
  433. XEXTERN char e_unknown[]        INIT(="Unknown");
  434. XEXTERN char e_write[]        INIT(="Error while writing");
  435. XEXTERN char e_zerocount[]     INIT(="Zero count");
  436. END_OF_FILE
  437. if test 9305 -ne `wc -c <'vim/src/globals.h'`; then
  438.     echo shar: \"'vim/src/globals.h'\" unpacked with wrong size!
  439. fi
  440. chmod +x 'vim/src/globals.h'
  441. # end of 'vim/src/globals.h'
  442. fi
  443. if test -f 'vim/src/makefile.manx' -a "${1}" != "-c" ; then 
  444.   echo shar: Will not clobber existing file \"'vim/src/makefile.manx'\"
  445. else
  446. echo shar: Extracting \"'vim/src/makefile.manx'\" \(8112 characters\)
  447. sed "s/^X//" >'vim/src/makefile.manx' <<'END_OF_FILE'
  448. X#
  449. X# Makefile for VIM on the Amiga, using Aztec/Manx C 5.0 or later
  450. X#
  451. X# Note: not all dependencies are included. This was done to avoid having
  452. X#       to compile everything when a global variable or function is added
  453. X#    
  454. X
  455. X#>>>>> choose options:
  456. X### -DDIGRAPHS        digraph support (at the cost of 1.6 Kbyte code)
  457. X### -DNO_ARP        do not use arp.library, DOS 2.0 required
  458. X### -DCOMPATIBLE    start in vi-compatible mode
  459. X### -DNOBACKUP        default is no backup file
  460. X### -DDEBUG        output a lot of debugging garbage
  461. X### -DTERMCAP        include termcap file support
  462. X### -DNO_BUILTIN_TCAPS    do not include builtin termcap entries
  463. X###                (use only with -DTERMCAP)
  464. X### -DSOME_BUILTIN_TCAPS include most useful builtin termcap entries
  465. X###                (use only without -DNO_BUILTIN_TCAPS)
  466. X### -DALL_BUILTIN_TCAPS    include all builtin termcap entries
  467. X###                (use only without -DNO_BUILTIN_TCAPS)
  468. X### -Dconst        for compilers that don't have type const
  469. X### -DVIMRC_FILE    name of the .vimrc file in current dir
  470. X### -DEXRC_FILE        name of the .exrc file in current dir
  471. X### -DSYSVIMRC_FILE    name of the global .vimrc file
  472. X### -DSYSEXRC_FILE    name of the global .exrc file
  473. X### -DDEFVIMRC_FILE    name of the system-wide .vimrc file
  474. X### -DVIM_HLP        name of the help file
  475. XDEFINES = -DDIGRAPHS -DSOME_BUILTIN_TCAPS -DVIM_ISSPACE
  476. X
  477. X#>>>>> if TERMCAP is defined termlib.o has to be used
  478. X#TERMLIB = termlib.o
  479. XTERMLIB = 
  480. X
  481. X#>>>>> choose between debugging (-bs) or optimizing (-so)
  482. XOPTIONS = -so
  483. X#OPTIONS = -bs
  484. X
  485. X#>>>>> end of choices
  486. X###########################################################################
  487. X
  488. XCFLAGS = $(OPTIONS) -wapruq -ps -qf $(DEFINES) -DAMIGA
  489. X
  490. XLIBS = -lc16
  491. XSYMS = vim.syms
  492. X
  493. XOBJ =    alloc.o amiga.o buffers.o charset.o cmdline.o csearch.o digraph.o \
  494. X    edit.o fileio.o help.o linefunc.o main.o mark.o message.o misccmds.o \
  495. X    normal.o ops.o param.o quickfix.o regexp.o regsub.o screen.o \
  496. X    script.o search.o storage.o tag.o term.o undo.o $(TERMLIB)
  497. X
  498. XPRO =    proto/alloc.pro proto/buffers.pro proto/charset.pro proto/cmdline.pro \
  499. X    proto/csearch.pro proto/digraph.pro proto/edit.pro proto/fileio.pro \
  500. X    proto/help.pro proto/linefunc.pro proto/main.pro proto/mark.pro \
  501. X    proto/message.pro proto/misccmds.pro proto/normal.pro proto/ops.pro \
  502. X    proto/param.pro proto/quickfix.pro proto/regexp.pro proto/regsub.pro \
  503. X    proto/screen.pro proto/script.pro proto/search.pro proto/storage.pro \
  504. X    proto/tag.pro proto/term.pro proto/termlib.pro \
  505. X    proto/undo.pro proto/amiga.pro
  506. X
  507. X/Vim: $(OBJ) version.c
  508. X    cc $(CFLAGS) version.c
  509. X    ln +q -m -o /Vim $(OBJ) version.o $(LIBS)
  510. X
  511. Xdebug: $(OBJ) version.c
  512. X    cc $(CFLAGS) version.c
  513. X    ln +q -m -g -o /Vim $(OBJ) version.o $(LIBS)
  514. X
  515. Xproto: $(SYMS) $(PRO)
  516. X
  517. Xctags:
  518. X    csh -c ctags *.c *.h
  519. X
  520. X# can't use delete here, too many file names
  521. Xclean:
  522. X    csh -c rm -f $(OBJ) version.o mkcmdtab.o /Vim $(SYMS) mkcmdtab
  523. X
  524. X$(SYMS)  : vim.h keymap.h macros.h ascii.h term.h
  525. X    cc $(CFLAGS) -ho$(SYMS) vim.h
  526. X
  527. X###########################################################################
  528. X
  529. Xalloc.o:    alloc.c  $(SYMS)
  530. X    cc $(CFLAGS) -hi$(SYMS) alloc.c
  531. X
  532. Xproto/alloc.pro:    alloc.c
  533. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) alloc.c
  534. X    csh -c mv -f alloc.pro proto
  535. X
  536. Xamiga.o:    amiga.c  $(SYMS)
  537. X    cc $(CFLAGS) -hi$(SYMS) amiga.c
  538. X
  539. Xproto/amiga.pro:    amiga.c
  540. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) amiga.c
  541. X    csh -c mv -f amiga.pro proto
  542. X
  543. Xbuffers.o:    buffers.c  $(SYMS)
  544. X    cc $(CFLAGS) -hi$(SYMS) buffers.c
  545. X
  546. Xproto/buffers.pro:    buffers.c
  547. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) buffers.c
  548. X    csh -c mv -f buffers.pro proto
  549. X
  550. Xcharset.o:    charset.c  $(SYMS)
  551. X    cc $(CFLAGS) -hi$(SYMS) charset.c
  552. X
  553. Xproto/charset.pro:    charset.c
  554. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) charset.c
  555. X    csh -c mv -f charset.pro proto
  556. X
  557. Xcmdline.o:    cmdline.c  $(SYMS) cmdtab.h
  558. X    cc $(CFLAGS) -hi$(SYMS) cmdline.c
  559. X
  560. Xproto/cmdline.pro:    cmdline.c
  561. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) cmdline.c
  562. X    csh -c mv -f cmdline.pro proto
  563. X
  564. Xcsearch.o:    csearch.c  $(SYMS)
  565. X    cc $(CFLAGS) -hi$(SYMS) csearch.c
  566. X
  567. Xproto/csearch.pro:    csearch.c
  568. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) csearch.c
  569. X    csh -c mv -f csearch.pro proto
  570. X
  571. Xdigraph.o:    digraph.c  $(SYMS)
  572. X    cc $(CFLAGS) -hi$(SYMS) digraph.c
  573. X
  574. Xproto/digraph.pro:    digraph.c
  575. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) digraph.c
  576. X    csh -c mv -f digraph.pro proto
  577. X
  578. Xedit.o:    edit.c  $(SYMS)
  579. X    cc $(CFLAGS) -hi$(SYMS) edit.c
  580. X
  581. Xproto/edit.pro:    edit.c
  582. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) edit.c
  583. X    csh -c mv -f edit.pro proto
  584. X
  585. Xfileio.o:    fileio.c  $(SYMS)
  586. X    cc $(CFLAGS) -hi$(SYMS) fileio.c
  587. X
  588. Xproto/fileio.pro:    fileio.c
  589. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) fileio.c
  590. X    csh -c mv -f fileio.pro proto
  591. X
  592. Xhelp.o:    help.c  $(SYMS)
  593. X    cc $(CFLAGS) -hi$(SYMS) help.c
  594. X
  595. Xproto/help.pro:    help.c
  596. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) help.c
  597. X    csh -c mv -f help.pro proto
  598. X
  599. Xlinefunc.o:    linefunc.c  $(SYMS)
  600. X    cc $(CFLAGS) -hi$(SYMS) linefunc.c
  601. X
  602. Xproto/linefunc.pro:    linefunc.c
  603. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) linefunc.c
  604. X    csh -c mv -f linefunc.pro proto
  605. X
  606. Xmain.o:    main.c $(SYMS) param.h globals.h
  607. X    cc $(CFLAGS) -hi$(SYMS) main.c
  608. X
  609. Xproto/main.pro:    main.c
  610. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) main.c
  611. X    csh -c mv -f main.pro proto
  612. X
  613. Xmark.o:    mark.c  $(SYMS) mark.h
  614. X    cc $(CFLAGS) -hi$(SYMS) mark.c
  615. X
  616. Xproto/mark.pro:    mark.c
  617. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) mark.c
  618. X    csh -c mv -f mark.pro proto
  619. X
  620. Xmessage.o:    message.c  $(SYMS)
  621. X    cc $(CFLAGS) -hi$(SYMS) message.c
  622. X
  623. Xproto/message.pro:    message.c
  624. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) message.c
  625. X    csh -c mv -f message.pro proto
  626. X
  627. Xmisccmds.o:    misccmds.c  $(SYMS)
  628. X    cc $(CFLAGS) -hi$(SYMS) misccmds.c
  629. X
  630. Xproto/misccmds.pro:    misccmds.c
  631. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) misccmds.c
  632. X    csh -c mv -f misccmds.pro proto
  633. X
  634. Xnormal.o:    normal.c  $(SYMS) ops.h
  635. X    cc $(CFLAGS) -hi$(SYMS) normal.c
  636. X
  637. Xproto/normal.pro:    normal.c
  638. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) normal.c
  639. X    csh -c mv -f normal.pro proto
  640. X
  641. Xops.o:    ops.c  $(SYMS) ops.h
  642. X    cc $(CFLAGS) -hi$(SYMS) ops.c
  643. X
  644. Xproto/ops.pro:    ops.c
  645. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) ops.c
  646. X    csh -c mv -f ops.pro proto
  647. X
  648. Xparam.o:    param.c  $(SYMS)
  649. X    cc $(CFLAGS) -hi$(SYMS) param.c
  650. X
  651. Xproto/param.pro:    param.c
  652. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) param.c
  653. X    csh -c mv -f param.pro proto
  654. X
  655. Xquickfix.o:    quickfix.c  $(SYMS)
  656. X    cc $(CFLAGS) -hi$(SYMS) quickfix.c
  657. X
  658. Xproto/quickfix.pro:    quickfix.c
  659. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) quickfix.c
  660. X    csh -c mv -f quickfix.pro proto
  661. X
  662. Xregexp.o:    regexp.c  $(SYMS)
  663. X    cc $(CFLAGS) -hi$(SYMS) regexp.c
  664. X
  665. Xproto/regexp.pro:    regexp.c
  666. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) regexp.c
  667. X    csh -c mv -f regexp.pro proto
  668. X
  669. Xregsub.o:    regsub.c  $(SYMS)
  670. X    cc $(CFLAGS) -hi$(SYMS) regsub.c
  671. X
  672. Xproto/regsub.pro:    regsub.c
  673. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) regsub.c
  674. X    csh -c mv -f regsub.pro proto
  675. X
  676. Xscreen.o:    screen.c  $(SYMS)
  677. X    cc $(CFLAGS) -hi$(SYMS) screen.c
  678. X
  679. Xproto/screen.pro:    screen.c
  680. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) screen.c
  681. X    csh -c mv -f screen.pro proto
  682. X
  683. Xscript.o:    script.c  $(SYMS)
  684. X    cc $(CFLAGS) -hi$(SYMS) script.c
  685. X
  686. Xproto/script.pro:    script.c
  687. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) script.c
  688. X    csh -c mv -f script.pro proto
  689. X
  690. Xsearch.o:    search.c  $(SYMS)
  691. X    cc $(CFLAGS) -hi$(SYMS) search.c
  692. X
  693. Xproto/search.pro:    search.c
  694. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) search.c
  695. X    csh -c mv -f search.pro proto
  696. X
  697. Xstorage.o:    storage.c  $(SYMS)
  698. X    cc $(CFLAGS) -hi$(SYMS) storage.c
  699. X
  700. Xproto/storage.pro:    storage.c
  701. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) storage.c
  702. X    csh -c mv -f storage.pro proto
  703. X
  704. Xtag.o:    tag.c  $(SYMS) mark.h
  705. X    cc $(CFLAGS) -hi$(SYMS) tag.c
  706. X
  707. Xproto/tag.pro:    tag.c
  708. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) tag.c
  709. X    csh -c mv -f tag.pro proto
  710. X
  711. Xterm.o:    term.c  $(SYMS) term.h
  712. X    cc $(CFLAGS) -hi$(SYMS) term.c
  713. X
  714. Xproto/term.pro:    term.c
  715. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) term.c
  716. X    csh -c mv -f term.pro proto
  717. X
  718. Xtermlib.o:    termlib.c  $(SYMS)
  719. X    cc $(CFLAGS) termlib.c
  720. X
  721. Xproto/termlib.pro:    termlib.c
  722. X    cc -qa -qp $(CFLAGS) -DPROTO termlib.c
  723. X#the manx compiler generates a wrong prototype for tputs
  724. X    vim -s termlib.fix termlib.pro
  725. X    csh -c mv -f termlib.pro proto
  726. X
  727. Xundo.o:    undo.c  $(SYMS)
  728. X    cc $(CFLAGS) -hi$(SYMS) undo.c
  729. X
  730. Xproto/undo.pro:    undo.c
  731. X    cc -qa -qp $(CFLAGS) -DPROTO -hi$(SYMS) undo.c
  732. X    csh -c mv -f undo.pro proto
  733. X
  734. Xcmdtab.h: cmdtab.tab mkcmdtab
  735. X    mkcmdtab cmdtab.tab cmdtab.h
  736. X
  737. Xmkcmdtab: mkcmdtab.o
  738. X    ln +q -o mkcmdtab mkcmdtab.o -lc16
  739. END_OF_FILE
  740. if test 8112 -ne `wc -c <'vim/src/makefile.manx'`; then
  741.     echo shar: \"'vim/src/makefile.manx'\" unpacked with wrong size!
  742. fi
  743. chmod +x 'vim/src/makefile.manx'
  744. # end of 'vim/src/makefile.manx'
  745. fi
  746. if test -f 'vim/src/makefile.sas' -a "${1}" != "-c" ; then 
  747.   echo shar: Will not clobber existing file \"'vim/src/makefile.sas'\"
  748. else
  749. echo shar: Extracting \"'vim/src/makefile.sas'\" \(7825 characters\)
  750. sed "s/^X//" >'vim/src/makefile.sas' <<'END_OF_FILE'
  751. X#
  752. X# Makefile for VIM on the Amiga, using SAS/Lattice C 6.0 to 6.3
  753. X#
  754. X# Do NOT use the peephole optimizer! It messes up all kinds of things.
  755. X# For 6.0 and 6.1, expand_env() will not work correctly.
  756. X# For 6.2 and 6.3 the call to free_line in u_freeentry is wrong.
  757. X# You should use Manx Aztec C whenever possible.
  758. X#
  759. X# The prototypes from Manx and SAS are incompatible. If the prototypes
  760. X# were generated by Manx, first do "touch *.c; make proto" before "make".
  761. X#
  762. X# Note: not all dependencies are included. This was done to avoid having
  763. X#       to compile everything when a global variable or function is added
  764. X#    
  765. X
  766. X#>>>>> choose options:
  767. X### DEF=DIGRAPHS        digraph support (at the cost of 1.6 Kbyte code)
  768. X### DEF=NO_ARP            do not use arp.library, DOS 2.0 required
  769. X### DEF=COMPATIBLE        start in vi-compatible mode
  770. X### DEF=NOBACKUP        default is no backup file
  771. X### DEF=DEBUG            output a lot of debugging garbage
  772. X### DEF=TERMCAP            include termcap file support
  773. X### DEF=NO_BUILTIN_TCAPS    do not include builtin termcap entries
  774. X###                (use only with -DTERMCAP)
  775. X### DEF=SOME_BUILTIN_TCAPS     include most useful builtin termcap entries
  776. X###                (use only without -DNO_BUILTIN_TCAPS)
  777. X### DEF=ALL_BUILTIN_TCAPS    include all builtin termcap entries
  778. X###                (use only without -DNO_BUILTIN_TCAPS)
  779. XDEFINES = DEF=DIGRAPHS DEF=SOME_BUILTIN_TCAPS
  780. X
  781. X#>>>>> if TERMCAP is defined termlib.o has to be used
  782. X#TERMLIB = termlib.o
  783. XTERMLIB = 
  784. X
  785. X#>>>>> choose NODEBUG for normal compiling, the other for debugging and profiling
  786. X# don't switch on debugging when generating proto files, it crashes the compiler.
  787. XDBG = NODEBUG
  788. X#DBG = DBG=SF
  789. X
  790. X#>>>>> choose NOOPTPEEP for 6.0 to 6.3, NOOPT for debugging
  791. X# when all the optimizer bugs are finally solved you can use OPT
  792. X#OPTIMIZE=OPT
  793. XOPTIMIZE=NOOPTPEEP
  794. X#OPTIMIZE=NOOPT
  795. X
  796. X#>>>>> end of choices
  797. X###########################################################################
  798. X
  799. XCC = sc
  800. XGST = vim.gst
  801. XCOPTS = SINT SCODE SDATA
  802. X
  803. XCFLAGS = NOLINK $(OPTIMIZE) $(COPTS) DEF=AMIGA DEF=SASC $(DBG) $(DEFINES) GST=$(GST)
  804. X
  805. XPROPT = DEF=PROTO GPROTO GPPARM
  806. X
  807. XOBJ =    alloc.o amiga.o buffers.o charset.o cmdline.o csearch.o digraph.o \
  808. X    edit.o fileio.o help.o linefunc.o main.o mark.o message.o misccmds.o \
  809. X    normal.o ops.o param.o quickfix.o regexp.o regsub.o screen.o \
  810. X    script.o search.o storage.o tag.o term.o undo.o $(TERMLIB)
  811. X
  812. XPRO =    proto/alloc.pro proto/buffers.pro proto/charset.pro proto/cmdline.pro \
  813. X    proto/csearch.pro proto/digraph.pro proto/edit.pro proto/fileio.pro \
  814. X    proto/help.pro proto/linefunc.pro proto/main.pro proto/mark.pro \
  815. X    proto/message.pro proto/misccmds.pro proto/normal.pro proto/ops.pro \
  816. X    proto/param.pro proto/quickfix.pro proto/regexp.pro proto/regsub.pro \
  817. X    proto/screen.pro proto/script.pro proto/search.pro proto/storage.pro \
  818. X    proto/tag.pro proto/term.pro proto/termlib.pro \
  819. X    proto/undo.pro proto/amiga.pro
  820. X
  821. X/Vim: $(OBJ) version.c
  822. X    $(CC) $(CFLAGS) version.c
  823. X    $(CC) LINK $(COPTS) $(OBJ) version.o $(DBG) PNAME=/Vim
  824. X
  825. Xdebug: $(OBJ) version.c
  826. X    $(CC) $(CFLAGS) version.c
  827. X    $(CC) LINK $(COPTS) $(OBJ) version.o $(DBG) PNAME=/Vim
  828. X
  829. Xproto: $(GST) $(PRO)
  830. X
  831. Xctags:
  832. X    csh -c ctags *.c *.h
  833. X
  834. X# can't use delete here, too many file names
  835. Xclean:
  836. X    csh -c rm -f $(OBJ) version.o mkcmdtab.o /Vim $(GST) mkcmdtab
  837. X
  838. X$(GST)  : vim.h keymap.h macros.h ascii.h term.h
  839. X    $(CC) $(CFLAGS) MGST=$(GST) vim.h
  840. X
  841. X###########################################################################
  842. X
  843. Xalloc.o:    alloc.c  $(GST)
  844. X    $(CC) $(CFLAGS) alloc.c
  845. X
  846. Xproto/alloc.pro:    alloc.c  $(GST)
  847. X    $(CC) $(CFLAGS) GPFILE=proto/alloc.pro $(PROPT) alloc.c
  848. X
  849. Xamiga.o:    amiga.c  $(GST)
  850. X    $(CC) $(CFLAGS) amiga.c
  851. X
  852. Xproto/amiga.pro:    amiga.c $(GST)
  853. X    $(CC) $(CFLAGS) GPFILE=proto/amiga.pro $(PROPT) amiga.c
  854. X
  855. Xbuffers.o:    buffers.c  $(GST)
  856. X    $(CC) $(CFLAGS) buffers.c
  857. X
  858. Xproto/buffers.pro:    buffers.c $(GST)
  859. X    $(CC) $(CFLAGS) GPFILE=proto/buffers.pro $(PROPT) buffers.c
  860. X
  861. Xcharset.o:    charset.c  $(GST)
  862. X    $(CC) $(CFLAGS) charset.c
  863. X
  864. Xproto/charset.pro:    charset.c $(GST)
  865. X    $(CC) $(CFLAGS) GPFILE=proto/charset.pro $(PROPT) charset.c
  866. X
  867. Xcmdline.o:    cmdline.c  $(GST) cmdtab.h
  868. X    $(CC) $(CFLAGS) cmdline.c
  869. X
  870. Xproto/cmdline.pro:    cmdline.c $(GST)
  871. X    $(CC) $(CFLAGS) GPFILE=proto/cmdline.pro $(PROPT) cmdline.c
  872. X
  873. Xcsearch.o:    csearch.c  $(GST)
  874. X    $(CC) $(CFLAGS) csearch.c
  875. X
  876. Xproto/csearch.pro:    csearch.c $(GST)
  877. X    $(CC) $(CFLAGS) GPFILE=proto/csearch.pro $(PROPT) csearch.c
  878. X
  879. Xdigraph.o:    digraph.c  $(GST)
  880. X    $(CC) $(CFLAGS) digraph.c
  881. X
  882. Xproto/digraph.pro:    digraph.c $(GST)
  883. X    $(CC) $(CFLAGS) GPFILE=proto/digraph.pro $(PROPT) digraph.c
  884. X
  885. Xedit.o:    edit.c  $(GST)
  886. X    $(CC) $(CFLAGS) edit.c
  887. X
  888. Xproto/edit.pro:    edit.c $(GST)
  889. X    $(CC) $(CFLAGS) GPFILE=proto/edit.pro $(PROPT) edit.c
  890. X
  891. Xfileio.o:    fileio.c  $(GST)
  892. X    $(CC) $(CFLAGS) fileio.c
  893. X
  894. Xproto/fileio.pro:    fileio.c $(GST)
  895. X    $(CC) $(CFLAGS) GPFILE=proto/fileio.pro $(PROPT) fileio.c
  896. X
  897. Xhelp.o:    help.c  $(GST)
  898. X    $(CC) $(CFLAGS) help.c
  899. X
  900. Xproto/help.pro:    help.c $(GST)
  901. X    $(CC) $(CFLAGS) GPFILE=proto/help.pro $(PROPT) help.c
  902. X
  903. Xlinefunc.o:    linefunc.c  $(GST)
  904. X    $(CC) $(CFLAGS) linefunc.c
  905. X
  906. Xproto/linefunc.pro:    linefunc.c $(GST)
  907. X    $(CC) $(CFLAGS) GPFILE=proto/linefunc.pro $(PROPT) linefunc.c
  908. X
  909. Xmain.o:    main.c  $(GST)
  910. X    $(CC) $(CFLAGS) main.c
  911. X
  912. Xproto/main.pro:    main.c $(GST)
  913. X    $(CC) $(CFLAGS) GPFILE=proto/main.pro $(PROPT) main.c
  914. X
  915. Xmark.o:    mark.c  $(GST) mark.h
  916. X    $(CC) $(CFLAGS) mark.c
  917. X
  918. Xproto/mark.pro:    mark.c $(GST)
  919. X    $(CC) $(CFLAGS) GPFILE=proto/mark.pro $(PROPT) mark.c
  920. X
  921. Xmessage.o:    message.c  $(GST)
  922. X    $(CC) $(CFLAGS) message.c
  923. X
  924. Xproto/message.pro:    message.c $(GST)
  925. X    $(CC) $(CFLAGS) GPFILE=proto/message.pro $(PROPT) message.c
  926. X
  927. Xmisccmds.o:    misccmds.c  $(GST)
  928. X    $(CC) $(CFLAGS) misccmds.c
  929. X
  930. Xproto/misccmds.pro:    misccmds.c $(GST)
  931. X    $(CC) $(CFLAGS) GPFILE=proto/misccmds.pro $(PROPT) misccmds.c
  932. X
  933. Xnormal.o:    normal.c  $(GST) ops.h
  934. X    $(CC) $(CFLAGS) normal.c
  935. X
  936. Xproto/normal.pro:    normal.c $(GST)
  937. X    $(CC) $(CFLAGS) GPFILE=proto/normal.pro $(PROPT) normal.c
  938. X
  939. Xops.o:    ops.c  $(GST) ops.h
  940. X    $(CC) $(CFLAGS) ops.c
  941. X
  942. Xproto/ops.pro:    ops.c $(GST)
  943. X    $(CC) $(CFLAGS) GPFILE=proto/ops.pro $(PROPT) ops.c
  944. X
  945. Xparam.o:    param.c  $(GST)
  946. X    $(CC) $(CFLAGS) param.c
  947. X
  948. Xproto/param.pro:    param.c $(GST)
  949. X    $(CC) $(CFLAGS) GPFILE=proto/param.pro $(PROPT) param.c
  950. X
  951. Xquickfix.o:    quickfix.c  $(GST)
  952. X    $(CC) $(CFLAGS) quickfix.c
  953. X
  954. Xproto/quickfix.pro:    quickfix.c $(GST)
  955. X    $(CC) $(CFLAGS) GPFILE=proto/quickfix.pro $(PROPT) quickfix.c
  956. X
  957. Xregexp.o:    regexp.c  $(GST)
  958. X    $(CC) $(CFLAGS) regexp.c
  959. X
  960. Xproto/regexp.pro:    regexp.c $(GST)
  961. X    $(CC) $(CFLAGS) GPFILE=proto/regexp.pro $(PROPT) regexp.c
  962. X
  963. Xregsub.o:    regsub.c  $(GST)
  964. X    $(CC) $(CFLAGS) regsub.c
  965. X
  966. Xproto/regsub.pro:    regsub.c $(GST)
  967. X    $(CC) $(CFLAGS) GPFILE=proto/regsub.pro $(PROPT) regsub.c
  968. X
  969. Xscreen.o:    screen.c  $(GST)
  970. X    $(CC) $(CFLAGS) screen.c
  971. X
  972. Xproto/screen.pro:    screen.c $(GST)
  973. X    $(CC) $(CFLAGS) GPFILE=proto/screen.pro $(PROPT) screen.c
  974. X
  975. Xscript.o:    script.c  $(GST)
  976. X    $(CC) $(CFLAGS) script.c
  977. X
  978. Xproto/script.pro:    script.c $(GST)
  979. X    $(CC) $(CFLAGS) GPFILE=proto/script.pro $(PROPT) script.c
  980. X
  981. Xsearch.o:    search.c  $(GST)
  982. X    $(CC) $(CFLAGS) search.c
  983. X
  984. Xproto/search.pro:    search.c $(GST)
  985. X    $(CC) $(CFLAGS) GPFILE=proto/search.pro $(PROPT) search.c
  986. X
  987. Xstorage.o:    storage.c  $(GST)
  988. X    $(CC) $(CFLAGS) storage.c
  989. X
  990. Xproto/storage.pro:    storage.c $(GST)
  991. X    $(CC) $(CFLAGS) GPFILE=proto/storage.pro $(PROPT) storage.c
  992. X
  993. Xtag.o:    tag.c  $(GST) mark.h
  994. X    $(CC) $(CFLAGS) tag.c
  995. X
  996. Xproto/tag.pro:    tag.c $(GST)
  997. X    $(CC) $(CFLAGS) GPFILE=proto/tag.pro $(PROPT) tag.c
  998. X
  999. Xterm.o:    term.c  $(GST)
  1000. X    $(CC) $(CFLAGS) term.c
  1001. X
  1002. Xproto/term.pro:    term.c $(GST)
  1003. X    $(CC) $(CFLAGS) GPFILE=proto/term.pro $(PROPT) term.c
  1004. X
  1005. Xtermlib.o:    termlib.c  $(GST)
  1006. X    $(CC) $(CFLAGS) termlib.c
  1007. X
  1008. Xproto/termlib.pro:    termlib.c $(GST)
  1009. X    $(CC) $(CFLAGS) GPFILE=proto/termlib.pro $(PROPT) termlib.c
  1010. X
  1011. Xundo.o:    undo.c  $(GST)
  1012. X    $(CC) $(CFLAGS) undo.c
  1013. X
  1014. Xproto/undo.pro:    undo.c $(GST)
  1015. X    $(CC) $(CFLAGS) GPFILE=proto/undo.pro $(PROPT) undo.c
  1016. X
  1017. Xcmdtab.h: cmdtab.tab mkcmdtab
  1018. X    mkcmdtab cmdtab.tab cmdtab.h
  1019. X
  1020. Xmkcmdtab.o:    mkcmdtab.c
  1021. X    $(CC) $(CFLAGS) mkcmdtab.c
  1022. X
  1023. Xmkcmdtab: mkcmdtab.o
  1024. X    $(CC) LINK $(COPTS) mkcmdtab.o PNAME=mkcmdtab
  1025. END_OF_FILE
  1026. if test 7825 -ne `wc -c <'vim/src/makefile.sas'`; then
  1027.     echo shar: \"'vim/src/makefile.sas'\" unpacked with wrong size!
  1028. fi
  1029. chmod +x 'vim/src/makefile.sas'
  1030. # end of 'vim/src/makefile.sas'
  1031. fi
  1032. if test -f 'vim/src/tag.c' -a "${1}" != "-c" ; then 
  1033.   echo shar: Will not clobber existing file \"'vim/src/tag.c'\"
  1034. else
  1035. echo shar: Extracting \"'vim/src/tag.c'\" \(9080 characters\)
  1036. sed "s/^X//" >'vim/src/tag.c' <<'END_OF_FILE'
  1037. X/* vi:ts=4:sw=4
  1038. X *
  1039. X * VIM - Vi IMproved
  1040. X *
  1041. X * Code Contributions By:    Bram Moolenaar            mool@oce.nl
  1042. X *                            Tim Thompson            twitch!tjt
  1043. X *                            Tony Andrews            onecom!wldrdg!tony 
  1044. X *                            G. R. (Fred) Walter        watmath!watcgl!grwalter 
  1045. X */
  1046. X
  1047. X/*
  1048. X * Code to handle tags and the tag stack
  1049. X */
  1050. X
  1051. X#include "vim.h"
  1052. X#include "globals.h"
  1053. X#include "proto.h"
  1054. X#include "param.h"
  1055. X#include "mark.h"
  1056. X
  1057. X#define TAGSTACKSIZE 20
  1058. X
  1059. X/*
  1060. X * the taggy struct is used to store the information about a :tag command:
  1061. X *    the tag name and the cursor position BEFORE the :tag command
  1062. X */
  1063. Xstruct taggy
  1064. X{
  1065. X    char            *tagname;            /* tag name */
  1066. X    struct filemark fmark;                /* cursor position */
  1067. X};
  1068. X
  1069. X/*
  1070. X * the tagstack grows from 0 upwards:
  1071. X * entry 0: older
  1072. X * entry 1: newer
  1073. X * entry 2: newest
  1074. X */
  1075. Xstatic struct taggy tagstack[TAGSTACKSIZE];    /* the tag stack */
  1076. Xstatic int tagstackidx = 0;                /* index just below active entry */
  1077. Xstatic int tagstacklen = 0;                /* number of tags on the stack */
  1078. X
  1079. Xstatic int findtag __ARGS((char *));
  1080. X
  1081. Xstatic char bottommsg[] = "at bottom of tag stack";
  1082. Xstatic char topmsg[] = "at top of tag stack";
  1083. X
  1084. X/*
  1085. X * Jump to tag; handling of tag stack
  1086. X *
  1087. X * *tag != NUL (:tag): jump to new tag, add to tag stack
  1088. X * type == 1 (:pop) || type == 2 (CTRL-T): jump to old position
  1089. X * type == 0 (:tag): jump to old tag
  1090. X */
  1091. X    void
  1092. Xdotag(tag, type, count)
  1093. X    char    *tag;
  1094. X    int        type;
  1095. X    int        count;
  1096. X{
  1097. X    int             i;
  1098. X    struct taggy    temptag;
  1099. X
  1100. X    if (*tag != NUL)                        /* new pattern, add to the stack */
  1101. X    {
  1102. X        /*
  1103. X         * if last used entry is not at the top, put it at the top by rotating
  1104. X         * the stack until it is (the newer entries will be at the bottom)
  1105. X         */
  1106. X        while (tagstackidx < tagstacklen)
  1107. X        {
  1108. X            temptag = tagstack[tagstacklen - 1];
  1109. X            for (i = tagstacklen - 1; i > 0; --i)
  1110. X                tagstack[i] = tagstack[i - 1];
  1111. X            tagstack[0] = temptag;
  1112. X            ++tagstackidx;
  1113. X        }
  1114. X                /* if tagstack is full: remove oldest entry */
  1115. X        if (++tagstacklen > TAGSTACKSIZE)
  1116. X        {
  1117. X            tagstacklen = TAGSTACKSIZE;
  1118. X            free(tagstack[0].tagname);
  1119. X            for (i = 1; i < tagstacklen; ++i)
  1120. X                tagstack[i - 1] = tagstack[i];
  1121. X            --tagstackidx;
  1122. X        }
  1123. X    /*
  1124. X     * remember the tag and the position before the jump
  1125. X     */
  1126. X        tagstack[tagstackidx].tagname = strsave(tag);
  1127. X        tagstack[tagstackidx].fmark.lnum = Curpos.lnum;
  1128. X        tagstack[tagstackidx].fmark.mark.col = Curpos.col;
  1129. X        tagstack[tagstackidx].fmark.mark.ptr = nr2ptr(Curpos.lnum);
  1130. X        tagstack[tagstackidx].fmark.fnum = 0;
  1131. X    }
  1132. X    else if (tagstacklen == 0)                    /* empty stack */
  1133. X    {
  1134. X        emsg("tag stack empty");
  1135. X        return;
  1136. X    }
  1137. X    else if (type)                                /* go to older position */
  1138. X    {
  1139. X        if ((tagstackidx -= count) < 0)
  1140. X        {
  1141. X            tagstackidx = 0;
  1142. X            emsg(bottommsg);
  1143. X        }
  1144. X        else if (tagstackidx >= tagstacklen)    /* must have been count == 0 */
  1145. X        {
  1146. X            emsg(topmsg);
  1147. X            return;
  1148. X        }
  1149. X        if (tagstack[tagstackidx].fmark.mark.ptr == NULL)    /* jump to other file */
  1150. X        {
  1151. X            if (getaltfile(tagstack[tagstackidx].fmark.fnum - 1, tagstack[tagstackidx].fmark.lnum, TRUE))
  1152. X            {
  1153. X                /* emsg(e_notopen); */
  1154. X                return;
  1155. X            }
  1156. X            /* "refresh" this position, so we will not fall off the altfile array */
  1157. X            tagstack[tagstackidx].fmark.fnum = 0;
  1158. X            tagstack[tagstackidx].fmark.mark.ptr = nr2ptr(Curpos.lnum);
  1159. X        }
  1160. X        else
  1161. X            Curpos.lnum = ptr2nr(tagstack[tagstackidx].fmark.mark.ptr, (linenr_t)1);
  1162. X        Curpos.col = tagstack[tagstackidx].fmark.mark.col;
  1163. X        return;
  1164. X    }
  1165. X    else                                    /* go to newer pattern */
  1166. X    {
  1167. X        if ((tagstackidx += count - 1) >= tagstacklen)
  1168. X        {
  1169. X            tagstackidx = tagstacklen - 1;
  1170. X            emsg(topmsg);
  1171. X        }
  1172. X        else if (tagstackidx < 0)            /* must have been count == 0 */
  1173. X        {
  1174. X            emsg(bottommsg);
  1175. X            tagstackidx = 0;
  1176. X            return;
  1177. X        }
  1178. X    }
  1179. X    if (findtag(tagstack[tagstackidx].tagname) > 0)
  1180. X        ++tagstackidx;
  1181. X    else if (bufempty())        /* "vim -t tag" failed, start script now */
  1182. X        startscript();
  1183. X}
  1184. X
  1185. X/*
  1186. X * invalidate the line pointer for all tags
  1187. X * called when abandoning the current file
  1188. X */
  1189. X    void
  1190. Xclrtags()
  1191. X{
  1192. X    int            i;
  1193. X
  1194. X    for (i = 0; i < tagstacklen; ++i)
  1195. X        tagstack[i].fmark.mark.ptr = NULL;
  1196. X}
  1197. X
  1198. X/*
  1199. X * increment the file number for all tags
  1200. X * called when adding a file to the file stack
  1201. X */
  1202. X    void
  1203. Xincrtags()
  1204. X{
  1205. X    int            i;
  1206. X
  1207. X    for (i = 0; i < tagstacklen; ++i)
  1208. X    {
  1209. X#if 0        /* this would take too much time */
  1210. X        if (tagstack[i].fmark.fnum == 0)    /* current file */
  1211. X            tagstack[i].fmark.lnum = ptr2nr(tagstack[i].fmark.mark.ptr, 1);
  1212. X#endif
  1213. X        ++tagstack[i].fmark.fnum;
  1214. X    }
  1215. X}
  1216. X
  1217. X/*
  1218. X * decrement the file number for the tags of the current file
  1219. X * called when not adding the current file name to the file stack
  1220. X */
  1221. X    void
  1222. Xdecrtags()
  1223. X{
  1224. X    int            i;
  1225. X
  1226. X    for (i = 0; i < tagstacklen; ++i)
  1227. X        if (tagstack[i].fmark.fnum == 1)
  1228. X            tagstack[i].fmark.fnum = 0;
  1229. X}
  1230. X
  1231. X/*
  1232. X * Print the tag stack (use the occasion to update the line numbers)
  1233. X */
  1234. X    void
  1235. Xdotags()
  1236. X{
  1237. X    int            i;
  1238. X    char        *name;
  1239. X
  1240. X#ifdef AMIGA
  1241. X    settmode(0);        /* set cooked mode so output can be halted */
  1242. X#endif
  1243. X    outstrn("\n  # TO tag      FROM line in file\n");
  1244. X    for (i = 0; i < tagstacklen; ++i)
  1245. X    {
  1246. X        if (tagstack[i].tagname != NULL)
  1247. X        {
  1248. X            name = fm_getname(&(tagstack[i].fmark));
  1249. X            if (name == NULL)        /* file name not available */
  1250. X                continue;
  1251. X
  1252. X            sprintf(IObuff, "%c%2d %-15s %4ld  %s\n",
  1253. X                i == tagstackidx ? '>' : ' ',
  1254. X                i + 1,
  1255. X                tagstack[i].tagname,
  1256. X                tagstack[i].fmark.lnum,
  1257. X                name);
  1258. X            outstrn(IObuff);
  1259. X        }
  1260. X        flushbuf();
  1261. X    }
  1262. X    if (tagstackidx == tagstacklen)        /* idx at top of stack */
  1263. X        outstrn(">\n");
  1264. X#ifdef AMIGA
  1265. X    settmode(1);
  1266. X#endif
  1267. X    wait_return(TRUE);
  1268. X}
  1269. X
  1270. X/*
  1271. X * findtag(tag) - goto tag
  1272. X *   return 0 for failure, 1 for success
  1273. X */
  1274. X    static int
  1275. Xfindtag(tag)
  1276. X    char           *tag;
  1277. X{
  1278. X    FILE       *tp, *fopen();
  1279. X    char        lbuf[LSIZE];
  1280. X    char        pbuf[LSIZE];            /* search pattern buffer */
  1281. X    char       *fname, *str;
  1282. X    int            cmplen;
  1283. X    char        *m = "No tags file";
  1284. X    register char    *p;
  1285. X    char        *np;                    /* pointer into file name string */
  1286. X    char        sbuf[CMDBUFFSIZE + 1];    /* tag file name */
  1287. X    int            i;
  1288. X    int            save_secure;
  1289. X
  1290. X    if (tag == NULL)        /* out of memory condition */
  1291. X        return 0;
  1292. X
  1293. X    if ((cmplen = p_tl) == 0)
  1294. X        cmplen = 999;
  1295. X
  1296. X    /* get stack of tag file names from tags option */
  1297. X    for (np = p_tags; *np; )
  1298. X    {
  1299. X        for (i = 0; i < CMDBUFFSIZE && *np; ++i)    /* copy next file name into lbuf */
  1300. X        {
  1301. X            if (*np == ' ')
  1302. X            {
  1303. X                ++np;
  1304. X                break;
  1305. X            }
  1306. X            sbuf[i] = *np++;
  1307. X        }
  1308. X        sbuf[i] = 0;
  1309. X        if ((tp = fopen(sbuf, "r")) == NULL)
  1310. X            continue;
  1311. X        while (fgets(lbuf, LSIZE, tp) != NULL)
  1312. X        {
  1313. X            m = "Format error in tags file %s";    /* default error message */
  1314. X
  1315. X        /* find start of file name, after first white space */
  1316. X            fname = lbuf;
  1317. X            skiptospace(&fname);    /* skip tag */
  1318. X            if (*fname == NUL)
  1319. X                goto erret;
  1320. X            *fname++ = '\0';
  1321. X
  1322. X            if (strncmp(lbuf, tag, (size_t)cmplen) == 0)    /* Tag found */
  1323. X            {
  1324. X                fclose(tp);
  1325. X                skipspace(&fname);
  1326. X
  1327. X            /* find start of search command, after second white space */
  1328. X                str = fname;
  1329. X                skiptospace(&str);
  1330. X                if (*str == NUL)
  1331. X                    goto erret;
  1332. X                *str++ = '\0';
  1333. X                skipspace(&str);
  1334. X
  1335. X                /*
  1336. X                 * If the command is a string like "/^function fname"
  1337. X                 * scan through the search string. If we see a magic
  1338. X                 * char, we have to quote it. This lets us use "real"
  1339. X                 * implementations of ctags.
  1340. X                 */
  1341. X                if (*str == '/' || *str == '?')
  1342. X                {
  1343. X                    p = pbuf;
  1344. X                    *p++ = *str++;            /* copy the '/' or '?' */
  1345. X                    if (*str == '^')
  1346. X                        *p++ = *str++;            /* copy the '^' */
  1347. X
  1348. X                    while (*str)
  1349. X                    {
  1350. X                        switch (*str)
  1351. X                        {
  1352. X                        case '\\':    if (str[1] == '(')    /* remove '\' before '(' */
  1353. X                                        ++str;
  1354. X                                    else
  1355. X                                        *p++ = *str++;
  1356. X                                    break;
  1357. X
  1358. X                        case '\r':
  1359. X                        case '\n':    *p++ = pbuf[0];    /* copy '/' or '?' */
  1360. X                                    *str = 'n';        /* no setpcmark() for search */
  1361. X                                    str[1] = NUL;    /* delete NL after CR */
  1362. X                                    break;
  1363. X
  1364. X                                    /*
  1365. X                                     * if string ends in search character: skip it
  1366. X                                     * else escape it with '\'
  1367. X                                     */
  1368. X                        case '/':
  1369. X                        case '?':    if (*str != pbuf[0])    /* not the search char */
  1370. X                                        break;
  1371. X                                                            /* last char */
  1372. X                                    if (str[1] == '\n' || str[1] == '\r')
  1373. X                                    {
  1374. X                                        ++str;
  1375. X                                        continue;
  1376. X                                    }
  1377. X                        case '[':
  1378. X                                    if (!p_magic)
  1379. X                                        break;
  1380. X                        case '^':
  1381. X                        case '*':
  1382. X                        case '.':    *p++ = '\\';
  1383. X                                    break;
  1384. X                        }
  1385. X                        *p++ = *str++;
  1386. X                    }
  1387. X                }
  1388. X                else        /* not a search command, just copy it */
  1389. X                    for (p = pbuf; *str && *str != '\n'; )
  1390. X                        *p++ = *str++;
  1391. X                *p = NUL;
  1392. X
  1393. X                RedrawingDisabled = TRUE;
  1394. X                /* expand filename (for environment variables) */
  1395. X                if ((p = ExpandOne((u_char *)fname, 1, -1)) != NULL)
  1396. X                    fname = p;
  1397. X                i = getfile(fname, NULL, TRUE);
  1398. X                if (p)
  1399. X                    free(p);
  1400. X                if (i <= 0)
  1401. X                {
  1402. X                    set_want_col = TRUE;
  1403. X
  1404. X                    RedrawingDisabled = FALSE;
  1405. X                    save_secure = secure;
  1406. X                    secure = 1;
  1407. X                    docmdline((u_char *)pbuf);
  1408. X                    if (secure == 2)        /* done something that is not allowed */
  1409. X                        wait_return(TRUE);
  1410. X                    secure = save_secure;
  1411. X
  1412. X                        /* print the file message after redraw */
  1413. X                    if (p_im && i == -1)
  1414. X                        stuffReadbuff("\033\007i");    /* ESC CTRL-G i */
  1415. X                    else
  1416. X                        stuffcharReadbuff('\007');        /* CTRL-G */
  1417. X                    return 1;
  1418. X                }
  1419. X                RedrawingDisabled = FALSE;
  1420. X                return 0;
  1421. X            }
  1422. X        }
  1423. X        m = NULL;
  1424. X
  1425. Xerret:
  1426. X        fclose(tp);
  1427. X        if (m)
  1428. X        {
  1429. X            emsg2(m, sbuf);
  1430. X            sleep(1);
  1431. X        }
  1432. X    }
  1433. X    if (m == NULL)
  1434. X        emsg("tag not found");
  1435. X    else if (*np == NUL)
  1436. X        emsg(m);
  1437. X    return 0;
  1438. X}
  1439. END_OF_FILE
  1440. if test 9080 -ne `wc -c <'vim/src/tag.c'`; then
  1441.     echo shar: \"'vim/src/tag.c'\" unpacked with wrong size!
  1442. fi
  1443. chmod +x 'vim/src/tag.c'
  1444. # end of 'vim/src/tag.c'
  1445. fi
  1446. if test -f 'vim/src/vim.h' -a "${1}" != "-c" ; then 
  1447.   echo shar: Will not clobber existing file \"'vim/src/vim.h'\"
  1448. else
  1449. echo shar: Extracting \"'vim/src/vim.h'\" \(8136 characters\)
  1450. sed "s/^X//" >'vim/src/vim.h' <<'END_OF_FILE'
  1451. X/* vi:ts=4:sw=4
  1452. X *
  1453. X * VIM - Vi IMproved
  1454. X *
  1455. X * Code Contributions By:    Bram Moolenaar            mool@oce.nl
  1456. X *                            Tim Thompson            twitch!tjt
  1457. X *                            Tony Andrews            onecom!wldrdg!tony 
  1458. X *                            G. R. (Fred) Walter        watmath!watcgl!grwalter 
  1459. X */
  1460. X
  1461. X#if defined(SYSV_UNIX) || defined(BSD_UNIX)
  1462. X# ifndef UNIX
  1463. X#  define UNIX
  1464. X# endif
  1465. X#endif
  1466. X
  1467. X#include "debug.h"
  1468. X
  1469. X#include <stdio.h>
  1470. X
  1471. X#include <ctype.h>
  1472. X#ifndef DOMAIN
  1473. X#include <limits.h>        /* For MAX_INT, remove this if it does not exist */
  1474. X#endif
  1475. X
  1476. X#ifdef BSD_UNIX
  1477. X# include <strings.h>
  1478. X# ifdef __STDC__
  1479. X#  include <string.h>
  1480. X# endif
  1481. X#else
  1482. X# include <string.h>
  1483. X#endif
  1484. X
  1485. X#include "ascii.h"
  1486. X#include "keymap.h"
  1487. X#include "term.h"
  1488. X#include "macros.h"
  1489. X#ifdef LATTICE
  1490. X# include <sys/types.h>
  1491. X# include <sys/stat.h>
  1492. X#else
  1493. X# ifdef _DCC
  1494. X#  include <sys/stat.h>
  1495. X# else
  1496. X#  ifdef MSDOS 
  1497. X#   include <sys\stat.h>
  1498. X#  else
  1499. X#   ifdef UNIX
  1500. X#     ifndef linux
  1501. X#      define volatile        /* needed for gcc */
  1502. X#      define signed            /* needed for gcc */
  1503. X#    endif
  1504. X#    include <sys/types.h>
  1505. X#    include <sys/stat.h>
  1506. X#   else
  1507. X#     include <stat.h>
  1508. X#   endif
  1509. X#  endif
  1510. X# endif
  1511. X#endif
  1512. X
  1513. X#ifndef DOMAIN
  1514. X# include <stdlib.h>
  1515. X#endif
  1516. X
  1517. X#ifdef AMIGA
  1518. X/*
  1519. X * arpbase.h must be included before functions.h
  1520. X */
  1521. X# include <libraries/arpbase.h>
  1522. X
  1523. X/*
  1524. X * This won't be needed if you have a version of Lattice 4.01 without broken
  1525. X * break signal handling.
  1526. X */
  1527. X#include <signal.h>
  1528. X#endif
  1529. X
  1530. X#ifndef AMIGA
  1531. X/*
  1532. X * For the Amiga we use a version of getenv that does local variables under 2.0
  1533. X */
  1534. X#define vimgetenv(x) getenv(x)
  1535. X#endif
  1536. X
  1537. X#ifdef AZTEC_C
  1538. X# include <functions.h>
  1539. X# define __ARGS(x)    x
  1540. X# define __PARMS(x)    x
  1541. X#endif
  1542. X
  1543. X#ifdef SASC
  1544. X# include <clib/exec_protos.h>
  1545. X# define __ARGS(x)    x
  1546. X# define __PARMS(x)    x
  1547. X#endif
  1548. X
  1549. X#ifdef _DCC
  1550. X# include <functions.h>
  1551. X# define __ARGS(x)    x
  1552. X# define __PARMS(x)    x
  1553. X#endif
  1554. X
  1555. X#ifdef __TURBOC__
  1556. X# define __ARGS(x) x
  1557. X#endif
  1558. X
  1559. X#ifdef MSDOS
  1560. X# include <dos.h>
  1561. X# include <dir.h>
  1562. X#endif
  1563. X
  1564. X#ifdef SOLARIS
  1565. X# include <stdlib.h>
  1566. X# include <unistd.h>
  1567. X#endif
  1568. X
  1569. X#ifdef UNIX
  1570. X# ifdef SCO
  1571. X#  undef M_XENIX
  1572. X#  include <sys/ndir.h>        /* for MAXNAMLEN */
  1573. X# else
  1574. X#  if defined(SOLARIS) || defined(AIX)
  1575. X#   include <dirent.h>        /* for MAXNAMLEN */
  1576. X#  else
  1577. X#   include <sys/dir.h>        /* for MAXNAMLEN */
  1578. X#  endif
  1579. X# endif
  1580. X# ifdef USL
  1581. X#  define MAXNAMLEN DIRSIZ
  1582. X# endif
  1583. X# if defined(UFS_MAXNAMLEN) && !defined(MAXNAMLEN)
  1584. X#  define MAXNAMLEN UFS_MAXNAMLEN        /* for dynix/ptx */
  1585. X# endif
  1586. X# if defined(NAME_MAX) && !defined(MAXNAMLEN)
  1587. X#  define MAXNAMLEN NAME_MAX            /* for Linux before .99p3 */
  1588. X# endif
  1589. X# if !defined(MAXNAMLEN)
  1590. X#  define MAXNAMLEN 512                 /* for all other Unix */
  1591. X# endif
  1592. X#endif
  1593. X
  1594. X#ifdef UNICOS        /* would make sense for other systems too */
  1595. X# include <errno.h>
  1596. X#endif
  1597. X
  1598. X#if defined(__STDC__) || defined(__GNUC__)
  1599. X# ifndef __ARGS
  1600. X#  define __ARGS(x) x
  1601. X# endif /* __ARGS */
  1602. X# if defined(_SEQUENT_)
  1603. X#  include "ptx_stdlib.h"
  1604. X# endif
  1605. X# if defined(sun) && !defined(SOLARIS)
  1606. X#  include "sun_stdlib.h"
  1607. X# endif
  1608. X# if defined(linux) || defined(SCO) || defined(M_UNIX)
  1609. X#  include <unistd.h>  /* may make sense for others too. jw. */
  1610. X# endif
  1611. X#else /*__STDC__*/
  1612. X# if defined(_SEQUENT_) && !defined(_STDLIB_H_)
  1613. X  extern char *getenv();
  1614. X  extern void *malloc();
  1615. X# endif
  1616. X#endif /* __STDC__ */
  1617. X
  1618. X#ifndef __ARGS
  1619. X#define __ARGS(x)    ()
  1620. X#endif
  1621. X#ifndef __PARMS
  1622. X#define __PARMS(x)    ()
  1623. X#endif
  1624. X
  1625. X/*
  1626. X * for systems that do not allow free(NULL)
  1627. X */
  1628. X#ifdef NO_FREE_NULL
  1629. X# define free(x)    nofreeNULL(x)
  1630. X  extern void nofreeNULL __ARGS((void *));
  1631. X#endif
  1632. X
  1633. X/*
  1634. X * fnamecmp() is used to compare filenames.
  1635. X * On some systems case in a filename does not matter, on others it does.
  1636. X * (this does not account for maximum name lengths, thus it is not 100% accurate!)
  1637. X */
  1638. X#if defined(AMIGA) || defined(MSDOS)
  1639. X# define fnamecmp(x, y) stricmp((x), (y))
  1640. X#else
  1641. X# define fnamecmp(x, y) strcmp((x), (y))
  1642. X#endif
  1643. X
  1644. X/* flags for updateScreen() */
  1645. X#define VALID                    90    /* buffer not changed */
  1646. X#define NOT_VALID                91    /* buffer changed */
  1647. X#define VALID_TO_CURSCHAR        92    /* buffer before cursor not changed */
  1648. X#define INVERTED                93    /* redisplay inverted part */
  1649. X#define CLEAR                    94    /* first clear screen */
  1650. X#define CURSUPD                    95    /* update cursor first */
  1651. X
  1652. X/* values for State */
  1653. X/*
  1654. X * The lowest three bits are used to distinguish normal/cmdline/insert+replace
  1655. X * mode. This is used for mapping.
  1656. X */
  1657. X#define NORMAL                    0x01
  1658. X#define NORMAL_BUSY                0x11    /* busy interpreting a command */
  1659. X#define CMDLINE                 0x02
  1660. X#define INSERT                    0x04
  1661. X#define REPLACE                 0x24    /* replace mode */
  1662. X#define HELP                    0x30    /* displaying help */
  1663. X#define NOMAPPING                 0x40    /* no :mapping mode for vgetc() */
  1664. X#define HITRETURN                0x51    /* waiting for a return */
  1665. X#define SETWSIZE                0x60    /* window size has changed */
  1666. X#define ABBREV                    0x80    /* abbreviation instead of mapping */
  1667. X
  1668. X/* directions */
  1669. X#define FORWARD                  1
  1670. X#define BACKWARD                 -1
  1671. X
  1672. X/* for GetChars */
  1673. X#define T_PEEK                    1    /* do not wait at all */
  1674. X#define T_WAIT                    2    /* wait for a short time */
  1675. X#define T_BLOCK                    3    /* wait forever */
  1676. X
  1677. X#define VISUALLINE            MAXCOL    /* Visual is linewise */
  1678. X
  1679. X/*
  1680. X * Names for the EXRC, HELP and temporary files.
  1681. X * Some of these may have been defined in the makefile.
  1682. X */
  1683. X#ifndef SYSVIMRC_FILE
  1684. X# define SYSVIMRC_FILE    "s:.vimrc"
  1685. X#endif
  1686. X#ifndef SYSEXRC_FILE
  1687. X# define SYSEXRC_FILE    "s:.exrc"
  1688. X#endif
  1689. X#ifndef VIMRC_FILE
  1690. X# define VIMRC_FILE        ".vimrc"
  1691. X#endif
  1692. X#ifndef EXRC_FILE
  1693. X# define EXRC_FILE        ".exrc"
  1694. X#endif
  1695. X#ifndef VIM_HLP
  1696. X# define VIM_HLP        "vim:vim.hlp"
  1697. X#endif
  1698. X#define TMPNAME1        "t:viXXXXXX"
  1699. X#define TMPNAME2        "t:voXXXXXX"
  1700. X#define TMPNAMELEN        12
  1701. X
  1702. X/*
  1703. X * Boolean constants
  1704. X */
  1705. X#ifndef TRUE
  1706. X#define FALSE    (0)            /* note: this is an int, not a long! */
  1707. X#define TRUE    (1)
  1708. X#endif
  1709. X
  1710. X/*
  1711. X * Maximum screen width
  1712. X */
  1713. X#define MAX_COLUMNS 255L
  1714. X
  1715. X/*
  1716. X * Buffer sizes
  1717. X */
  1718. X#ifdef UNIX        /* Unix has plenty of memory */
  1719. X# define CMDBUFFSIZE    1024    /* size of the command processing buffer */
  1720. X#else
  1721. X# define CMDBUFFSIZE    256        /* size of the command processing buffer */
  1722. X#endif
  1723. X
  1724. X#define LSIZE        512            /* max. size of a line in the tags file */
  1725. X
  1726. X#define IOSIZE       (1024+1)     /* file i/o and sprintf buffer size */
  1727. X
  1728. X#define    TERMBUFSIZE    1024
  1729. X
  1730. X#ifdef linux
  1731. X# define TBUFSZ 2048            /* buffer size for termcap entry */
  1732. X#else
  1733. X# define TBUFSZ 1024            /* buffer size for termcap entry */
  1734. X#endif
  1735. X
  1736. X/*
  1737. X * maximum length of a file name path
  1738. X */
  1739. X#ifdef UNIX
  1740. X# define MAXPATHL    1024        /* Unix has long paths and plenty of memory */
  1741. X#else
  1742. X# define MAXPATHL    128            /* not too long to put name on stack */
  1743. X#endif
  1744. X
  1745. X#ifdef MSDOS
  1746. X# define BASENAMELEN    8        /* length of base of file name */
  1747. X#else
  1748. X# ifdef UNIX
  1749. X#  define BASENAMELEN    (MAXNAMLEN - 5)
  1750. X# else
  1751. X#  define BASENAMELEN    26        /* Amiga */
  1752. X# endif
  1753. X#endif
  1754. X
  1755. X#ifdef MSDOS
  1756. X# define WRITEBIN    "wb"        /* no CR-LF translation */
  1757. X# define READBIN    "rb"
  1758. X#else
  1759. X# define WRITEBIN    "w"
  1760. X# define READBIN    "r"
  1761. X#endif
  1762. X
  1763. X#define CHANGED   set_Changed()
  1764. X#define UNCHANGED Changed = 0
  1765. X
  1766. X#if !defined(BSD_UNIX) && !defined(linux) && !defined(SASC) && !defined(__sgi) && !defined(SCO) && !defined(hpux) && !defined(SOLARIS) && !defined(M_UNIX) && !defined(AIX) && !defined(_UTS) && !defined(USL)
  1767. Xtypedef unsigned char    u_char;        /* shorthand */
  1768. Xtypedef unsigned short    u_short;    /* shorthand */
  1769. Xtypedef unsigned int    u_int;        /* shorthand */
  1770. Xtypedef unsigned long    u_long;        /* shorthand */
  1771. X#endif
  1772. X
  1773. X#if defined(BSD_UNIX) && !defined(__STDC__)
  1774. X# define strchr(ptr, c)            index((ptr), (c))
  1775. X# define strrchr(ptr, c)        rindex((ptr), (c))
  1776. X#endif
  1777. X
  1778. X#ifdef BSD_UNIX
  1779. X# define memset(ptr, c, size)    bsdmemset((ptr), (c), (size))
  1780. Xchar *bsdmemset __ARGS((char *, int, long));
  1781. X#endif
  1782. X
  1783. Xtypedef long            linenr_t;    /* line number type */
  1784. Xtypedef unsigned        colnr_t;    /* column number type */
  1785. Xtypedef struct fpos        FPOS;        /* file position type */
  1786. X
  1787. X#define INVLNUM (0x7fffffff)        /* invalid line number */
  1788. X#ifdef MAX_INT
  1789. X# define MAXCOL    MAX_INT                /* maximum column number */
  1790. X#else
  1791. X# define MAXCOL    32767                /* maximum column number */
  1792. X#endif
  1793. X
  1794. Xstruct fpos
  1795. X{
  1796. X        linenr_t        lnum;    /* line number */
  1797. X        colnr_t         col;    /* column number */
  1798. X};
  1799. X
  1800. X/*
  1801. X * Some versions of isspace() handle Meta character like a space!
  1802. X * This define fixes that.
  1803. X */
  1804. X#ifdef VIM_ISSPACE
  1805. X# ifdef isspace
  1806. X#  undef isspace
  1807. X# endif /* isspace */
  1808. X# define isspace(x)  (((x) >= 9 && (x) <= 13) || ((x) == 32))
  1809. X#endif /* VIM_ISSPACE */
  1810. END_OF_FILE
  1811. if test 8136 -ne `wc -c <'vim/src/vim.h'`; then
  1812.     echo shar: \"'vim/src/vim.h'\" unpacked with wrong size!
  1813. fi
  1814. chmod +x 'vim/src/vim.h'
  1815. # end of 'vim/src/vim.h'
  1816. fi
  1817. echo shar: End of archive 4 \(of 25\).
  1818. cp /dev/null ark4isdone
  1819. MISSING=""
  1820. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ; do
  1821.     if test ! -f ark${I}isdone ; then
  1822.     MISSING="${MISSING} ${I}"
  1823.     fi
  1824. done
  1825. if test "${MISSING}" = "" ; then
  1826.     echo You have unpacked all 25 archives.
  1827.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1828. else
  1829.     echo You still need to unpack the following archives:
  1830.     echo "        " ${MISSING}
  1831. fi
  1832. ##  End of shell archive.
  1833. exit 0
  1834.  
  1835. ===============================================================================
  1836. Bram Moolenaar                             | DISCLAIMER:  This  note  does  not
  1837. Oce Nederland B.V., Research & Development | necessarily represent the position
  1838. p.o. box 101, 5900 MA  Venlo               | of  Oce-Nederland  B.V.  Therefore
  1839. The Netherlands        phone +31 77 594077 | no liability or responsibility for
  1840. UUCP: mool@oce.nl        fax +31 77 595473 | whatever will be accepted.
  1841.  
  1842. exit 0 # Just in case...
  1843.