home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / CMDS / pvic_10a.lzh / SRCE / pvic.h < prev    next >
Text File  |  1998-05-10  |  11KB  |  597 lines

  1. /*
  2. * Version.
  3. */
  4.  
  5. #define VERSION_STRING  "PVIC 1.0a"
  6.  
  7.  
  8.  
  9. /*
  10. * Declarations of compiler steering symbols
  11. */
  12. #define HAVE_STRING 0    /* set to 1 if your compiler uses string.h */
  13. #define HAVE_INDEX  1    /* set to 1 if your compiler has index()   */
  14.                         /* and rindex() */
  15.  
  16.  
  17.  
  18. /* 
  19. * Declarations of standard library functions.
  20. */
  21.  
  22. #if HAVE_STRING == 1
  23. #include <string.h>
  24. #else
  25. #include <strings.h>
  26. #endif
  27.  
  28. char *malloc();
  29. char *getenv();
  30.  
  31. #if HAVE_INDEX == 0
  32. #define index(s,c) strchr(x,c)
  33. #define rindex(s,c) strrchr(x,c)
  34. #endif
  35.  
  36.  
  37.  
  38. /*
  39. *  Definitions for all control characters.
  40. */
  41.  
  42. #define CTRL_A          '\001'
  43. #define CTRL_B           '\002'
  44. #define CTRL_C           '\003'
  45. #define CTRL_D           '\004'
  46. #define CTRL_E           '\005'
  47. #define CTRL_F           '\006'
  48. #define CTRL_G           '\007'
  49. #define CTRL_H           '\010'
  50. #define CTRL_I           '\011'
  51. #define CTRL_J           '\012'
  52. #define CTRL_K           '\013'
  53. #define CTRL_L           '\014'
  54. #define CTRL_M           '\015'
  55. #define CTRL_N           '\016'
  56. #define CTRL_O           '\017'
  57. #define CTRL_P           '\020'
  58. #define CTRL_Q           '\021'
  59. #define CTRL_R           '\022'
  60. #define CTRL_S           '\023'
  61. #define CTRL_T           '\024'
  62. #define CTRL_U           '\025'
  63. #define CTRL_V           '\026'
  64. #define CTRL_W           '\027'
  65. #define CTRL_X           '\030'
  66. #define CTRL_Y           '\031'
  67. #define CTRL_Z           '\032'
  68. #define ESC                 '\033'
  69. #define CTRL_BACKSLASH         '\034'
  70. #define CTRL_RIGHT_BRACKET     '\035'
  71. #define CTRL_CIRCUMFLEX      '\036'
  72. #define CTRL_UNDERSCORE       '\037'
  73. #define DEL                '\177'
  74.  
  75.  
  76.  
  77.  
  78.  
  79. /*
  80. * General type and structure definitions.
  81. */
  82.  
  83. typedef struct line {
  84.     struct line *prev;    /* Previous line. */
  85.     struct line *next;     /* Next line. */
  86.     char *s;        /* Text for this line. */
  87.     int size;         /* Actual size of space at 's'. */
  88.     unsigned long num;     /* Line number. */
  89. } LINE;
  90.  
  91. typedef struct param {
  92.     char *fullname;     /* Full parameter name. */
  93.     char *shortname;    /* Permissible abbreviation. */
  94.     int value;          /* Parameter value. */
  95.     int flags;
  96. } PARAM;
  97.  
  98. typedef struct lptr {
  99.     struct line *linep;     /* Line we're referencing. */
  100.     int index;         /* Position within that line. */
  101. } LPTR;
  102.  
  103. typedef struct charinfo {
  104.     char ch_size;
  105.     char *ch_str;
  106. } CHARINFO;
  107.  
  108.  
  109.  
  110.  
  111.  
  112. /* 
  113. * General defines.
  114. */
  115.  
  116. #define STATUS_NORMAL         0
  117. #define STATUS_INSERT         1
  118. #define STATUS_REPLACE         2
  119. #define STATUS_CMDLINE         3
  120.  
  121. #define SEARCH_FORWARD         4
  122. #define SEARCH_BACKWARD     5
  123.  
  124. #define CHANGED          (changed=1)
  125. #define UNCHANGED         (changed=0)
  126.  
  127. /* SLOP is the amount of extra space we get for text on a line during
  128. editing operations that need more space. This keeps us from calling
  129. malloc every time we get a character during insert mode. No extra
  130. space is allocated when the file is initially read. */
  131. #define SLOP             10
  132.  
  133. /* LINEINC is the gap we leave between the artificial line numbers. This
  134. helps to avoid renumbering all the lines every time a new line is
  135. inserted. */
  136. #define LINEINC         10
  137.  
  138. #define LINEOF(x)         ((x)->linep->num)
  139.  
  140. /* Operators. */
  141. #define NOP         0      /* No pending operation. */
  142. #define DELETE         1
  143. #define YANK         2
  144. #define CHANGE         3
  145. #define LSHIFT         4
  146. #define RSHIFT         5
  147. #define FILTER         6
  148. #define TILDE         7
  149.  
  150. /* When a cursor motion command is made, it is marked as being a character
  151. or line oriented motion. Then, if an operator is in effect, the operation
  152. becomes character or line oriented accordingly.
  153. Character motions are marked as being inclusive or not. Most char.
  154. motions are inclusive, but some (e.g. 'w') are not. */
  155. #define MBAD         (-1)      /* Bad motion type marks unusable yank buf. */
  156. #define MCHAR         0
  157. #define MLINE         1
  158.  
  159. /* Macro to get current character from a LPTR * value. */
  160. #define CHAR(lpp)    lpp->linep->s[lpp->index]
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172. /*
  173. * alloc.c
  174. */
  175.  
  176. char *alloc();
  177. char *strsave();
  178. char *mkstr();
  179. int alloc_screen();
  180. void file_alloc();
  181. void freeall();
  182. LINE *newline();
  183. int buffer_empty();
  184. int buf1line();
  185. int line_empty();
  186. int end_of_line();
  187. int can_increase();
  188.  
  189.  
  190.  
  191.  
  192. /*
  193. * cmdline.c
  194. */
  195.  
  196. void do_command_line();
  197. void msg();
  198. void error_message();
  199. void show_message();
  200. void goto_command();
  201. void wait_return();
  202. void bad_command();
  203. int do_e_command();
  204. char *getcmdln();
  205.  
  206.  
  207.  
  208.  
  209. /*
  210. * edit.c
  211. */
  212.  
  213. void edit();
  214. void insert_char();
  215. void get_out();
  216. void scroll_up();
  217. void scroll_down();
  218. void begin_line();
  219. int one_right();
  220. int one_left();
  221. int one_up();
  222. int one_down();
  223.  
  224.  
  225.  
  226.  
  227. /*
  228. * fileio.c
  229. */
  230.  
  231. void file_message();
  232. void renum();
  233. int read_file();
  234. int write_it();
  235.  
  236.  
  237. /*
  238. * general.c
  239. */
  240.  
  241. void beep();
  242. void loop_n_seconds();
  243. void pvic_init();
  244. void pvic_exit();
  245. char to_lower();
  246. char to_upper();
  247. int is_upper();
  248. int is_lower();
  249. int is_alpha();
  250. int is_space();
  251. int is_digit();
  252. void rename_file();
  253.  
  254.  
  255. /*
  256. * help.c
  257. */
  258.  
  259. int help();
  260.  
  261.  
  262.  
  263.  
  264. /*
  265. * linefunc.c
  266. */
  267.  
  268. LPTR *next_line();
  269. LPTR *previous_line();
  270. LPTR *advance_column();
  271. LPTR *next_char();
  272. LPTR *previous_char();
  273.  
  274.  
  275.  
  276.  
  277. /*
  278. * main.c
  279. */
  280.  
  281. void put_string_into_input_buffer();
  282. void put_int_into_input_buffer();
  283. void do_mlines();
  284. int  get_char_from_input_buffer();
  285. int is_input_pending();
  286.  
  287. extern char **files;                /* used for "n" and "rew" */
  288. extern int number_of_files;
  289. extern int current_file;
  290. extern int need_redraw;
  291. extern int did_ai;
  292. extern int number_of_files;
  293. extern int current_file;
  294. extern int interactive;
  295. extern char **files;
  296. extern int current_file;
  297. extern struct param params[];
  298. extern CHARINFO chars[];
  299. extern int current_status;
  300. extern int current_lines;
  301. extern int current_columns;
  302. extern char *real_screen;
  303. extern char *next_screen;
  304. extern char *file_name;
  305. extern LPTR *file_memory;
  306. extern LPTR *top_of_file;
  307. extern LPTR *end_of_file;
  308. extern LPTR *top_char;
  309. extern LPTR *bottom_char;
  310. extern LPTR *cursor_char;
  311. extern LPTR *start_insert;
  312. extern int cursor_row;
  313. extern int cursor_column;
  314. extern int cursor_virtual_column;
  315. extern int wanted_cursor_column;
  316. extern int set_wanted_cursor_column;
  317. extern int prenum;
  318. extern int changed;
  319. extern char redo_buffer[];
  320. extern char insert_buffer[];
  321. extern char *insert_pointer;
  322. extern int insert_n;
  323. extern char *shell_name;
  324. extern char **environ_array;
  325.  
  326.  
  327.  
  328. /*
  329. * mark.c
  330. */
  331.  
  332. void set_pc_mark();
  333. void clear_all();
  334. void clear_mark();
  335. int set_mark();
  336. LPTR *get_mark();
  337.  
  338.  
  339.  
  340.  
  341. /*
  342. * misccmds.c
  343. */
  344.  
  345. void open_command();
  346. void file_info();
  347. void inschar();
  348. void delete_line();
  349. int delete_char();
  350. int  cntllines();
  351. int plines();
  352. LPTR *goto_line();
  353.  
  354.  
  355.  
  356.  
  357. /*
  358. * normal.c
  359. */
  360.  
  361. void normal();
  362.  
  363. extern int operator;          /* Current pending operator. */
  364.  
  365. extern int mtype;           /* type of the current cursor motion */
  366. extern int mincl;           /* true if char motion is inclusive */
  367.  
  368. extern LPTR startop;          /* cursor pos. at start of operator */
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376. /*
  377. *  param.c
  378. */
  379.  
  380. /* Flags used for the parameters in the params array. */
  381. #define BOOLEAN_PARAMETER      0x01     /* The parameter is boolean. */
  382. #define NUMERIC_PARAMETER      0x02     /* The parameter is numeric. */
  383. #define PARAMETER_HAS_CHANGED      0x04     /* The parameter has been changed. */
  384.  
  385. /* The following are the indices for the numeric parameters 
  386. in the params array for each parameter.  */
  387. #define PARAMETER_LINES      0    /* Lines. */
  388. #define PARAMETER_REPORT     1    /* Report. */
  389. #define PARAMETER_SCROLL     2    /* Scroll size. */
  390. #define PARAMETER_TABSTOP     3    /* Tab size. */
  391.  
  392. /* The following are the indices for the boolean parameters 
  393. in the params array for each parameter. */
  394. #define PARAMETER_AUTOINDENT     4     /* auto-indent */
  395. #define PARAMETER_BACKUP     5    /* make backups when 
  396.                     writing out files */
  397. #define PARAMETER_ERRORBELLS     6    /* error bells */
  398. #define PARAMETER_IGNORECASE     7    /* ignore case in searches */
  399. #define PARAMETER_LIST       8    /* show tabs and newlines 
  400.                           graphically */
  401. #define PARAMETER_MODELINES     9    /* enables mode-lines processing */
  402. #define PARAMETER_NUMBER     10    /* number lines on the screen */
  403. #define PARAMETER_SHOWMATCH     11    /* show_match */
  404. #define PARAMETER_SHOWMODE     12    /* show mode */
  405. #define PARAMETER_VBELL      13    /* visual bell */
  406. #define PARAMETER_WRAPSCAN     14    /* wrap scan */
  407.  
  408. /* Macro to get the value of a parameter.  */
  409. #define PARAMETER_VALUE(n) (params[n].value)
  410.  
  411. void do_set();
  412.  
  413.  
  414.  
  415. /*
  416. * ptrfunc.c
  417. */
  418.  
  419. int inc();
  420. int dec();
  421. int gchar();
  422. void pchar();
  423. void pswap();
  424. int lt();
  425. int equal();
  426. int ltoreq();
  427.  
  428.  
  429.  
  430.  
  431. /*
  432. * screen.c
  433. */
  434.  
  435. void update_screen();
  436. void update_line();
  437. void clear_screen();
  438. void update_cursor();
  439. void prt_line();
  440. extern int need_redraw;
  441.  
  442.  
  443.  
  444.  
  445. /*
  446. * search.c
  447. */
  448.  
  449. void do_sub();
  450. void do_glob();
  451. int search_char();
  452. int crep_search();
  453. int find_function();
  454. int do_search();
  455. int rep_search();
  456. LPTR *show_match();
  457. LPTR *forward_word();
  458. LPTR *back_word();
  459. LPTR *end_word();
  460.  
  461.  
  462.  
  463.  
  464. /*
  465. * tagcmd.c
  466. */
  467.  
  468. void do_tag();
  469. void do_untag();
  470.  
  471.  
  472.  
  473.  
  474.  
  475. /* 
  476. * termin.c 
  477. */
  478.  
  479. void init_translate_table();
  480. void read_input();
  481. void put_char_into_input_buffer();
  482. void put_string_into_input_buffer();
  483. void put_int_into_input_buffer();
  484. int is_input_pending();
  485. void test_n_seconds_for_input();
  486.  
  487.  
  488.  
  489.  
  490. /*  
  491. * termcap.c 
  492. */
  493.  
  494. void init_termcap();
  495. char *read_termcap_entry();
  496. char *get_termcap_string();
  497. int get_termcap_number();
  498.  
  499. extern int termcap_lines;
  500. extern int termcap_columns;
  501. extern char *termcap_init_terminal;
  502. extern char *termcap_deinit_terminal;
  503. extern char *termcap_clr_eol;  /* Erase the entire current line. */
  504. extern char *termcap_save_cursor; /* Save the cursor position. */
  505. extern char *termcap_clear_screen; /* Erase display (may optionally 
  506.      home cursor). */
  507. extern char *termcap_restore_cursor; /* Restore the cursor position. */
  508. extern char *termcap_cursor_invisible; /* Invisible cursor (very optional). */
  509. extern char *termcap_cursor_visible; /* Visible cursor (very optional). */
  510. extern char *termcap_cursor_address; /* Cursor motion string. */
  511. extern char *termcap_bell;  /* Audible bell. */
  512. extern char *termcap_key_f1;
  513. extern char *termcap_key_f2;
  514. extern char *termcap_key_ic;
  515. extern char *termcap_key_dc;
  516. extern char *termcap_key_home;
  517. extern char *termcap_key_eol;
  518. extern char *termcap_key_ppage;
  519. extern char *termcap_key_npage;
  520. extern char *termcap_key_up;
  521. extern char *termcap_key_down;
  522. extern char *termcap_key_left;
  523. extern char *termcap_key_right;
  524. extern char *termcap_key_backspace;
  525.  
  526.  
  527.  
  528. /*
  529.  * undo.c
  530.  */
  531.  
  532. void u_save();
  533. void u_save_line();
  534. void u_clear();
  535. void u_l_check();
  536. void u_l_undo();
  537. void u_undo();
  538. int inchar();
  539. void flushbuf();
  540. void outchar();
  541. void outstr();
  542. void beep();
  543. char *fixname();
  544. void pvic_init();
  545. void pvic_exit();
  546. void goto_screen_pos();
  547. void pause();
  548. void do_shell();
  549. char *get_pointer_to_chr_in_string();
  550. int get_offset_of_chr_in_s1_matching_chr_in_s2();
  551.  
  552.  
  553.  
  554.  
  555.  
  556. /*
  557. * ops.c
  558. */
  559.  
  560. void do_shift();
  561. void do_delete();
  562. void do_put();
  563. void do_change();
  564. void do_filter();
  565. void dotilde();
  566. int do_join();
  567. int do_yank();
  568. void do_start_insert();
  569.  
  570.  
  571.  
  572. /* 
  573. * regexp.c 
  574. */
  575.  
  576. #define MAGIC             0234
  577.  
  578. #define NSUBEXP          10
  579.  
  580. typedef struct regexp {
  581.     char *startp[NSUBEXP];
  582.     char *endp[NSUBEXP];
  583.     char regstart;        /* Internal use only. */
  584.     char reganch;        /* Internal use only. */
  585.     char *regmust;        /* Internal use only. */
  586.     int regmlen;        /* Internal use only. */
  587.     char program[1];    /* Unwarranted chumminess with compiler. */
  588. } regexp;
  589.  
  590. extern regexp *reg_comp();
  591. extern int reg_exec();
  592. extern void reg_sub();
  593. extern void reg_error();
  594. char *cstrchr();
  595.  
  596. extern int reg_ic;
  597.