Todo.emacskey.dif
上传用户:tianjinjs
上传日期:2007-01-05
资源大小:309k
文件大小:4k
源码类别:

Modem编程

开发平台:

Unix_Linux

  1. --- window.c Wed May 22 23:40:36 1996
  2. +++ ../../source/window.c Thu May  9 23:55:04 1996
  3. @@ -38,6 +38,7 @@
  4.  
  5.  #ifndef BBS
  6.  #include "config.h"
  7. +#include "configsym.h"
  8.  #endif
  9.  
  10.  #define BUFFERSIZE 2048
  11. @@ -1589,6 +1590,9 @@
  12.    int direct = dirflush;
  13.    int delete = 1;
  14.  
  15. +  char *emacskeymap_from = "0102040506" /*"13"*/ ; 
  16. +  int emacskeymap_to[] = { K_HOME, K_LT, K_DEL, K_END, K_RT } ;
  17. +
  18.    x = w->curx;
  19.    y = w->cury;
  20.  
  21. @@ -1609,6 +1613,11 @@
  22.   once--;
  23.   } else {
  24.   c = getch();
  25. + /* maybe this stuff (below) should be #ifndef BBS?? */
  26. + if (P_EMACSKEYS[0] == 'Y' && strchr(emacskeymap_from,c))
  27. + c = emacskeymap_to[(int)strchr(emacskeymap_from,c) -
  28. + (int)emacskeymap_from];
  29. +
  30.   if (c > 255 || c == K_BS || c == K_DEL) delete = 0;
  31.   }
  32.   switch(c) {
  33. @@ -1677,7 +1686,18 @@
  34.   wlocate(w, x + idx - offs, y);
  35.   wflush();
  36.   break;
  37. + case 'K'-'@': /* CTRL-K */
  38. + /* Delete rest of line */
  39. + if(P_EMACSKEYS[0] == 'Y') {
  40. + buf[idx] = 0;
  41. + lredraw(w, x + idx - offs, y, buf + idx,
  42. + linelen - (idx - offs));
  43. + wlocate(w, x + idx - offs, y);
  44. + wflush();
  45. + }
  46. + break;
  47.   default:
  48. + if (c < 32 || c > 127) break;
  49.   /* If delete == 1, delete the buffer. */
  50.   if (delete) {
  51.   if ((i = strlen(buf)) > linelen)
  52. @@ -1691,7 +1711,6 @@
  53.   }
  54.  
  55.   /* Insert character at cursor position. */
  56. - if (c < 32 || c > 127) break;
  57.   if (idx + 1 >= maxlen) break;
  58.   for(f = strlen(buf) + 1; f > idx; f--)
  59.   buf[f] = buf[f-1];
  60. --- ./config.c Wed May 22 23:23:18 1996
  61. +++ ../source/config.c Thu May  9 22:58:38 1996
  62. @@ -593,13 +593,13 @@
  63.    int tmp_c;    /* fmg - need it to color keep in sanity checks */
  64.    char buf[16];
  65.    int miny = 4, 
  66. -  maxy = 17;
  67. +  maxy = 18;
  68.    int old_stat = P_STATLINE[0];
  69.  #if _HAVE_MACROS
  70.    FILE *fp;
  71.  
  72.    miny = 3;
  73. -  maxy = 19;
  74. +  maxy = 20;
  75.  #endif
  76.  
  77.    w = wopen(15, miny, 69, maxy, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
  78. @@ -621,11 +621,13 @@
  79.    /* MARK updated 02/17/95 - Configurable history buffer size */
  80.    wprintf(w, " K - History Buffer Size    : %sn", P_HISTSIZE);
  81.  
  82. +  wprintf(w, " L - Enable Emacs keys      : %sn", P_EMACSKEYS);
  83. +
  84.  #if _HAVE_MACROS
  85.    /* fmg - macros support */
  86. -  wprintf(w, " L - Macros file            : %sn", P_MACROS);
  87. -  wprintf(w, " M - Edit Macrosn");
  88. -  wprintf(w, " N - Macros enabled         : %sn", P_MACENAB);
  89. +  wprintf(w, " M - Macros file            : %sn", P_MACROS);
  90. +  wprintf(w, " N - Edit Macrosn");
  91. +  wprintf(w, " O - Macros enabled         : %sn", P_MACENAB);
  92.  #endif
  93.  
  94.    wredraw(w, 1);
  95. @@ -855,9 +857,14 @@
  96.   werror("This system does not support history");
  97.  #endif
  98.   break;
  99. + case 'L': /* enable emacs editing keys */
  100. + psets(P_EMACSKEYS, yesno(P_EMACSKEYS[0] == 'N'));
  101. + wlocate(w, 30, 12);
  102. + wprintf(w, "%s", P_EMACSKEYS);
  103. + break;
  104.  #if _HAVE_MACROS
  105. -                case 'L': /* fmg - get local macros storage file */
  106. -                        pgets(w, 30, 12, P_MACROS, 64, 64);
  107. +                case 'M': /* fmg - get local macros storage file */
  108. +                        pgets(w, 30, 13, P_MACROS, 64, 64);
  109.  
  110.   /* Try to open the file to read it in. */
  111.   fp = sfopen(pfix_home(P_MACROS), "r+");
  112. @@ -880,12 +887,12 @@
  113.   readmacs(fp, 0);
  114.   fclose(fp);
  115.                          break;
  116. -                case 'M': /* fmg - Bring up macro editing window */
  117. +                case 'N': /* fmg - Bring up macro editing window */
  118.                          domacros();
  119.                          break;
  120. - case 'N':
  121. + case 'O':
  122.   psets(P_MACENAB, yesno(P_MACENAB[0] == 'N'));
  123. - wlocate(w, 30, 14);
  124. + wlocate(w, 30, 15);
  125.   wprintf(w, "%s", P_MACENAB);
  126.   break;
  127.  #endif
  128. --- orig_source/configsym.h Wed Mar 15 18:37:36 1995
  129. +++ source/configsym.h Thu May  9 22:34:32 1996
  130. @@ -117,7 +117,8 @@
  131.  
  132.  #define P_SOUND mpars[75].value
  133.  #define P_HISTSIZE      mpars[76].value  /* History buffer size */
  134. +#define P_EMACSKEYS mpars[77].value  /* Enable emacs keys in line edits */
  135. +
  136.  /* fmg - macros struct */
  137.  
  138.  #define P_MAC1          mmacs[0].value
  139. --- orig_source/rwconf.c Wed Mar 15 18:37:36 1995
  140. +++ source/rwconf.c Thu May  9 22:35:56 1996
  141. @@ -140,6 +140,9 @@
  142.    /* MARK updated 02/17/95 - History buffer size */
  143.    { "256",             PUBLIC,    "histlines" },
  144.  
  145. +  /* Enable Emacs editing keys in line editings */
  146. +  { "Yes", PUBLIC,   "emacskeys" },
  147. +
  148.    /* That's all folks */
  149.    { "",                 0,         (char *)NULL },
  150.  };