home *** CD-ROM | disk | FTP | other *** search
- # $Header: P:/source/ppee/macros/native.pev 1.65 06 Jul 1990 14:53:56 skipr $
-
- ##############################################################################
- #
- # Sage Software - POLYTRON Division
- # 1700 NW 167th Place
- # Beaverton, OR 97006
- #
- # Copyright 1990, Sage Software, Inc.
- #
- # Permission is hereby granted for licensed users of Sage Professional
- # Editor and PolyAwk to copy and modify this source code for their own
- # personal use. These derivative works may be distributed only to other
- # licensed Sage Professional Editor and PolyAwk users. All other usage
- # is prohibited without express written permission from Sage Software.
- #
- ##############################################################################
-
- #### $Workfile: native.pel $: Sage Professional Editor native mode
-
- local native_keymap = -1;
-
-
- ### Establish Sage Professional Editor native mode
-
- function native(){
-
- emulation_mode = "native"
- execute_event_handler( EVENT_EMULATION_CHANGED );
-
- default_window_flags = \
- nominal_border_flags = \
- WINDOW_STANDARD
-
- if ( !and(window_flags, WINDOW_SYSTEM )) {
- window_flags = default_window_flags
- }
-
- search_flags = \
- + SEARCH_MAXIMAL_MATCH \
- + SEARCH_FORWARD \
- + SEARCH_REGEX \
- + SEARCH_ADVANCE \
- # + SEARCH_IGNORE_CASE \
- # + SEARCH_WRAPS \
- # + SEARCH_HIGHLIGHT \
-
- toggle_auto_indent( 1 )
- toggle_electric( 1 )
-
- # Enable the keymap. Subsequent mods to the keymap will persist
- # through the end of the session.
- # Only one-time initialization should follow this point.
-
- if( native_keymap >= 0 ){
- current_keymap = native_keymap
- return
- }
-
- native_keymap = current_keymap = create_keymap( ascii_keymap )
-
- ### Native keyboard assignments
- #
-
- assign_key( "<Ctrl-A>", "optional_function display_ascii_table" )
- assign_key( "<Ctrl-B>", "scroll_window_bottom" )
- assign_key( "<Ctrl-C>", "scroll_window_middle" )
- assign_key( "<Ctrl-D>", "scroll_down_1" )
- assign_key( "<Ctrl-E>", "beep" )
- assign_key( "<Ctrl-F>", "beep" )
- assign_key( "<Ctrl-G>", "beep" )
- assign_key( "#8", "outdent_space_maybe" ) # Bksp or Ctrl-H
- # assign_key( "<Bksp>", "beep" )
- # assign_key( "<Ctrl-H>", "beep" )
- assign_key( "#9", "indent_tab_maybe" ) # Tab or Ctrl-I
- # assign_key( "<Tab>", "beep" )
- # assign_key( "<Ctrl-I>", "beep" )
- assign_key( "#10", "auto_indent_nl" ) # Ctrl-Enter or Ctrl-J
- # assign_key( "<Ctrl-Enter>", "beep" )
- # assign_key( "<Ctrl-J>", "beep" )
- assign_key( "<Ctrl-K>", "beep" )
- assign_key( "<Ctrl-L>", "scroll_left_1" )
- assign_key( "#13", "auto_indent_cr" ) # Enter or Ctrl-M
- # assign_key( "<Enter>", "beep" )
- # assign_key( "<Ctrl-M>", "beep" )
- assign_key( "<Ctrl-N>", "beep" )
- assign_key( "<Ctrl-O>", "beep" )
- assign_key( "<Ctrl-P>", "beep" )
- assign_key( "<Ctrl-Q>", "insert_quoted_key" )
- assign_key( "<Ctrl-R>", "scroll_right_1" )
- assign_key( "<Ctrl-S>", "beep" )
- assign_key( "<Ctrl-T>", "scroll_window_top" )
- assign_key( "<Ctrl-U>", "scroll_up_1" )
- assign_key( "<Ctrl-V>", "beep" )
- assign_key( "<Ctrl-W>", "beep" )
- assign_key( "<Ctrl-X>", "beep" )
- assign_key( "<Ctrl-Y>", "beep" )
- assign_key( "<Ctrl-Z>", "beep" )
- assign_key( "#27", "expand_template" ) # Ctrl-[ or Esc
- # assign_key( "<Esc>", "beep" )
- # assign_key( "<Ctrl-[>", "beep" )
- assign_key( "<Ctrl-\\>", "beep" )
- assign_key( "<Ctrl-]>", "beep" )
- assign_key( "<Ctrl-^>", "beep" )
- assign_key( "<Ctrl-_>", "beep" )
- assign_key( "<Ctrl-Bksp>", "beep" )
-
-
- # non-ASCII keys on main keyboard:
-
- assign_key( "<Shift-Tab>", "outdent_tab_maybe" )
- assign_key( "<Alt-Tab>", "outdent_tab_maybe" )
- assign_key( "<Ctrl-@>", "beep" )
- assign_key( "<Alt-Minus>", "delete_buffer_key" )
- assign_key( "<Alt-=>", "beep" )
-
- assign_key( "<Space>", "indent_outdent_space" ) # SP and Alt-SP
-
- # keypad keys:
-
- assign_key( "<Ins>", "insert_scrap" )
- assign_key( "<Del>", "native_delete" )
- assign_key( "<Keypad-0>", "paste_lines" )
- assign_key( "<Keypad-.>", "native_cut_lines" )
-
- assign_key( "<Home>", "goto_bol" )
- assign_key( "<End>", "goto_eol" )
- assign_key( "<PgUp>", "page_up" )
- assign_key( "<PgDn>", "page_down" )
- assign_key( "<Left>", "native_left" )
- assign_key( "<Right>", "native_right" )
- assign_key( "<Up>", "native_up" )
- assign_key( "<Down>", "native_down" )
-
- assign_key( "<Keypad-7>", "goto_bol" )
- assign_key( "<Keypad-1>", "goto_eol" )
- assign_key( "<Keypad-9>", "page_up" )
- assign_key( "<Keypad-3>", "page_down" )
- assign_key( "<Keypad-4>", "left" )
- assign_key( "<Keypad-6>", "right" )
- assign_key( "<Keypad-8>", "up" )
- assign_key( "<Keypad-2>", "down" )
-
- assign_key( "<Ctrl-Home>", "goto_window_top" )
- assign_key( "<Ctrl-End>", "goto_window_bottom" )
- assign_key( "<Ctrl-PgUp>", "goto_buffer_top" )
- assign_key( "<Ctrl-PgDn>", "goto_buffer_bottom" )
- assign_key( "<Ctrl-Left>", "prev_word" )
- assign_key( "<Ctrl-Right>", "next_word" )
-
- assign_key( "<Keypad-*>", "prev_line" )
- assign_key( "<Keypad-Minus>", "prev_line" )
- assign_key( "<Keypad-+>", "next_line" )
-
- # Alt key combinations on the main keyboard:
-
- assign_key( "<Alt-A>", "set_exclusive_mark" )
- assign_key( "<Alt-B>", "buffer_list" )
- assign_key( "<Alt-C>", "copy_to_scrap_key" )
- assign_key( "<Alt-D>", "native_delete" )
- assign_key( "<Alt-E>", "edit_file_key" )
- assign_key( "<Alt-F>", "display_filename 1" )
- assign_key( "<Alt-G>", "goto_line_or_mark" )
- assign_key( "<Alt-H>", "help" )
- assign_key( "<Alt-I>", "toggle_insert_mode" )
- assign_key( "<Alt-J>", "join_lines" )
- assign_key( "<Alt-K>", "delete_to_eol" )
- assign_key( "<Alt-L>", "set_line_mark" )
- assign_key( "<Alt-M>", "mark_matching" )
- assign_key( "<Alt-N>", "next_buffer_key" )
- assign_key( "<Alt-O>", "change_output_name" )
- assign_key( "<Alt-P>", "wrap_paragraph" )
- assign_key( "<Alt-Q>", "done" )
- assign_key( "<Alt-R>", "read_file_key" )
- assign_key( "<Alt-S>", "search_forward" )
- assign_key( "<Alt-T>", "replace_forward" )
- assign_key( "<Alt-U>", "undo" )
- assign_key( "<Alt-V>", "print_version" )
- assign_key( "<Alt-W>", "write_block_key" )
- assign_key( "<Alt-X>", "done" )
- assign_key( "<Alt-Y>", "redo" )
- assign_key( "<Alt-Z>", "system" )
-
- # Alt-digit codes:
-
- assign_key( "<Alt-1>", "place_bookmark 1" )
- assign_key( "<Alt-2>", "place_bookmark 2" )
- assign_key( "<Alt-3>", "place_bookmark 3" )
- assign_key( "<Alt-4>", "place_bookmark 4" )
- assign_key( "<Alt-5>", "place_bookmark 5" )
- assign_key( "<Alt-6>", "place_bookmark 6" )
- assign_key( "<Alt-7>", "place_bookmark 7" )
- assign_key( "<Alt-8>", "place_bookmark 8" )
- assign_key( "<Alt-9>", "place_bookmark 9" )
- assign_key( "<Alt-0>", "place_bookmark 10" )
-
- # Function key combinations:
-
- assign_key( "<F1>", "prev_window" )
- assign_key( "<F2>", "next_window" )
- assign_key( "<F3>", "prev_buffer_key" )
- assign_key( "<F4>", "next_buffer_key" )
- assign_key( "<F5>", "search_backward" )
- assign_key( "<F6>", "search_forward" )
- assign_key( "<F7>", "record_key" )
- assign_key( "<F8>", "playback_macro" )
- assign_key( "<F9>", "system_key" )
- assign_key( "<F10>", "invoke_function" )
-
- assign_key( "<Alt-F1>", "split_window_horizontal" )
- assign_key( "<Alt-F2>", "split_window_vertical" )
- assign_key( "<Alt-F3>", "make_window" )
- assign_key( "<Alt-F4>", "delete_tiled_window" )
- assign_key( "<Alt-F5>", "search_again_backward" )
- assign_key( "<Alt-F6>", "search_again_forward" )
- assign_key( "<Alt-F7>", "learn_key" )
- # assign_key( "<Alt-F8>", "beep" )
- # assign_key( "<Alt-F9>", "beep" )
- assign_key( "<Alt-F10>", "compile_buffer" )
-
- assign_key( "<Shift-F1>", "smaller_window" )
- assign_key( "<Shift-F2>", "larger_window" )
- assign_key( "<Shift-F3>", "organize_windows" )
- assign_key( "<Shift-F4>", "organize_buffers" )
- # assign_key( "<Shift-F5>", "beep" )
- # assign_key( "<Shift-F6>", "beep" )
- assign_key( "<Shift-F7>", "display_errors" )
- assign_key( "<Shift-F8>", "goto_next_error" )
- # assign_key( "<Shift-F9>", "beep" )
- # assign_key( "<Shift-F10>", "beep" )
-
- # assign_key( "<Ctrl-F1>", "beep" )
- # assign_key( "<Ctrl-F2>", "beep" )
- # assign_key( "<Ctrl-F3>", "beep" )
- # assign_key( "<Ctrl-F4>", "beep" )
- # assign_key( "<Ctrl-F5>", "beep" )
- # assign_key( "<Ctrl-F6>", "beep" )
- # assign_key( "<Ctrl-F7>", "beep" )
- # assign_key( "<Ctrl-F8>", "beep" )
- # assign_key( "<Ctrl-F9>", "beep" )
- # assign_key( "<Ctrl-F10>", "beep" )
-
- assign_mouse_buttons()
- }
-
- ## native arrow keys; they're multiplexed depending on the ScrollLock button
- #
- function native_left(){ # Left-Arrow
- if( and( keyboard_flags, 0x10 )){
- scroll_left_1()
- } else
- prev_char()
- }
-
- function native_right(){ # Right-Arrow
- if( and( keyboard_flags, 0x10 )){
- scroll_right_1()
- } else
- next_char()
- }
-
- function native_up(){ # Up-Arrow
- if( and( keyboard_flags, 0x10 )){
- scroll_up_1()
- } else
- up()
- }
-
- function native_down(){ # Down-Arrow
- if( and( keyboard_flags, 0x10 )){
- scroll_down_1()
- } else
- down()
- }
-
- function join_lines(){
- local ins
-
- goto_eol()
- while( read_buffer( -1 ) ~ /[ \t]/ )
- prev_char()
-
- ins = ( read_buffer( -1 ) == "." ) ? " " : " "
-
- drop_anchor()
- next_line()
- delete_to_scrap()
-
- if( read_buffer( 1 ) != "(" )
- insert_string( ins )
- }
-
- # delete_to_scrap() even if single character
-
- function native_delete(){
- if( !region_type()){
- drop_anchor( INCLUSIVE_SELECTION )
- }
- delete_to_scrap()
- }
-
-
- # cut or append lines to scrap
- # Cut on the first invocation, append on subsequent, contiguous calls
- # !! This works properly only when the function is invoked via a
- # !! single-key keymap function.
-
-
- function native_cut_lines(){
- if( region_type() != LINE_SELECTION )
- drop_anchor( LINE_SELECTION )
-
- if( current_key == prev_key ){
- append_to_scrap()
- delete_chars()
- } else
- delete_to_scrap()
- }
-