home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
p2demo21.exe
/
PEL
/
NATIVE.PEL
< prev
next >
Wrap
Text File
|
1995-03-21
|
14KB
|
383 lines
# $Header: P:\source\wmacros\native.pev 1.42 21 Mar 1995 09:02:50 WALKER $
## $Tabs:4 7$
##############################################################################
#
# Compuware Corporation
# 31440 Northwestern Highway
# Farmington Hills, Michigan 48334-2564
#
# This source code listing contains information that is
# proprietary to Compuware Corporation and may not be copied
# duplicated, translated, transmitted, stored, retrieved
# or in any manner or by any method conveyed or disclosed
# to a third party or parties without express written
# permission from Compuware Corporation.
#
#
##############################################################################
#### $Workfile: native.pel $: Sage Professional Editor native mode
local native_keymap = -1;
### Establish Sage Professional Editor native mode
function native()
{
local prevPauseOnError
if (emulation_mode == "native")
return;
emulation_mode = "native"
execute_event_handler( EVENT.EMULATION_CHANGED );
attach_event_handler(EVENT.EMULATION_CHANGED, function_id("native_exit"))
# pause if an error or warning occurs during initialization
prevPauseOnError = pause_on_error
pause_on_error = 1
create_native_keymap()
native_menu()
if ( !and(window_flags, WINDOW_SYSTEM ))
window_flags = default_window_flags
search_flags = SEARCH_MAXIMAL_MATCH \
+ SEARCH_FORWARD \
+ SEARCH_REGEX \
+ SEARCH_ADVANCE \
# + SEARCH_WRAPS \
# + SEARCH_HIGHLIGHT \
toggle_auto_indent( 1 )
toggle_electric( 1 )
pause_on_error = prevPauseOnError
}
global function create_native_keymap()
{
# 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
}
else
{
current_keymap = native_keymap = create_keymap( ascii_keymap )
native_menu()
assign_native_keys()
assign_native_f_keys()
assign_native_misc_keys()
# assign_mouse_buttons()
optional_function("local_keys")
}
}
global function assign_native_keys()
{
#--------------------------------------------------------------
# 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-E>", "create_buf_and_win_key" )
assign_key( "<Alt-F>", "display_filename 1" )
assign_key( "<Alt-G>", "goto_line_or_mark" )
assign_key( "<Alt-H>", "display_help_item" )
assign_key( "<Alt-I>", function_id("toggle_buffer_flags", BUFFER_OVERTYPE_MODE) )
assign_key( "<Alt-K>", "delete_to_eol" )
assign_key( "<Alt-J>", "goto_bookmark" )
assign_key( "<Alt-L>", "set_line_mark" )
assign_key( "<Alt-M>", "mark_matching" )
assign_key( "<Alt-N>", "next_buffer_mask" )
assign_key( "<Alt-O>", "write_buffer_key" )
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_buffer_key" )
assign_key( "<Alt-X>", "done" )
assign_key( "<Alt-Y>", "redo" )
assign_key( "<Alt-Z>", "system" )
assign_key( "<Alt-Space>", "outdent_space_maybe" )
#--------------------------------------------------------------
# Ctrl key combinations on the main keyboard:
#--------------------------------------------------------------
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( "<Ctrl-J>", "join_lines" )
assign_key( "<Ctrl-K>", "beep" )
assign_key( "<Ctrl-L>", "scroll_left_1" )
assign_key( "<Ctrl-N>", "beep" )
assign_key( "<Ctrl-O>", "beep" )
assign_key( "<Ctrl-P>", "gui_print" )
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( "<Ctrl-\\>", "beep" )
assign_key( "<Ctrl-]>", "beep" )
assign_key( "<Ctrl-^>", "beep" )
assign_key( "<Ctrl-_>", "beep" )
}
global function assign_native_f_keys()
{
#--------------------------------------------------------------
# Function Key bindings
#--------------------------------------------------------------
# assign_key( "<F1>", "prev_window" )
# assign_key( "<F2>", "next_window" )
assign_key( "<F3>", "prev_buffer_mask" )
assign_key( "<F4>", "next_buffer_mask" )
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>", "done2" )
assign_key( "<Alt-F5>", "search_again_backward" )
assign_key( "<Alt-F6>", "search_again_forward" )
# assign_key( "<Alt-F7>", "learn_key" )
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-F8>", "goto_next_error" )
assign_key( "<Ctrl-F1>", "display_help_item" )
}
global function assign_native_misc_keys()
{
#--------------------------------------------------------------
# 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" )
#--------------------------------------------------------------
# Numpad keys
#--------------------------------------------------------------
assign_key( "<Num-1>", "goto_eol" )
assign_key( "<Num-2>", "down" )
assign_key( "<Num-3>", "page_down" )
assign_key( "<Num-4>", "left" )
assign_key( "<Num-6>", "right" )
assign_key( "<Num-7>", "goto_bol" )
assign_key( "<Num-8>", "up" )
assign_key( "<Num-9>", "page_up" )
assign_key( "<Num-0>", "paste_lines" )
assign_key( "<Num-.>", "native_cut_lines" )
assign_key( "<Num-*>", "prev_line" )
assign_key( "<Num-->", "prev_line" )
assign_key( "<Alt-Num-->", "delete_buffer_key" )
assign_key( "<Num-+>", "next_line" )
#--------------------------------------------------------------
# non-ASCII keys on main keyboard:
#--------------------------------------------------------------
assign_key( "<Ctrl-Backspace>", "outdent_space_maybe" )
assign_key( "<Backspace>", "outdent_space_maybe" ) # Bksp or Ctrl-H
assign_key( "<Shift-Backspace>","outdent_space_maybe" ) # Bksp or Ctrl-H
assign_key( "<Shift-Space>", "insert_key 32");
assign_key( "<Ctrl-Space>", "insert_key 32");
assign_key( "<Tab>", "indent_tab_maybe" ) # Tab or Ctrl-I
assign_key( "<Ctrl-Enter>", "auto_indent_nl" ) # Ctrl-Enter or Ctrl-J
assign_key( "<Enter>", "auto_indent_cr" ) # Enter or Ctrl-M
assign_key( "<Esc>", "expand_template_key" ) # Ctrl-[ or Esc
# use BackTab for OS2 and Shift-Tab for windows
assign_key( "<BackTab>", "outdent_tab_maybe" )
assign_key( "<Alt-Tab>", "outdent_tab_maybe" )
assign_key( "<Ctrl-@>", "beep" )
assign_key( "<Alt-->", "delete_buffer_key" )
assign_key( "<Alt-=>", "beep" )
assign_key( "<Space>", "indent_space_maybe" ) # SP and Alt-SP
#--------------------------------------------------------------
# keypad keys:
#--------------------------------------------------------------
assign_key( "<Insert>", "insert_scrap" )
assign_key( "<Delete>", "native_delete" )
assign_key( "<Shift-Delete>", "delete_to_scrap")
assign_key( "<Home>", "goto_bol" )
assign_key( "<End>", "goto_eol" )
assign_key( "<PageUp>", "page_up" )
assign_key( "<PageDown>", "page_down" )
assign_key( "<Left>", "native_left" )
assign_key( "<Right>", "native_right" )
assign_key( "<Shift-Left>", "native_left" )
assign_key( "<Shift-Right>", "native_right" )
assign_key( "<Up>", "native_up" )
assign_key( "<Down>", "native_down" )
assign_key( "<Ctrl-Home>", "goto_window_top" )
assign_key( "<Ctrl-End>", "goto_window_bottom" )
assign_key( "<Ctrl-PageUp>", "goto_buffer_top" )
assign_key( "<Ctrl-PageDown>", "goto_buffer_bottom" )
assign_key( "<Ctrl-Left>", "prev_word" )
assign_key( "<Ctrl-Right>", "next_word" )
}
# this function is used to customize the menu so that the keys you have
# assigned to do the same thing as the menuitem will show on the menu
# It should be global and start with the string inside emulation_mode
function native_menu()
{
# first, do a global fix
optional_function( "fix_menu_text" )
# add keys to menu that contain non-special-dialog box functions
optional_function( "fix_menu_text", IDM_ADDFILE, "create_buf_and_win_key" )
optional_function( "fix_menu_text", IDM_SAVE, "write_buffer_key" )
optional_function( "fix_menu_text", IDM_CLOSE, "delete_buffer_key" )
optional_function( "fix_menu_text", IDM_SAVEAS, "write_buffer_key" )
optional_function( "fix_menu_text", IDM_FIND, "search_forward" )
optional_function( "fix_menu_text", IDM_FINDAGAIN, "search_again_forward" )
optional_function( "fix_menu_text", IDM_CHANGE, "replace_forward" )
optional_function( "fix_menu_text", IDM_COMMAND, "invoke_function" )
optional_function( "fix_menu_text", IDM_INSERTFILE, "read_file_key" )
optional_function( "fix_menu_text", IDM_CUT, "native_delete" )
}
function native_exit()
{
# delete event handlers
delete_event(EVENT.EMULATION_CHANGED, function_id("native_exit"))
}
## 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( !selection_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( selection_type() != LINE_SELECTION )
drop_anchor( LINE_SELECTION )
if( current_key == prev_key )
{
append_to_scrap()
delete_chars()
}
else
delete_to_scrap()
}