home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / me34src.zip / me3 / ed / ed.h next >
C/C++ Source or Header  |  1995-01-14  |  3KB  |  68 lines

  1. /* ed.h : stuff for Editors 
  2.  */
  3.  
  4. /* Craig Durland    Public Domain
  5.  *   Distributed "as is", without warranties of any kind, but comments,
  6.  *     suggestions and bug reports are welcome.
  7.  */
  8.  
  9. #ifndef _ED_H_INCLUDED        /* so this won't be included twice */
  10. #define _ED_H_INCLUDED
  11.  
  12. /* ******************************************************************** */
  13. /* ***************** KEYS ********************************************* */
  14. /* ******************************************************************** */
  15.  
  16. #define CTRL    0x0100        /* Control flag, or'ed in */
  17. #define META    0x0200        /* Meta prefix key aka PFIX 0 */
  18. #define SHIFT    0x1000        /* a shifted sofkey */
  19. #define PFIX1   0x0400        /* a prefix key */
  20. #define PFIX2    0x2000        /* a prefix key */
  21. #define PFIX3    0x4000        /* a prefix key */
  22. #define SOFKEY  0x0800        /* soft key flag, or'ed in */
  23. #define BUTTON  0x8000        /* mouse button or some such */
  24.  
  25.     /* A EKeyCode is 16 bits:  8 for flags, 8 for the character */
  26. typedef unsigned short int EKeyCode;
  27.  
  28.   /* The pkeys array is: { META prefix, PFIX1, PFIX2, PFIX3 }
  29.    * If there is no META prefix (ie a the keyboard has a real meta key),
  30.    *   set the META prefix to SHIFT.
  31.    * To turn off a a prefix key, set it to SHIFT.
  32.    */
  33.  
  34. #define PKEYS 4            /* number of prefix keys */
  35. typedef EKeyCode PKey;        /* what a prefix key is */
  36.  
  37. #define declare_pkeys(name,pfix0,pfix1,pfix2,pfix3)    \
  38.   PKey name[PKEYS] = { pfix0,pfix1,pfix2,pfix3 }
  39.  
  40. /* ******************************************************************** */
  41. /* ***************** Key Tables *************************************** */
  42. /* ******************************************************************** */
  43.  
  44. #define clear_keytable(kt) reset_dTable(kt);
  45.  
  46. /* ******************************************************************** */
  47. /* ***************** TABS ********************************************* */
  48. /* ******************************************************************** */
  49.  
  50.     /* col is 0 relative */
  51. #define BLANKS_IN_TAB 8
  52. #define NEXT_TAB_STOP(col)        (((col)+BLANKS_IN_TAB)/BLANKS_IN_TAB)
  53. #define PREVIOUS_TAB_STOP(col)        ((col)/BLANKS_IN_TAB)
  54. #define TSTOC(tabstop)            ((tabstop)*BLANKS_IN_TAB)
  55. #define NEXT_TAB_COLUMN_MINUS_1(col)    ((col) | 7)
  56. #define NEXT_TAB_COLUMN(col)        (NEXT_TAB_COLUMN_MINUS_1(col) +1)
  57.  
  58. /* ******************************************************************** */
  59. /* *********** Routines in the ED lib ********************************* */
  60. /* ******************************************************************** */
  61.  
  62. extern char *Efind_key(), *Ekalloc();
  63. extern int Eset_pkey();
  64. extern EKeyCode Ectok(), Eget_key(), Eto_keycode();
  65. extern void Expand_key(), Eclear_keytable(), Epack_keytable(), Eunbind_key();
  66.  
  67. #endif    /* _ED_H_INCLUDED */
  68.