home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / APPS / BUSINESS / TTYPRT36.ZIP / ED_CURSE.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-09-01  |  6.7 KB  |  230 lines

  1. {These are support routines to the mini-editor (cursor movement}
  2.  
  3. PROCEDURE ed_up;
  4. (*****************************************************************************
  5. move cursor up one line
  6. ******************************************************************************)
  7. BEGIN
  8.     IF ln>top_ln THEN
  9.         ln:=ln-1
  10.     ELSE
  11.         IF top_ln>1 THEN BEGIN
  12.             top_ln:=top_ln-1;
  13.             ln:=ln-1;
  14.             dr_page
  15.         END
  16.     {end}
  17. END; {PROCEDURE ed_up}
  18.  
  19. PROCEDURE ed_down;
  20. (*****************************************************************************
  21. move cursor down one line
  22. ******************************************************************************)
  23. BEGIN
  24.     If ln-top_ln+1<Ln_Pg THEN
  25.         ln:=ln+1
  26.     ELSE
  27.         IF ln<Max_Ed_Lines THEN BEGIN
  28.             top_ln:=top_ln+1;
  29.             ln:=ln+1;
  30.             dr_page
  31.         END
  32.     {end}
  33. END; {PROCEDURE ed_down}
  34.  
  35. PROCEDURE ed_left;
  36. (*****************************************************************************
  37. move cursor left one space
  38. ******************************************************************************)
  39. BEGIN
  40.     IF cc>1 THEN
  41.         cc:=cc-1
  42.     ELSE
  43.         IF top_ln<ln THEN BEGIN
  44.             ln:=ln-1;
  45.             cc:=Max_Tty_Width
  46.         END ELSE
  47.             IF top_ln>1 THEN BEGIN
  48.                 top_ln:=top_ln-1;
  49.                 ln:=ln-1;
  50.                 cc:=Max_Tty_Width;
  51.                 dr_page
  52.             END
  53.         {end}
  54.     {end}
  55. END; {PROCEDURE ed_left}
  56.  
  57. PROCEDURE ed_right;
  58. (*****************************************************************************
  59. move one space right (cursor one position forward)
  60. ******************************************************************************)
  61. BEGIN
  62.     IF cc<Max_Tty_Width+1 THEN
  63.         cc:=cc+1
  64.     ELSE
  65.         IF ln-top_ln+1<Ln_Pg THEN BEGIN
  66.             cc:=1;
  67.             ln:=ln+1
  68.         END ELSE
  69.             IF ln<Max_Ed_Lines THEN BEGIN
  70.                 top_ln:=top_ln+1;
  71.                 ln:=ln+1;
  72.                 cc:=1;
  73.                 dr_page
  74.             END
  75.         {end}
  76.     {end}
  77. END; {PROCEDURE ed_right}
  78.  
  79. PROCEDURE ed_pgup;
  80. (*****************************************************************************
  81. move one page up
  82. ******************************************************************************)
  83. BEGIN
  84.     IF top_ln>Ln_Pg THEN BEGIN
  85.         top_ln:=top_ln-Ln_Pg;
  86.         ln:=ln-Ln_Pg
  87.     END ELSE BEGIN
  88.         top_ln:=1;
  89.         ln:=1
  90.     END;
  91.     dr_page
  92. END; {PROCEDURE ed_pgup}
  93.  
  94. PROCEDURE ed_pgdn;
  95. (*****************************************************************************
  96. move one page down
  97. ******************************************************************************)
  98. BEGIN
  99.     IF top_ln+Ln_Pg<Max_Ed_Lines-Ln_Pg+1 THEN BEGIN
  100.         top_ln:=top_ln+Ln_Pg;
  101.         ln:=ln+Ln_Pg
  102.     END ELSE BEGIN
  103.         top_ln:=Max_Ed_Lines-Ln_Pg+1;
  104.         ln:=Max_Ed_Lines
  105.     END;
  106.     dr_page
  107. END; {PROCEDURE ed_pgdn}
  108.  
  109. PROCEDURE ed_tof;
  110. (*****************************************************************************
  111. move to top of file
  112. ******************************************************************************)
  113. BEGIN
  114.     top_ln:=1;
  115.     ln:=1;
  116.     cc:=1;
  117.     dr_page
  118. END; {PROCEDURE ed_tof}
  119.  
  120. PROCEDURE ed_eof;
  121. (*****************************************************************************
  122. move to end of file
  123. ******************************************************************************)
  124. BEGIN
  125.     top_ln:=last_ln-15;
  126.     ln:=last_ln+1;
  127.     cc:=1;
  128.     dr_page
  129. END; {PROCEDURE ed_eof}
  130.  
  131. PROCEDURE ed_bol;
  132. (*****************************************************************************
  133. move to beginning of line
  134. ******************************************************************************)
  135. BEGIN
  136.     cc:=1;
  137. END; {PROCEDURE ed_bol}
  138.  
  139. PROCEDURE ed_eol;
  140. (*****************************************************************************
  141. move to end of line (last non-blank character on line}
  142. ******************************************************************************)
  143. VAR i:INTEGER;
  144. BEGIN
  145.     cc:=Max_Tty_Width;
  146.     WHILE (ed_text[ln][cc]=' ') AND (cc>1) DO
  147.         cc:=cc-1;
  148.     cc:=cc+1
  149. END; {PROCEDURE ed_eol}
  150.  
  151. PROCEDURE ed_home;
  152. (*****************************************************************************
  153. move to top of screen
  154. ******************************************************************************)
  155. BEGIN
  156.     ln:=top_ln;
  157.     cc:=1
  158. END; {PROCEDURE ed_home}
  159.  
  160. PROCEDURE ed_end;
  161. (*****************************************************************************
  162. move to end of screen
  163. ******************************************************************************)
  164. BEGIN
  165.     cc:=1;
  166.     ln:=top_ln+Ln_Pg-1
  167. END; {PROCEDURE ed_end}
  168.  
  169. PROCEDURE ed_fwdwd;
  170. (*****************************************************************************
  171. forward a word
  172. ******************************************************************************)
  173. BEGIN
  174.     IF ed_text[ln][cc]<>' ' THEN        {move to end of present word}
  175.     WHILE (ed_text[ln][cc]<>' ') AND (cc<Max_Tty_Width) DO cc:=cc+1;
  176.     {end}
  177.     IF cc=Max_Tty_Width THEN BEGIN    {if present word runs all}
  178.         cc:=1;                          {the way to the right margin}
  179.         ed_down
  180.     END;
  181.     WHILE (ed_text[ln][cc]=' ') AND (cc<Max_Tty_Width) DO
  182.         cc:=cc+1;                       {find first non-blank space}
  183.     IF (ed_text[ln][cc]=' ') THEN BEGIN
  184.         cc:=1;
  185.         ed_down
  186.     END
  187. END; {PROCEDURE ed_fwdwd}
  188.  
  189. PROCEDURE ed_bckwd;
  190. (*****************************************************************************
  191. backwards one word
  192. ******************************************************************************)
  193. BEGIN
  194.     IF cc>1 THEN cc:=cc-1;
  195.     IF (cc=1) AND (ln>1) THEN BEGIN
  196.         ed_up;
  197.         cc:=Max_Tty_Width
  198.     END;
  199.     IF ed_text[ln][cc]=' ' THEN
  200.         WHILE (ed_text[ln][cc]=' ') AND (cc>1) DO cc:=cc-1;
  201.     {end}
  202.     WHILE (ed_text[ln][cc]<>' ') AND (cc>1) DO cc:=cc-1;
  203.     IF (ed_text[ln][cc]=' ') AND (cc>1) THEN ed_right;
  204. END; {PROCEDURE ed_bckwd}
  205.  
  206. PROCEDURE ed_scrlup;
  207. (*****************************************************************************
  208. scroll up (forward) one line
  209. ******************************************************************************)
  210. BEGIN
  211.     IF top_ln+Ln_Pg<Max_Ed_Lines THEN BEGIN
  212.         IF ln=top_ln THEN ln:=ln+1;
  213.         top_ln:=top_ln+1;
  214.         dr_page
  215.     END
  216. END; {PROCEDURE ed_scrlup}
  217.  
  218. PROCEDURE ed_scrldown;
  219. (*****************************************************************************
  220. scroll down (back) one line
  221. ******************************************************************************)
  222. BEGIN
  223.     IF top_ln>1 THEN BEGIN
  224.         IF ln=top_ln+19 THEN ln:=ln-1;
  225.         top_ln:=top_ln-1;
  226.         dr_page
  227.     END
  228. END; {PROCEDURE ed_scrldown}
  229.  
  230.