home *** CD-ROM | disk | FTP | other *** search
/ Mega Top 1 / os2_top1.zip / os2_top1 / DEMO / RIM22 / MACROS / BORLIDE.RM < prev    next >
Text File  |  1994-01-10  |  12KB  |  432 lines

  1. /*
  2. ** Macro module: borlide.rm - Borland's IDE keyboard map
  3. **
  4. **
  5. ** Copyright (C) 1993 Brian L. Smith
  6. ** Copyright (C) 1993 RimStar Technology, Inc.
  7. ** All rights reserved internationally.
  8. ** Unlicensed use is a violation of applicable laws.
  9. **
  10. ** This source code is provided to licensed users of RimStar's products
  11. ** for the purpose of allowing the user to customize and/or enhance RimStar's
  12. ** products. The source code remains the property of the copyright holders
  13. ** with all rights reserved internationally.
  14. ** Any modifications to the source code are considered derivative works and
  15. ** all rights thereto are reserved to the copyright holders except
  16. ** that the purchaser may use the derivitive work in the same manner
  17. ** as permitted by the license governing the unmodified product.
  18. ** Distribution in any manner of any part of the original source code,
  19. ** whether in source or object form, is expressly prohibited without the
  20. ** express written permission of the copyright holders.
  21. **
  22. */
  23.  
  24. #include "macro.h"
  25.  
  26.     /*
  27.     ** This sets up the editor for Borland's IDE keyboard mapping.
  28.     ** To have the editor use this - copy or rename borlide.obm
  29.     ** to keyboard.obm. This file includes many useful functions that may 
  30.     ** not be supported by Borland's IDE. Some of these have been commented
  31.     ** out. To use these functions uncomment them and change the key bindings
  32.     ** to whatever key bindings you want to use, recompile this file, and then
  33.     ** copy borlide.obm to keyboard.obm and reload the editor.
  34.     */
  35.  
  36. void
  37. _init(void) {
  38.     LibAutoload("misc",         "quote", "next_word", "prev_word", "tospace",
  39.                                     "delete_next_word", "delete_prev_word");
  40.     LibAutoload("c_smart",    "find_matching_delim", "_c_indent");
  41.     LibAutoload("Search",    "SearchSel", "SelWord");
  42.     LibAutoload("Buffer",    "EditFile", "SaveBuffer");
  43.     LibAutoload("Kbd",         "KbdBindAsciiKeys" );
  44. } /* end _init() */
  45.  
  46.  
  47.  
  48. void
  49. KbdBindDefault() {
  50.     char  *self_insert = "SelfInsert";
  51.     char  *p;
  52.  
  53.     /* call function for cua mapping */
  54.     KbdBindAsciiKeys();
  55.  
  56.     /*
  57.     ** bookmarks
  58.     */
  59.     KbdBind("Ctrl+K+1",             "BookmarkSet 1");
  60.     KbdBind("Ctrl+K+2",             "BookmarkSet 2");
  61.     KbdBind("Ctrl+K+3",             "BookmarkSet 3");
  62.     KbdBind("Ctrl+K+4",             "BookmarkSet 4");
  63.     KbdBind("Ctrl+K+5",             "BookmarkSet 5");
  64.     KbdBind("Ctrl+K+6",             "BookmarkSet 6");
  65.     KbdBind("Ctrl+K+7",             "BookmarkSet 7");
  66.     KbdBind("Ctrl+K+8",             "BookmarkSet 8");
  67.     KbdBind("Ctrl+K+9",             "BookmarkSet 9");
  68.     KbdBind("Ctrl+K+0",             "BookmarkSet 10");
  69.  
  70.     KbdBind("Ctrl+Q+1",            "BookmarkGoto 1");
  71.     KbdBind("Ctrl+Q+2",            "BookmarkGoto 2");
  72.     KbdBind("Ctrl+Q+3",            "BookmarkGoto 3");
  73.     KbdBind("Ctrl+Q+4",            "BookmarkGoto 4");
  74.     KbdBind("Ctrl+Q+5",            "BookmarkGoto 5");
  75.     KbdBind("Ctrl+Q+6",            "BookmarkGoto 6");
  76.     KbdBind("Ctrl+Q+7",            "BookmarkGoto 7");
  77.     KbdBind("Ctrl+Q+8",            "BookmarkGoto 8");
  78.     KbdBind("Ctrl+Q+9",            "BookmarkGoto 9");
  79.     KbdBind("Ctrl+Q+0",            "BookmarkGoto 10");
  80.  
  81.     /* 
  82.     ** help
  83.     */
  84.  
  85.     /* 
  86.     ** Insert & Deletions
  87.     */
  88.  
  89.     KbdBind("Ctrl+V",                p="ToggleInsert");
  90.     KbdBind("INSERT",             p);
  91.     KbdBind("KP_INSERT",            p);
  92.     KbdBind("Ctrl+N",                "InsertNewLine");
  93.     KbdBind("Alt+Y",                "BufDeleteLine");
  94.     KbdBind("Ctrl+Q+Y",             "BufDeleteToEOL");
  95.     KbdBind("Ctrl+H",                p="BufDeletePrevChar");
  96.     KbdBind("BACKSPACE",            p);
  97.       KbdBind("Ctrl+G",                  p="BufDeleteCharOrSelection");
  98.     KbdBind("Ctrl+K+Y",             p);
  99.     KbdBind("DELETE",                p);
  100.     KbdBind("KP_DELETE",            p);
  101.     KbdBind("Ctrl+T",                "delete_next_word");    /* in misc.rm */
  102.     KbdBind("Ctrl+BACKSPACE",    "delete_prev_word");    /* in misc.rm */
  103.     KbdBind("Ctrl+-",                  "BufDeleteCurrentBuffer");
  104.     KbdBind("Alt+|",                 "BufDeleteWhitespace");
  105.     KbdBind("Shift+DELETE",        p="BufDeleteToScrap");
  106.       KbdBind("Shift+KP_DELETE",    p);
  107.     KbdBind("Shift+KP_MINUS",    p);
  108.     KbdBind("Ctrl+K+R",            "BufInsertFile");
  109.     KbdBind("Ctrl+K+W",            "BufWriteSel");
  110.  
  111.     /*
  112.     ** Dialogs
  113.     */
  114.     KbdBind("Alt+B",                "DlgBufferList");
  115.     KbdBind("Alt+V",                 "DlgVersion");
  116.     KbdBind("Alt+O",                 "DlgRenameBuffer");
  117.     KbdBind("Alt+W",                 "SaveBuffer");
  118.     KbdBind("Alt+E",                "DlgOpenFile");
  119.     KbdBind("Alt+G",                "DlgGotoLine");
  120.  
  121.     /* search & replace */
  122.     KbdBind("ALT+S+ALT+F",         "SearchSel 1");
  123.     KbdBind("ALT+S+ALT+B",         "SearchSel 0");
  124.     KbdBind("Ctrl+Q+F",            "SearchForward");
  125.     KbdBind("Ctrl+Q+B",             "SearchBackward");
  126.     KbdBind("Ctrl+L",                "SearchAgain");
  127.     KbdBind("Ctrl+Q+A",            "ReplaceForward");
  128. //    KbdBind("Alt+F6",                "ReplaceBackward");
  129. //    KbdBind("Shift+F6",            "ReplaceAgain");
  130.  
  131.  
  132.     /*
  133.     ** Keystroke macros
  134.     */
  135.     KbdBind("Shift+Ctrl+R",        "KbdMacroRecord");      /* starts/stops keystroke macro recording */
  136.     KbdBind("Alt+F7",                "KbdMacroLoad");      /* load keystroke macro from disk */
  137.       KbdBind("Shift+F7",            "KbdMacroPause");        /* pause keystroke macro playback */
  138.     KbdBind("Shift+Ctrl+P",        "KbdMacroPlay");        /* plays a recorded keystroke macro */
  139.     KbdBind("Alt+F8",                "KbdMacroSave");          /* saves last recorded macro to disk */
  140.  
  141.     /*
  142.     ** Cursor movement
  143.     */
  144.     KbdBind("KP_LEFT",            p="MovLeft");
  145.     KbdBind("LEFT",                p);
  146.     KbdBind("Ctrl+S",                p);
  147.     KbdBind("KP_RIGHT",            p="MovRight"); 
  148.     KbdBind("RIGHT",                p); 
  149.     KbdBind("Ctrl+D",                p); 
  150.     KbdBind("Ctrl+A",                "prev_word");
  151.     KbdBind("Ctrl+F",                "next_word");    /* in misc.rm */
  152.     KbdBind("UP",                    p="MovUp");
  153.     KbdBind("KP_UP",                p);
  154.     KbdBind("Ctrl+E",                p);
  155.     KbdBind("DOWN",                p="MovDown");
  156.     KbdBind("KP_DOWN",            p);
  157.     KbdBind("Ctrl+X",                p);
  158.     KbdBind("PGUP",                p="MovPageUp");
  159.     KbdBind("Ctrl+R",                p);
  160.     KbdBind("KP_PGUP",            p);
  161.     KbdBind("Ctrl+C",                p="MovPageDown");
  162.     KbdBind("PGDN",                p);
  163.     KbdBind("KP_PGDN",            p);
  164.     KbdBind("Ctrl+W",                   p="WinScrollDown");
  165.     KbdBind("Ctrl+UP",              p);
  166.     KbdBind("Ctrl+KP_UP",           p);
  167.     KbdBind("Ctrl+Z",                  p="WinScrollUp");
  168.     KbdBind("Ctrl+DOWN",            p);
  169.     KbdBind("Ctrl+KP_Down",        p);
  170.  
  171.     KbdBind("Ctrl+HOME",            p="MovSOF");
  172.     KbdBind("Ctrl+KP_HOME",        p);
  173.     KbdBind("HOME",                p="MovSOT");
  174.     KbdBind("KP_HOME",            p);
  175.     KbdBind("Ctrl+END",            p="MovEOF");
  176.     KbdBind("Ctrl+KP_END",        p);
  177.     KbdBind("END",                    p="MovEOL");
  178.     KbdBind("KP_END",                p);
  179.  
  180.     KbdBind("Shift+TAB",              "MovPrevTabPos");
  181.  
  182.     KbdBind("Ctrl+Enter",         p="BufInsertNewline");
  183.     KbdBind("Ctrl+KP_Enter",    p);
  184.     KbdBind("Shift+ENTER",         p);
  185.     KbdBind("Shift+KP_ENTER",     p);
  186.  
  187.  
  188.     /*
  189.     ** selection operations
  190.     */
  191.     KbdBind("Ctrl+K+B",            p="WSMarkBeginSel");
  192.     KbdBind("Ctrl+K+Ctrl+B",    p);
  193.     KbdBind("Ctrl+K+K",            p="MarkEndSel");
  194.     KbdBind("Ctrl+K+Ctrl+K",    p);
  195.     KbdBind("Ctrl+K+T",            "SelWord");
  196.     KbdBind("Alt+A",                "MarkExclusive");
  197.     KbdBind("Alt+C",                "MarkColumn");
  198.     KbdBind("Alt+L",                 "MarkLine");
  199.     KbdBind("Alt+M",                 "MarkNormal");
  200. //    KbdBind("Ctrl+A",                  "MarkSwapSel");
  201.  
  202.     KbdBind("Alt+H",                "HelpQueryInfHelp");
  203.     /*
  204.     ** NOTE: To use QueryInfHelp you must add the following environment variable
  205.     **         to your config.sys:
  206.     **     SET RSE_INF=GUIREF20.INF+PMFUN.INF+PMGPI.INF+PMHOK.INF+PMMSG.INF+PMREL.INF+PMWIN.INF+PMWKP.INF
  207.     ** The setting is taken from the combination of the  PROGREF20 and PMREF environment variables
  208.     ** You may add additional .INF files or remove some.
  209.     */
  210.   #if 0
  211.     KbdBind("Alt+H",                "HelpQueryQuickHelp");    /* invokes Microsoft Quick Help program */
  212.   #endif
  213.  
  214.     /* 
  215.     ** toggles
  216.     */
  217.     KbdBind("Ctrl+O+T",             "ToggleTabs");
  218.  
  219.     KbdBind("Alt+N",                 "BufNextBuffer");
  220.     KbdBind("Ctrl+K+P",             "Print");
  221.  
  222.     KbdBind("Ctrl+P",             "quote");        /* in misc.rm */
  223.  
  224.     KbdBind("F3",                     "BufNewFile");
  225.     KbdBind("Alt+F3",              "BufPrevBuffer");
  226.  
  227.     /*
  228.     ** undo & redo operations
  229.     */
  230.     KbdBind("Ctrl+Q+L",                     p="Undo");
  231.     KbdBind("Alt+U",                         p);
  232.     KbdBind("Alt+BACKSPACE",             p);
  233.     KbdBind("Shift+Ctrl+BACKSPACE",     p);
  234.     KbdBind("KP_STAR",                      "UndoModification");
  235.     KbdBind("Shift+KP_STAR",              "RedoModification");
  236.     KbdBind("Shift+Ctrl+KP_STAR",        "UndoAll");
  237.     KbdBind("Shift+Alt +KP_STAR",        "RedoAll");
  238.  
  239.  
  240.     /*
  241.     **  All supported special key names follow, even those not assigned
  242.     **  just so you know what every key is named.
  243.     **
  244.     **  KP stands for the Key Pad keys.
  245.     **
  246.     **  Alt+ ESCAPE, Alt+TAB and Ctrl+ESCAPE are reserved for OS/2 PM's use
  247.     **  do not define these as they will be ignored.
  248.     */
  249.  
  250.     /* 
  251.     ** window operations
  252.     */
  253.     KbdBind("Ctrl+F10",               "WinMaximize");
  254.     KbdBind("F6",                      "WinNextWindow");
  255.     KbdBind("Shift+F6",            "WinPrevWindow");
  256.     KbdBind("F2",                    "WinTileWindows");
  257.     KbdBind("Ctrl+F4",             "WinDeleteCurrentWindow");
  258.     KbdBind("Ctrl+KP_HOME",        "MovTopWin");
  259.     KbdBind("Ctrl+KP_END",        "MovBottomWin");
  260.     KbdBind("Ctrl+B",                "WinScrollBottom");
  261.     KbdBind("Ctrl+C",                "WinScrollCenter");
  262.  
  263.     /* 
  264.     ** macro operations
  265.     */
  266.     KbdBind("F9",                    "LibLoadMacro");  
  267.     KbdBind("F10",                    "LibExecFunction");
  268.  
  269.     /*
  270.     ** For use in error output buffer - place cursor on error line
  271.     ** ALT+F9 jumps to file & line in error,  loading the file if needed
  272.     */
  273.     KbdBind("Alt+F9",                "ErrJumpToError");
  274.     KbdBind("Shift+F4",             "ErrPrevError");
  275.       KbdBind("Shift+F3",             "ErrNextError");
  276.     KbdBind("Ctrl+F3",            "ExecAssoc");        /* Run compilers, etc. */
  277.     KbdBind("Shift+Ctrl+F3",    "ExecKillProcess");    /* Stop compile */
  278.   #if 0
  279.     KbdBind("KP_5", "");
  280.   #endif
  281.  
  282.     /* 
  283.     ** cut/copy/paste
  284.     */
  285.     KbdBind("KP_MINUS",            "BufCutToScrap");
  286.     KbdBind("Ctrl+K+C",             p="BufCopyToScrap");
  287.     KbdBind("Ctrl+K+Ctrl+C",     p);
  288.     KbdBind("Ctrl+K+V",              p="BufPasteScrap");
  289.     KbdBind("Ctrl+K+Ctrl+V",      p);
  290.  
  291.     KbdBind("Shift+INSERT",        "ImportClipboard");
  292.     KbdBind("Ctrl+INSERT",        "ExportClipboard");
  293.  
  294.     KbdBind("Shift+Ctrl+-",          "WinDeleteWindowAndBuffer");
  295.     KbdBind("Ctrl+K+S",              p="SaveBuffer");
  296.     KbdBind("Ctrl+K+Ctrl+S",    p);
  297.       KbdBind("Shift+F2",            p);
  298.     KbdBind("F2",                      p);
  299.      KbdBind("Ctrl+J",             "tospace");
  300.     KbdBind("Alt+]",              p="find_matching_delim");    /* in c_smart.rm */
  301.     KbdBind("Alt+[",              p);
  302.     KbdBind("Ctrl+O+I",             "_c_indent");
  303.     KbdBind("Alt+X",                 "ExitEditor");
  304.  
  305.     /* Source browser bindings */
  306.     KbdBind("Ctrl+Alt+F12",        p="SbJumpBack");
  307.     KbdBind("Alt+J+B",            p);
  308.  
  309.     KbdBind("Alt+S+Alt+S",        p="SbBrowseSymbolAtCursor");
  310.     KbdBind("Alt+S+S",              p);
  311.     KbdBind("F11",                    p);
  312.     
  313.     KbdBind("Alt+S+Alt+D",         p="SbBrowseDefs");
  314.     KbdBind("Alt+S+D",              p);
  315.     KbdBind("Shift+F11",            p);
  316.  
  317.     KbdBind("Alt+S+Alt+M",         p="SbBrowseSymbolsDefinedInModule");
  318.     KbdBind("Alt+S+M",              p);
  319.     KbdBind("Alt+F11",            p);
  320.  
  321.     KbdBind("Alt+S+Alt+R",         p="SbBrowseRefs");
  322.     KbdBind("Alt+S+R",              p);
  323.     KbdBind("Ctrl+F11",            p);
  324.  
  325.     KbdBind("Alt+S+Alt+F",         p="SbFindNext");
  326.     KbdBind("Alt+S+F",              p);
  327.     KbdBind("F12",                    p);
  328.  
  329.     KbdBind("Alt+S+Alt+B",         p="SbFindPrev");
  330.     KbdBind("Alt+S+B",              p);
  331.     KbdBind("Shift+F12",            p);
  332.  
  333.     KbdBind("Alt+F12",            "SbGotoDef");
  334.  
  335. } /* end KbdBindDefault() - Borland IDE key map */
  336.  
  337.  
  338.  
  339.  
  340. void
  341. MarkToSOT(void) {
  342.     SELECTION p;
  343.     LONG line, column;
  344.     LONG sot_line, sot_column;
  345.  
  346.     BufQueryPosition( &line, &column);
  347.     PosSOT();
  348.     BufQueryPosition( &sot_line, &sot_column);
  349.     p.type = 1;
  350.     p.s_line = p.e_line = line;
  351.     p.s_column = sot_column;
  352.     p.e_column = column;
  353.     MarkCreateSel(&p);
  354.  
  355. } /* end MarkToSOT() */
  356.  
  357.  
  358.  
  359.  
  360. void
  361. BookmarkSet(USHORT number) {
  362.     HMARK        hMark;
  363.     USHORT    reply;
  364.     char        szTitle[32];
  365.  
  366.     hMark = MarkQueryGlobalFromID(number);
  367.     if ( !hMark )
  368.         hMark = MarkAllocGlobal(number);
  369.     else {
  370.         sprintf(szTitle, "Set bookmark %d", number);
  371.         reply = PopupMsgBox(    "This bookmark is already set. Overwrite?", szTitle,
  372.                                     MB_YESNO | MB_ICONQUESTION |
  373.                                     MB_MOVEABLE | MB_APPLMODAL);
  374.         if ( reply == MBID_YES )
  375.             MarkResetMark(hMark);
  376.     }
  377. } /* end BookmarkSet() */
  378.  
  379.  
  380. void
  381. BookmarkGoto(USHORT number) {
  382.     HMARK    hMark;
  383.     char    szTitle[32];
  384.  
  385.     hMark = MarkQueryGlobalFromID(number);
  386.     if ( hMark )
  387.         MarkGoto(hMark);
  388.     else {
  389.         sprintf(szTitle, "Jump to bookmark %d", number);
  390.         PopupMsg("That bookmark is not set", szTitle);
  391.     }
  392. } /* end BookmarkGoto() */
  393.  
  394.  
  395. void
  396. DeleteLineOrSelection( void ) {
  397.     SHORT rc;
  398.     SELECTION p;
  399.  
  400.     rc = MarkQuerySel( &p, 1);
  401.     if ( !rc )
  402.         BufDeleteLine();
  403.     else 
  404.         BufDeleteCharOrSelection();
  405.  
  406. } /* end DeleteLineOrSelection */
  407.  
  408. void
  409. WSMarkBeginSel( void ) {
  410.  
  411.     if ( MarkQuerySelType() )
  412.         MarkRemoveSel();
  413.     else
  414.         MarkBeginSel();
  415.  
  416. } /* end WSMarkBeginSel() */
  417.  
  418.  
  419. void
  420. InsertNewLine( void ) {
  421.  
  422.     BufInsertNewline();
  423.     MovUp();
  424.     MovEOL();
  425.  
  426. } /* end InsertNewLine */
  427.  
  428.  
  429. /*
  430. ** End module: pwb.rm 
  431. */
  432.