home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 16 / 16.iso / w / w055 / 4.ddi / SOURCES.LIF / NATIVE.PEL < prev    next >
Encoding:
Text File  |  1990-09-27  |  9.8 KB  |  319 lines

  1. # $Header:   P:/source/ppee/macros/native.pev   1.65   06 Jul 1990 14:53:56   skipr  $
  2.  
  3. ##############################################################################
  4. #
  5. #           Sage Software - POLYTRON Division
  6. #             1700 NW 167th Place
  7. #               Beaverton, OR 97006
  8. #
  9. #   Copyright 1990, Sage Software, Inc.
  10. #
  11. #   Permission is hereby granted for licensed users of Sage Professional
  12. #   Editor and PolyAwk to copy and modify this source code for their own
  13. #   personal use.  These derivative works may be distributed only to other
  14. #   licensed Sage Professional Editor and PolyAwk users.  All other usage
  15. #   is prohibited without express written permission from Sage Software.
  16. #
  17. ##############################################################################
  18.  
  19. #### $Workfile:   native.pel  $: Sage Professional Editor native mode
  20.  
  21. local native_keymap = -1;
  22.  
  23.  
  24. ### Establish Sage Professional Editor native mode
  25.  
  26. function native(){
  27.  
  28.     emulation_mode = "native"
  29.     execute_event_handler( EVENT_EMULATION_CHANGED );
  30.  
  31.     default_window_flags =                 \
  32.         nominal_border_flags =             \
  33.             WINDOW_STANDARD
  34.  
  35.     if ( !and(window_flags, WINDOW_SYSTEM )) {
  36.         window_flags = default_window_flags
  37.     }
  38.  
  39.     search_flags =                     \
  40.         + SEARCH_MAXIMAL_MATCH            \
  41.         + SEARCH_FORWARD            \
  42.         + SEARCH_REGEX                \
  43.         + SEARCH_ADVANCE            \
  44.     #    + SEARCH_IGNORE_CASE             \
  45.     #    + SEARCH_WRAPS                \
  46.     #    + SEARCH_HIGHLIGHT            \
  47.  
  48.     toggle_auto_indent( 1 )
  49.     toggle_electric( 1 )
  50.  
  51.     # Enable the keymap.  Subsequent mods to the keymap will persist
  52.     #     through the end of the session.
  53.     # Only one-time initialization should follow this point.
  54.  
  55.     if( native_keymap >= 0 ){
  56.         current_keymap = native_keymap
  57.         return
  58.     }
  59.  
  60.     native_keymap = current_keymap = create_keymap( ascii_keymap )
  61.  
  62.     ### Native keyboard assignments
  63.     #
  64.  
  65.     assign_key( "<Ctrl-A>",        "optional_function display_ascii_table" )
  66.     assign_key( "<Ctrl-B>",        "scroll_window_bottom" )
  67.     assign_key( "<Ctrl-C>",        "scroll_window_middle" )
  68.     assign_key( "<Ctrl-D>",        "scroll_down_1" )
  69.     assign_key( "<Ctrl-E>",        "beep" )
  70.     assign_key( "<Ctrl-F>",        "beep" )
  71.     assign_key( "<Ctrl-G>",        "beep" )
  72.     assign_key( "#8",        "outdent_space_maybe" )    # Bksp or Ctrl-H
  73. #    assign_key( "<Bksp>",        "beep" )
  74. #    assign_key( "<Ctrl-H>",        "beep" )
  75.     assign_key( "#9",        "indent_tab_maybe" )    # Tab or Ctrl-I
  76. #    assign_key( "<Tab>",        "beep" )
  77. #    assign_key( "<Ctrl-I>",        "beep" )
  78.     assign_key( "#10",        "auto_indent_nl" )    # Ctrl-Enter or Ctrl-J
  79. #    assign_key( "<Ctrl-Enter>",    "beep" )
  80. #    assign_key( "<Ctrl-J>",        "beep" )
  81.     assign_key( "<Ctrl-K>",        "beep" )
  82.     assign_key( "<Ctrl-L>",        "scroll_left_1" )
  83.     assign_key( "#13",        "auto_indent_cr" )    # Enter or Ctrl-M
  84. #    assign_key( "<Enter>",        "beep" )
  85. #    assign_key( "<Ctrl-M>",        "beep" )
  86.     assign_key( "<Ctrl-N>",        "beep" )
  87.     assign_key( "<Ctrl-O>",        "beep" )
  88.     assign_key( "<Ctrl-P>",        "beep" )
  89.      assign_key( "<Ctrl-Q>",        "insert_quoted_key" )
  90.     assign_key( "<Ctrl-R>",        "scroll_right_1" )
  91.     assign_key( "<Ctrl-S>",        "beep" )
  92.     assign_key( "<Ctrl-T>",        "scroll_window_top" )
  93.     assign_key( "<Ctrl-U>",        "scroll_up_1" )
  94.     assign_key( "<Ctrl-V>",        "beep" )
  95.     assign_key( "<Ctrl-W>",        "beep" )
  96.     assign_key( "<Ctrl-X>",        "beep" )
  97.     assign_key( "<Ctrl-Y>",        "beep" )
  98.     assign_key( "<Ctrl-Z>",        "beep" )
  99.     assign_key( "#27",        "expand_template" )    # Ctrl-[ or Esc
  100. #    assign_key( "<Esc>",        "beep" )
  101. #    assign_key( "<Ctrl-[>",        "beep" )
  102.     assign_key( "<Ctrl-\\>",    "beep" )
  103.     assign_key( "<Ctrl-]>",        "beep" )
  104.     assign_key( "<Ctrl-^>",        "beep" )
  105.     assign_key( "<Ctrl-_>",        "beep" )
  106.     assign_key( "<Ctrl-Bksp>",    "beep" )
  107.  
  108.  
  109. #        non-ASCII keys on main keyboard:
  110.  
  111.     assign_key( "<Shift-Tab>",    "outdent_tab_maybe" )
  112.     assign_key( "<Alt-Tab>",    "outdent_tab_maybe" )
  113.     assign_key( "<Ctrl-@>",        "beep" )
  114.     assign_key( "<Alt-Minus>",    "delete_buffer_key" )
  115.     assign_key( "<Alt-=>",        "beep" )
  116.  
  117.     assign_key( "<Space>",        "indent_outdent_space" ) # SP and Alt-SP
  118.  
  119. #    keypad keys:
  120.  
  121.     assign_key( "<Ins>",        "insert_scrap" )
  122.     assign_key( "<Del>",        "native_delete" )
  123.     assign_key( "<Keypad-0>",    "paste_lines" )
  124.     assign_key( "<Keypad-.>",    "native_cut_lines" )
  125.  
  126.     assign_key( "<Home>",        "goto_bol" )
  127.     assign_key( "<End>",        "goto_eol" )
  128.     assign_key( "<PgUp>",        "page_up" )
  129.     assign_key( "<PgDn>",        "page_down" )
  130.     assign_key( "<Left>",        "native_left" )
  131.     assign_key( "<Right>",        "native_right" )
  132.     assign_key( "<Up>",        "native_up" )
  133.     assign_key( "<Down>",        "native_down" )
  134.  
  135.     assign_key( "<Keypad-7>",    "goto_bol" )
  136.     assign_key( "<Keypad-1>",    "goto_eol" )
  137.     assign_key( "<Keypad-9>",    "page_up" )
  138.     assign_key( "<Keypad-3>",    "page_down" )
  139.     assign_key( "<Keypad-4>",    "left" )
  140.     assign_key( "<Keypad-6>",    "right" )
  141.     assign_key( "<Keypad-8>",    "up" )
  142.     assign_key( "<Keypad-2>",    "down" )
  143.  
  144.     assign_key( "<Ctrl-Home>",    "goto_window_top" )
  145.     assign_key( "<Ctrl-End>",    "goto_window_bottom" )
  146.     assign_key( "<Ctrl-PgUp>",    "goto_buffer_top" )
  147.     assign_key( "<Ctrl-PgDn>",    "goto_buffer_bottom" )
  148.     assign_key( "<Ctrl-Left>",    "prev_word" )
  149.     assign_key( "<Ctrl-Right>",    "next_word" )
  150.  
  151.     assign_key( "<Keypad-*>",    "prev_line" )
  152.     assign_key( "<Keypad-Minus>",    "prev_line" )
  153.     assign_key( "<Keypad-+>",    "next_line" )
  154.  
  155. #        Alt key combinations on the main keyboard:
  156.  
  157.     assign_key( "<Alt-A>",        "set_exclusive_mark" )
  158.     assign_key( "<Alt-B>",        "buffer_list" )
  159.     assign_key( "<Alt-C>",        "copy_to_scrap_key" )
  160.     assign_key( "<Alt-D>",        "native_delete" )
  161.     assign_key( "<Alt-E>",        "edit_file_key" )
  162.     assign_key( "<Alt-F>",        "display_filename 1" )
  163.     assign_key( "<Alt-G>",        "goto_line_or_mark" )
  164.     assign_key( "<Alt-H>",        "help" )
  165.     assign_key( "<Alt-I>",        "toggle_insert_mode" )
  166.     assign_key( "<Alt-J>",        "join_lines" )
  167.     assign_key( "<Alt-K>",        "delete_to_eol" )
  168.     assign_key( "<Alt-L>",        "set_line_mark" )
  169.     assign_key( "<Alt-M>",        "mark_matching" )
  170.     assign_key( "<Alt-N>",        "next_buffer_key" )
  171.     assign_key( "<Alt-O>",        "change_output_name" )
  172.     assign_key( "<Alt-P>",        "wrap_paragraph" )
  173.     assign_key( "<Alt-Q>",        "done" )
  174.     assign_key( "<Alt-R>",        "read_file_key" )
  175.     assign_key( "<Alt-S>",        "search_forward" )
  176.     assign_key( "<Alt-T>",        "replace_forward" )
  177.     assign_key( "<Alt-U>",        "undo" )
  178.     assign_key( "<Alt-V>",        "print_version" )
  179.     assign_key( "<Alt-W>",        "write_block_key" )
  180.     assign_key( "<Alt-X>",        "done" )
  181.     assign_key( "<Alt-Y>",        "redo" )
  182.     assign_key( "<Alt-Z>",        "system" )
  183.  
  184.     # Alt-digit codes:
  185.  
  186.     assign_key( "<Alt-1>",        "place_bookmark 1" )
  187.     assign_key( "<Alt-2>",        "place_bookmark 2" )
  188.     assign_key( "<Alt-3>",        "place_bookmark 3" )
  189.     assign_key( "<Alt-4>",        "place_bookmark 4" )
  190.     assign_key( "<Alt-5>",        "place_bookmark 5" )
  191.     assign_key( "<Alt-6>",        "place_bookmark 6" )
  192.     assign_key( "<Alt-7>",        "place_bookmark 7" )
  193.     assign_key( "<Alt-8>",        "place_bookmark 8" )
  194.     assign_key( "<Alt-9>",        "place_bookmark 9" )
  195.     assign_key( "<Alt-0>",        "place_bookmark 10" )
  196.  
  197.     # Function key combinations:
  198.  
  199.     assign_key( "<F1>",        "prev_window" )
  200.     assign_key( "<F2>",        "next_window" )
  201.     assign_key( "<F3>",        "prev_buffer_key" )
  202.     assign_key( "<F4>",        "next_buffer_key" )
  203.     assign_key( "<F5>",        "search_backward" )
  204.     assign_key( "<F6>",        "search_forward" )
  205.     assign_key( "<F7>",        "record_key" )
  206.     assign_key( "<F8>",        "playback_macro" )
  207.     assign_key( "<F9>",        "system_key" )
  208.     assign_key( "<F10>",        "invoke_function" )
  209.  
  210.     assign_key( "<Alt-F1>",        "split_window_horizontal" )
  211.     assign_key( "<Alt-F2>",        "split_window_vertical" )
  212.     assign_key( "<Alt-F3>",        "make_window" )
  213.     assign_key( "<Alt-F4>",        "delete_tiled_window" )
  214.     assign_key( "<Alt-F5>",        "search_again_backward" )
  215.     assign_key( "<Alt-F6>",        "search_again_forward" )
  216.     assign_key( "<Alt-F7>",        "learn_key" )
  217. #    assign_key( "<Alt-F8>",        "beep" )
  218. #    assign_key( "<Alt-F9>",        "beep" )
  219.     assign_key( "<Alt-F10>",    "compile_buffer" )
  220.  
  221.     assign_key( "<Shift-F1>",    "smaller_window" ) 
  222.     assign_key( "<Shift-F2>",    "larger_window" )
  223.     assign_key( "<Shift-F3>",    "organize_windows" )
  224.     assign_key( "<Shift-F4>",    "organize_buffers" )
  225. #    assign_key( "<Shift-F5>",    "beep" )
  226. #    assign_key( "<Shift-F6>",    "beep" )
  227.     assign_key( "<Shift-F7>",    "display_errors" )
  228.     assign_key( "<Shift-F8>",    "goto_next_error" )
  229. #    assign_key( "<Shift-F9>",    "beep" )
  230. #    assign_key( "<Shift-F10>",    "beep" )
  231.  
  232. #    assign_key( "<Ctrl-F1>",    "beep" )
  233. #    assign_key( "<Ctrl-F2>",    "beep" )
  234. #    assign_key( "<Ctrl-F3>",    "beep" )
  235. #    assign_key( "<Ctrl-F4>",    "beep" )
  236. #    assign_key( "<Ctrl-F5>",    "beep" )
  237. #    assign_key( "<Ctrl-F6>",    "beep" )
  238. #    assign_key( "<Ctrl-F7>",    "beep" )
  239. #    assign_key( "<Ctrl-F8>",    "beep" )
  240. #    assign_key( "<Ctrl-F9>",    "beep" )
  241. #    assign_key( "<Ctrl-F10>",    "beep" )
  242.  
  243.     assign_mouse_buttons()
  244. }
  245.  
  246. ## native arrow keys; they're multiplexed depending on the ScrollLock button
  247. #
  248. function native_left(){        # Left-Arrow
  249.     if( and( keyboard_flags, 0x10 )){
  250.         scroll_left_1()
  251.     } else
  252.         prev_char()
  253. }
  254.  
  255. function native_right(){    # Right-Arrow
  256.     if( and( keyboard_flags, 0x10 )){
  257.         scroll_right_1()
  258.     } else
  259.         next_char()
  260. }
  261.  
  262. function native_up(){        # Up-Arrow
  263.     if( and( keyboard_flags, 0x10 )){
  264.         scroll_up_1()
  265.     } else
  266.         up()
  267. }
  268.  
  269. function native_down(){        # Down-Arrow
  270.     if( and( keyboard_flags, 0x10 )){
  271.         scroll_down_1()
  272.     } else
  273.         down()
  274. }
  275.  
  276. function join_lines(){
  277.     local ins
  278.  
  279.     goto_eol()
  280.     while( read_buffer( -1 ) ~ /[ \t]/ )
  281.         prev_char()
  282.  
  283.     ins = ( read_buffer( -1 ) == "." ) ? "  " : " "
  284.  
  285.     drop_anchor()
  286.     next_line()
  287.     delete_to_scrap()
  288.  
  289.     if( read_buffer( 1 ) != "(" )
  290.         insert_string( ins )
  291. }
  292.  
  293. # delete_to_scrap() even if single character
  294.  
  295. function native_delete(){
  296.     if( !region_type()){
  297.         drop_anchor( INCLUSIVE_SELECTION )
  298.     }
  299.     delete_to_scrap()
  300. }
  301.  
  302.  
  303. # cut or append lines to scrap
  304. #    Cut on the first invocation, append on subsequent, contiguous calls
  305. #    !! This works properly only when the function is invoked via a
  306. #    !!    single-key keymap function.
  307.  
  308.  
  309. function native_cut_lines(){
  310.     if( region_type() != LINE_SELECTION )
  311.         drop_anchor( LINE_SELECTION )
  312.  
  313.     if( current_key == prev_key ){
  314.         append_to_scrap()
  315.         delete_chars()
  316.     } else
  317.         delete_to_scrap()
  318. }
  319.