home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / AP / JED / JED097-1.TAR / jed / lib / emacs.sl < prev    next >
Encoding:
Text File  |  1994-12-12  |  5.0 KB  |  209 lines

  1. %
  2. %   Emacs like bindings for Jed.
  3. %    
  4. %      A subset of the emacs global map is implemented here.  If you
  5. %      are lacking a useful keybinding, contact davis@amy.tch.harvard.edu
  6.  
  7.   set_status_line("(Jed %v) Emacs: %b    (%m%a%n%o)  %p,%c   %t", 1);
  8.  
  9.   Help_File = "emacs.hlp";
  10.   KILL_LINE_FEATURE = 0;
  11. #ifdef UNIX
  12.  enable_flow_control(0);  %turns off ^S/^Q processing (Unix only)
  13. #endif
  14. %
  15. %  The default keybindings for Jed use ^W, ^F, and ^K keymaps.  Emacs
  16. %  does not bind these so turn them off
  17.  
  18.     unsetkey("^K");
  19.     unsetkey("^W");
  20.     unsetkey("^F");
  21.  
  22. %  Jed default binding of the tab char ^I is to indent line.  Here just insert
  23. %  the tab
  24.  
  25. %  setkey("self_insert_cmd",    "^I");    
  26.  
  27. %% The default binding for the quote keys (", ') is 'text_smart_quote'.
  28. %% Most users do not seem to like this so it is unset here.
  29.  
  30.   setkey("self_insert_cmd",     "\"");
  31.   setkey("self_insert_cmd",     "'");
  32.  
  33. %  setkey("backward_delete_char",    "^?");    
  34.   setkey("backward_delete_char_untabify",    "^?");    
  35.   setkey("beg_of_line",        "^A");    
  36.   setkey("previous_char_cmd",    "^B");    
  37.   setkey("delete_char_cmd",    "^D");    
  38.   setkey("eol_cmd",        "^E");    
  39.   setkey("next_char_cmd",    "^F");    
  40.   setkey("newline",        "^J");    
  41.   setkey("kill_line",        "^K");    
  42.   setkey("emacs_recenter",    "^L");    
  43.   setkey("newline_and_indent_cmd",    "^M");    
  44.   setkey("next_line_cmd",        "^N");    
  45.   setkey("previous_line_cmd",    "^P");    
  46.   setkey("quoted_insert",    "^Q");    
  47. %%
  48. %%  Try these if you prefer
  49. %  setkey("isearch_backward",    "^R");    
  50. %  setkey("isearch_forward",    "^S");    
  51. %%
  52.   setkey("search_backward",    "^R");    
  53.   setkey("search_forward",    "^S");    
  54.   setkey("page_down",        "^V");    
  55.   setkey("kill_region",        "^W");    
  56.   setkey("yank",        "^Y");    
  57.   setkey("sys_spawn_cmd",    "^Z");    
  58. %
  59. %                   The escape map
  60. %
  61.   setkey("bskip_word",        "^[b");    
  62.   setkey("delete_word",        "^[d");    
  63.   setkey("skip_word",        "^[f");    
  64.   setkey("replace_cmd",        "^[%");    
  65.   setkey("beg_of_buffer",    "^[<");    
  66.   setkey("end_of_buffer",    "^[>");    
  67.   setkey("narrow_paragraph",    "^[N");    
  68.   setkey("format_paragraph",    "^[Q");    
  69.   setkey("page_up",        "^[V");    
  70.   setkey("copy_region",        "^[W");    
  71.   setkey("trim_whitespace",    "^[\\");    
  72. %
  73. %    ^X map
  74. %
  75.   setkey("whatpos",             "^X=");    
  76.   setkey("begin_macro",        "^X(");    
  77.   setkey("end_macro",        "^X)");    
  78.   setkey("mark_spot",        "^X/");    
  79.   setkey("delete_window",    "^X0");    
  80.   setkey("one_window",        "^X1");    
  81.   setkey("split_window",    "^X2");    
  82.   setkey("scroll_left",        "^X<");    
  83.   setkey("scroll_right",    "^X>");    
  84.   setkey("switch_to_buffer",    "^XB");
  85.   setkey("dired",        "^XD");    
  86.   setkey("insert_file",        "^XI");    
  87.   setkey("execute_macro",    "^XE");    
  88.   setkey("pop_spot",        "^XJ");    
  89.   setkey("kill_buffer",        "^XK");    
  90.   setkey("other_window",        "^XO");    
  91.   setkey("exit_jed",        "^X^C");    
  92.   setkey("find_file",        "^X^F");    
  93.   setkey("toggle_readonly",    "^X^Q");    
  94.   setkey("save_buffer",        "^X^S");    
  95.   setkey("transpose_lines",    "^X^T");    
  96.   setkey("write_buffer",    "^X^W");
  97.  
  98. % rectangle stuff
  99.  
  100.   setkey("kill_rect",         "^XRk");
  101.   setkey("open_rect",         "^XRo");
  102.   setkey("insert_rect",     "^XRy");
  103.   setkey("copy_rect",         "^XCc");
  104.  
  105. %  On the IBM PC, the ^@ is an extended key like all the arrow keys.  The
  106. %  default Jed bindings enable all these keys including the ^@.  See source
  107. %  for details.
  108.  
  109. #ifdef MSDOS OS2
  110.   setkey("smart_set_mark_cmd",        "^@^C");    
  111. #else
  112.   setkey("smart_set_mark_cmd",        "^@");    
  113. #endif
  114.  
  115. setkey ("find_buffer_other_window", "^X4b");
  116. setkey ("find_alternate_file", "^X^V");
  117. setkey ("find_file_other_window", "^X4f");
  118.  
  119. autoload ("find_file_other_window",    "emacsmsc");
  120. autoload ("find_buffer_other_window",    "emacsmsc");
  121. autoload ("find_alternate_file",    "emacsmsc");
  122.  
  123.  
  124. %% misc functions
  125.  
  126. define emacs_mark_buffer()
  127. {
  128.    eob(); push_mark(); bob();
  129. }
  130. setkey("emacs_mark_buffer", "^XH");
  131.      
  132. define emacs_open_line()
  133. {
  134.    newline();  go_left(1);
  135. }
  136.  setkey("emacs_open_line", "^O");
  137.     
  138. define emacs_recenter() { recenter(0); }
  139.  
  140. define transpose_chars ()
  141. {
  142.    variable c, err;
  143.    err = "Top of Buffer";
  144.  
  145.    if (eobp()) go_left(1);
  146.    !if (left(1)) error(err);
  147.    c = what_char();
  148.    del();
  149.    go_right(1);
  150.    insert_char(c);
  151. }
  152.   setkey("transpose_chars",  "^T");    
  153.  
  154.  
  155. %%0 9 1 { "^U" exch string strcat "digit_arg" exch setkey } _for
  156. %
  157. %  Emacs Universal argument--- bound to ^U
  158. %
  159. define universal_argument ()
  160. {
  161.    variable n, key, count, msg, cu, force;
  162.    n = 4; count = 0; cu = "C-u"; msg = cu; force = 0;
  163.    
  164.    forever
  165.      {
  166.     !if (force) !if(input_pending(10)) force = 1;
  167.     
  168.     if (force) 
  169.       {
  170.          message(strcat (msg, "-"));
  171.          update(0);
  172.       }
  173.     
  174.       
  175.     msg = strcat(msg, " ");
  176.     key = getkey();
  177.     
  178.     switch(key)
  179.       {
  180.        isdigit(char(())) :
  181.          key = key - '0';
  182.          count = 10 * count + key;
  183.          msg = strcat(msg, string(key));
  184.       }
  185.       {
  186.          case 21 :               %  ^U
  187.          !if (count) n = 4 * n;
  188.          count = 0;
  189.          msg = strcat (msg, cu);
  190.       }
  191.       {
  192.         ungetkey(());
  193.          !if (count) count = n;
  194.          count = string(count);
  195.          n = strlen(count);
  196.          _for (n, 1, -1)
  197.            {
  198.           count; exch(); 
  199.           ungetkey(int (substr((), (), 1)));
  200.            }
  201.          ungetkey(27);
  202.          return;
  203.       }
  204.      }
  205. }
  206.   setkey("universal_argument",  "^U");    
  207.          
  208.    
  209.