home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / progmisc / tde221.zip / TDECFG.H < prev    next >
C/C++ Source or Header  |  1993-04-01  |  18KB  |  545 lines

  1. /********    EXTREMELY IMPORTANT   ************/
  2.  
  3. /*
  4.  * If you modify tde, it is your responsibility to find the offset of
  5.  * the key definition array in your new executable, tde.exe.
  6.  *
  7.  * In TDE 2.2, it is a little easier to find these offsets.  Being that
  8.  *  2.2 will handle binary files and being that the structures have a 
  9.  *  signature, split the screen with TDE.EXE in one screen and this 
  10.  *  header file in the other.  The '$' marks the offset.
  11.  */
  12.  
  13. #define  SORT_OFFSET    106438l         /* 00 01 02 03 04 05 etc... */
  14. #define  MODE_OFFSET    106950l         /* look for "$ modes"  */
  15. #define  COLOR_OFFSET   107016l         /* look for "$colors"  */
  16. #define  MACRO_OFFSET   107620l         /* look for "$macbuf"  */
  17. #define  KEYS_OFFSET    112552l         /* look for "$  keys"  */
  18. #define  TWO_KEY_OFFSET 112816l         /* look for "$twokey"  */
  19. #define  HELP_OFFSET    118675l         /* no sig for this offset */
  20.  
  21. /********    EXTREMELY IMPORTANT   ************/
  22.  
  23.  
  24. /*
  25.  * defines for the inline assembler.
  26.  */
  27. #if defined( __MSC__ )
  28.    #define  ASSEMBLE   _asm
  29. #else
  30.    #define  ASSEMBLE   asm
  31. #endif
  32.  
  33.  
  34. #define TRUE            1
  35. #define FALSE           0
  36.  
  37. #define OK              0
  38. #define ERROR           (-1)
  39.  
  40.  
  41. #define MAX_KEYS        256
  42. #define AVAIL_KEYS      233
  43.  
  44.  
  45. #define MAX_TWO_KEYS    128   /* number of two key-combos allowed by TDE  */
  46. #define STROKE_LIMIT    1024
  47.  
  48.  
  49. #define NUM_FUNC        135
  50.  
  51. #define NUM_COLORS      14
  52.  
  53. #define NUM_MODES       23
  54.  
  55. /*
  56.  * mode indexes
  57.  */
  58. #define Ins              0
  59. #define Ind              1
  60. #define PTAB             2
  61. #define LTAB             3
  62. #define Smart            4
  63. #define Write_Z          5
  64. #define Crlf             6
  65. #define Trim             7
  66. #define Eol              8
  67. #define WW               9
  68. #define Left            10
  69. #define Para            11
  70. #define Right           12
  71. #define Size            13
  72. #define Backup          14
  73. #define Ruler           15
  74. #define Date            16
  75. #define Time            17
  76. #define Initcase        18
  77. #define InflateTabs     19
  78. #define Match           20
  79. #define Ignore          21
  80. #define JustRM          22
  81.  
  82.  
  83.  
  84. #define EXIST           0
  85.  
  86. #define VIDEO_INT       0x10
  87.  
  88. #define VGA             3
  89. #define EGA             2
  90. #define CGA             1
  91. #define MDA             0
  92.  
  93. #define NORMAL          7
  94. #define COLOR_ATTR      31
  95. #define MONO_ATTR       112
  96.  
  97.  
  98. #define ESC             27
  99. #define LEFT            (75 | 0x100)
  100. #define RIGHT           (77 | 0x100)
  101. #define UP              (72 | 0x100)
  102. #define DOWN            (80 | 0x100)
  103. #define RTURN           13
  104. #define PGUP            (73 | 0x100)
  105. #define PGDN            (81 | 0x100)
  106. #define F1              (59 | 0x100)
  107. #define F2              (60 | 0x100)
  108. #define F3              (61 | 0x100)
  109. #define F5              (63 | 0x100)
  110. #define F6              (64 | 0x100)
  111. #define F7              (65 | 0x100)
  112. #define F8              (66 | 0x100)
  113. #define F10             (68 | 0x100)
  114.  
  115.  
  116. #define U_LEFT          218
  117. #define U_RIGHT         191
  118. #define VER_LINE        179
  119. #define HOR_LINE        196
  120. #define L_LEFT          192
  121. #define L_RIGHT         217
  122.  
  123. #define SAVE            0
  124. #define RESTORE         1
  125.  
  126.  
  127. /*
  128.  * Save the underlying text of the screen in a structure.  We need to know
  129.  * the column and row to begin saving the text.  Since we are doing an
  130.  * optimal save and restore, we don't know how much memory to allocate to
  131.  * the save buffer.  If we use a pointer, then we can dynamically allocate as
  132.  * much or as little memory as we need.  Finally, we need a window pointer
  133.  * to point to the next item on the stack.
  134.  */
  135. typedef struct win {
  136.    int x;
  137.    int y;
  138.    int *buf;
  139.    struct win *n;
  140. } WINDOW;
  141.  
  142.  
  143. /*
  144.  * Structure to store the row and column of a string.
  145.  */
  146. struct screen {
  147.    unsigned int   row;
  148.    unsigned int   col;
  149.    unsigned char *text;
  150. };
  151.  
  152.  
  153. /*
  154.  * video adapter stuff.
  155.  */
  156. struct vcfg {
  157.    int color;
  158.    int rescan;
  159.    int mode;
  160.    int overscan;
  161.    int adapter;
  162.    int attr;
  163.    int far *videomem;
  164. };
  165.  
  166.  
  167. typedef struct {
  168.    char sig[8];                 /* signature, so we can find struct in .exe */
  169.    int  clr[2][NUM_COLORS];     /* one array for mono and another for color */
  170. } COLORS;
  171.  
  172.  
  173. /*
  174.  * When we display a pop-up or pull-down window, we need to know a few things
  175.  * about the window and the text to display in the window.
  176.  */
  177. typedef struct {
  178.    int dply_col;        /* offset into window to begin displaying help list */
  179.    int dply_row;        /* dito */
  180.    int line_length;     /* the length of the help line in the window */
  181.    int avail_lines;     /* number of lines in the window available for list */
  182.    int v_row;           /* virtual row of cursor in window */
  183.    int select;          /* item currently selected in help list */
  184.    int num_entries;     /* total number of items in help list */
  185.    int ulft_col;        /* absolute upper left column of window */
  186.    int ulft_row;        /* absolute upper left row of window */
  187.    int total_col;       /* total number of columns in window */
  188.    int total_row;       /* total number of rows in window */
  189. } HELP_WINDOW;
  190.  
  191.  
  192. /*
  193.  * structure for list of available keys.   See default.h for more info.
  194.  */
  195. typedef struct {
  196.    char *key;           /* key name */
  197.    int  key_index;      /* offset into key structure in tde.exe file */
  198.    unsigned char func_index;     /* function of key */
  199. } KEY_DEFS;
  200.  
  201.  
  202. /*
  203.  * structure for list of available keys.   See default.h for more info.
  204.  */
  205. typedef struct {
  206.    char *key;           /* key name */
  207.    int  key_index;      /* offset into key structure in tde.exe file */
  208. } CONFIG_DEFS;
  209.  
  210.  
  211. /*
  212.  * From the source code of tde.
  213.  */
  214. typedef struct {
  215.   int key;      /* key assinged to this node, which may be text or function */
  216.   int next;     /* pointer to next node in macro def */
  217. } STROKES;
  218.  
  219. /*
  220.  * structure for the macro buffer.
  221.  */
  222. typedef struct {
  223.    char sig[8];                         /* signature, easy to find in .exe */
  224.    int  first_stroke[MAX_KEYS];         /* pointer to first key in macro */
  225.    STROKES strokes[STROKE_LIMIT];       /* buffer to hold key strokes */
  226. } MACRO;
  227.  
  228.  
  229.  
  230. /*
  231.  * "mode_infos" contain the editor mode variables.  The configuration
  232.  *  utility modifies this structure to custimize the start-up tde
  233.  *  configuration
  234.  */
  235. typedef struct {
  236.    char sig[8];                 /* signature, so we can find struct in .exe */
  237.    int  color_scheme;           /* color to start out with */
  238.    int  sync;                   /* sync the cursor movement command? */
  239.    int  sync_sem;               /* sync the cursor movement command? */
  240.    int  record;                 /* are we recording keystrokes? */
  241.    int  insert;                 /* in insert mode? */
  242.    int  indent;                 /* in auto-indent mode? */
  243.    int  ptab_size;              /* physical tab stops */
  244.    int  ltab_size;              /* logical tab stops */
  245.    int  smart_tab;              /* smart tab mode on or off? */
  246.    int  inflate_tabs;           /* inflate tabs?  T or F */
  247.    int  search_case;            /* consider case? IGNORE or MATCH */
  248.    int  enh_kbd;                /* type of keyboard */
  249.    int  cursor_size;            /* insert cursor big or small? */
  250.    char *eof;                   /* message to display at end of file */
  251.    int  control_z;              /* write ^Z - t or f */
  252.    int  crlf;                   /* <cr><lf> toggle CRLF or LF */
  253.    int  trailing;               /* remove trailing space? T or F */
  254.    int  show_eol;               /* show lf at eol? T or F */
  255.    int  word_wrap;              /* in word wrap mode? */
  256.    int  left_margin;            /* left margin */
  257.    int  parg_margin;            /* column for 1st word in paragraph */
  258.    int  right_margin;           /* right margin */
  259.    int  right_justify;          /* boolean, justify right margin?  T or F */
  260.    int  format_sem;             /* format semaphore */
  261.    int  undo_max;               /* max number of lines in undo stack */
  262.    int  do_backups;             /* create backup or ".bak" files? T or F */
  263.    int  ruler;                  /* show ruler at top of window? T or F */
  264.    int  date_style;             /* date style for date and time stamp */
  265.    int  time_style;             /* time style for date and time stamp */
  266. } MODE_INFO;
  267.  
  268.  
  269. typedef struct {
  270.    unsigned char ignore[256];
  271.    unsigned char match[256];
  272. } SORT_ORDER;
  273.  
  274.  
  275. /*
  276.  * structure for two key combos
  277.  */
  278. typedef struct {
  279.    int parent_key;
  280.    int child_key;
  281.    int func;
  282. } TWO_KEY_TYPE;
  283.  
  284.  
  285. typedef struct {
  286.    char sig[8];
  287.    TWO_KEY_TYPE key[MAX_TWO_KEYS];
  288. } TWO_KEY;
  289.  
  290.  
  291. typedef struct {
  292.    char sig[8];
  293.    unsigned char key[MAX_KEYS];
  294. } KEY_FUNC;
  295.  
  296.  
  297. /*************  prototypes for functions in  tdecfg.c  *******************/
  298. void  main( int, char *[] );
  299. void xygoto( int, int );
  300. void video_config( void );
  301. int getkey( void );
  302. void s_output( char far *, int, int, int );
  303. void cls( void );
  304. void hlight_line( int, int, int, int );
  305. void c_off( void );
  306. void c_on( void );
  307. void scroll_window( int, int, int, int, int, int );
  308. void cls( void );
  309. void show_box( int, int, struct screen *, int );
  310. void make_window( int, int, int, int, int );
  311. void buf_box( int, int, int, int, int );
  312. void clear_window( int, int, int, int );
  313. void window_control( WINDOW **, int, int, int, int, int );
  314. void save_window( int *, int, int, int, int );
  315. void restore_window( int *, int, int, int, int );
  316. /*************************************************************************/
  317.  
  318.  
  319. /*************  prototypes for functions in  cfgcolor.c  *****************/
  320. void tdecolor( void );
  321. void initialize_color( void );
  322. void restore_overscan( int );
  323. void show_init_sample( void );
  324. void color_number( char *, int );
  325. void current_color_number( char *, int );
  326. void show_help_color( void );
  327. void show_fileheader_color( void );
  328. void show_text_color( void );
  329. void show_curl_color( void );
  330. void show_dirty_color( void );
  331. void show_warning_color( void );
  332. void show_mode_color( void );
  333. void show_wrapped_color( void );
  334. void show_overscan_color( void );
  335. void show_eof_color( void );
  336. void show_ruler_color( void );
  337. void show_rulerptr_color( void );
  338. void show_block_color( void );
  339. void show_hilitedfile_color( void );
  340. void change_colors( void );
  341. /*************************************************************************/
  342.  
  343.  
  344. /*************  prototypes for functions in  cfgkeys.c  *****************/
  345. void tdekeys( void );
  346. void initialize_keys( void );
  347. void show_key_def_list( HELP_WINDOW *, KEY_DEFS * );
  348. void show_func_list( HELP_WINDOW *, char *[] );
  349. void position_cursor( HELP_WINDOW *, int, int *, int *, int * );
  350. void master_help( HELP_WINDOW *, KEY_DEFS *, struct screen *, char *, int * );
  351. void new_assignment_help( HELP_WINDOW *, char *[], struct screen *, int * );
  352. void save_and_draw( HELP_WINDOW *, struct screen *, WINDOW ** );
  353. /*************************************************************************/
  354.  
  355.  
  356. /*************  prototypes for function in  cfghelp.c  *******************/
  357. void tdehelp( void );
  358. /*************************************************************************/
  359.  
  360.  
  361. /*************  prototypes for function in  cfgmacro.c  *******************/
  362. void tdemacro( void );
  363. /*************************************************************************/
  364.  
  365.  
  366. /*************  prototypes for functions in cfgmodes.c  *****************/
  367. void tdemodes( void );
  368. void initialize_modes( void );
  369. void show_init_mode( void );
  370. void show_insert_mode( void );
  371. void show_indent_mode( void );
  372. void show_smart_mode( void );
  373. void show_ptabsize( void );
  374. void show_ltabsize( void );
  375. void show_controlz( void );
  376. void show_eol_out( void );
  377. void show_trail( void );
  378. void show_eol_display( void );
  379. void show_ww( void );
  380. void show_left( void );
  381. void show_para( void );
  382. void show_right( void );
  383. void show_cursor_size( void );
  384. void show_backup_mode( void );
  385. void show_ruler_mode( void );
  386. void show_date_style( void );
  387. void show_time_style( void );
  388. void show_initcase( void );
  389. void change_modes( void );
  390. /*************************************************************************/
  391.  
  392.  
  393. /*************  prototypes for functions in cfgfile.c    *****************/
  394. void tdecfgfile( void );
  395. void parse_line( char * );
  396. char *parse_token( char *, char * );
  397. int  search( char *, CONFIG_DEFS [], int );
  398. void parse_macro( int, char * );
  399. int  parse_literal( int, char *, char *, char ** );
  400. void initialize_macro( int );
  401. void clear_previous_macro( int );
  402. void check_macro( int );
  403. int  record_keys( int, int );
  404. void new_sort_order( unsigned char *, unsigned char * );
  405. int  get_stroke_count( void );
  406. int  getfunc( int );
  407. void clear_previous_twokey( int );
  408. int  insert_twokey( int, int, int );
  409. /*************************************************************************/
  410.  
  411.  
  412. #define   Help                     1
  413. #define   Rturn                    2
  414. #define   NextLine                 3
  415. #define   BegNextLine              4
  416. #define   LineDown                 5
  417. #define   LineUp                   6
  418. #define   CharRight                7
  419. #define   CharLeft                 8
  420. #define   PanRight                 9
  421. #define   PanLeft                 10
  422. #define   WordRight               11
  423. #define   WordLeft                12
  424. #define   ScreenDown              13
  425. #define   ScreenUp                14
  426. #define   EndOfFile               15
  427. #define   TopOfFile               16
  428. #define   BotOfScreen             17
  429. #define   TopOfScreen             18
  430. #define   EndOfLine               19
  431. #define   BegOfLine               20
  432. #define   JumpToLine              21
  433. #define   CenterWindow            22
  434. #define   CenterLine              23
  435. #define   HorizontalScreenRight   24
  436. #define   HorizontalScreenLeft    25
  437. #define   ScrollDnLine            26
  438. #define   ScrollUpLine            27
  439. #define   PanUp                   28
  440. #define   PanDn                   29
  441. #define   ToggleOverWrite         30
  442. #define   ToggleSmartTabs         31
  443. #define   ToggleIndent            32
  444. #define   ToggleWordWrap          33
  445. #define   ToggleCRLF              34
  446. #define   ToggleTrailing          35
  447. #define   ToggleZ                 36
  448. #define   ToggleEol               37
  449. #define   ToggleSync              38
  450. #define   ToggleRuler             39
  451. #define   ToggleTabInflate        40
  452. #define   SetTabs                 41
  453. #define   SetLeftMargin           42
  454. #define   SetRightMargin          43
  455. #define   SetParagraphMargin      44
  456. #define   FormatParagraph         45
  457. #define   FormatText              46
  458. #define   LeftJustify             47
  459. #define   RightJustify            48
  460. #define   CenterJustify           49
  461. #define   Tab                     50
  462. #define   BackTab                 51
  463. #define   ParenBalance            52
  464. #define   BackSpace               53
  465. #define   DeleteChar              54
  466. #define   StreamDeleteChar        55
  467. #define   DeleteLine              56
  468. #define   DelEndOfLine            57
  469. #define   WordDelete              58
  470. #define   AddLine                 59
  471. #define   SplitLine               60
  472. #define   JoinLine                61
  473. #define   DuplicateLine           62
  474. #define   AbortCommand            63
  475. #define   UndoLine                64
  476. #define   UndoDelete              65
  477. #define   ToggleSearchCase        66
  478. #define   FindForward             67
  479. #define   FindBackward            68
  480. #define   RepeatFindForward1      69
  481. #define   RepeatFindForward2      70
  482. #define   RepeatFindBackward1     71
  483. #define   RepeatFindBackward2     72
  484. #define   ReplaceString           73
  485. #define   DefineDiff              74
  486. #define   RepeatDiff              75
  487. #define   MarkBox                 76
  488. #define   MarkLine                77
  489. #define   MarkStream              78
  490. #define   UnMarkBlock             79
  491. #define   FillBlock               80
  492. #define   NumberBlock             81
  493. #define   CopyBlock               82
  494. #define   KopyBlock               83
  495. #define   MoveBlock               84
  496. #define   OverlayBlock            85
  497. #define   DeleteBlock             86
  498. #define   SwapBlock               87
  499. #define   BlockToFile             88
  500. #define   PrintBlock              89
  501. #define   BlockExpandTabs         90
  502. #define   BlockCompressTabs       91
  503. #define   BlockIndentTabs         92
  504. #define   BlockTrimTrailing       93
  505. #define   BlockUpperCase          94
  506. #define   BlockLowerCase          95
  507. #define   BlockRot13              96
  508. #define   BlockFixUUE             97
  509. #define   BlockEmailReply         98
  510. #define   BlockStripHiBit         99
  511. #define   SortBoxBlock           100
  512. #define   DateTimeStamp          101
  513. #define   EditFile               102
  514. #define   DirList                103
  515. #define   File                   104
  516. #define   Save                   105
  517. #define   SaveAs                 106
  518. #define   SetFileAttributes      107
  519. #define   EditNextFile           108
  520. #define   DefineSearchAndSeize   109
  521. #define   RepeatSearchAndSeize   110
  522. #define   RedrawScreen           111
  523. #define   SizeWindow             112
  524. #define   SplitHorizontal        113
  525. #define   SplitVertical          114
  526. #define   NextWindow             115
  527. #define   PreviousWindow         116
  528. #define   ZoomWindow             117
  529. #define   NextHiddenWindow       118
  530. #define   SetMark1               119
  531. #define   SetMark2               120
  532. #define   SetMark3               121
  533. #define   GotoMark1              122
  534. #define   GotoMark2              123
  535. #define   GotoMark3              124
  536. #define   RecordMacro            125
  537. #define   PlayBack               126
  538. #define   SaveMacro              127
  539. #define   LoadMacro              128
  540. #define   ClearAllMacros         129
  541. #define   Pause                  130
  542. #define   Quit                   131
  543. #define   NextDirtyLine          132
  544. #define   PrevDirtyLine          133
  545.