home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / p2demo21.exe / PEL / BUFFRSET.PEL < prev    next >
Text File  |  1995-03-15  |  39KB  |  1,178 lines

  1. # $Header:   P:\source\wmacros\buffrset.pev   1.59   15 Mar 1995 09:21:20   WALKER  $
  2. # $Tabs:4 7$
  3.  
  4. ##############################################################################
  5. #
  6. #       Compuware Corporation
  7. #         31440 Northwestern Highway
  8. #           Farmington Hills, Michigan 48334-2564
  9. #
  10. #   This source code listing contains information that is
  11. #   proprietary to Compuware Corporation and may not be copied
  12. #   duplicated, translated, transmitted, stored, retrieved
  13. #   or in any manner or by any method conveyed or disclosed
  14. #   to a third party or parties without express written
  15. #   permission from Compuware Corporation.
  16. #
  17. #  
  18. ##############################################################################
  19.  
  20. #### $Workfile:   buffrset.pel  $: Notebook settings
  21.  
  22. local dhBufferSettings1    = 0
  23. local dhBufferSettings2    = 0
  24. local dhBufferSettings3    = 0
  25.  
  26. local phBufferSettings1    = 0
  27. local phBufferSettings2    = 0
  28. local phBufferSettings3    = 0
  29.  
  30. local IDB_APPLY_TO_ALL   = 1319;
  31. local IDC_BUF_WP_WRAP_CONTINUOUS = 1347
  32. local IDC_BUF_WP_CARRY_COMMENTS  = 1348
  33. local IDR_CURRENT_BUFFER = 1316;
  34. local IDR_DEFAULT        = 1317;
  35. local IDR_TYPES          = 1318;
  36.  
  37. global BUFFER1MASK = BUFFER_EXPAND_TABS + BUFFER_OVERTYPE_MODE   + BUFFER_TABS_TO_SPACES + 
  38.                     BUFFER_SNAP_TO_EOL + BUFFER_REAL_SPACE_ONLY + BUFFER_READ_ONLY;
  39.  
  40. global BUFFER3MASK = BUFFER_WP_CARRY_COMMENTS + BUFFER_WP_ENABLED + BUFFER_WP_WRAP_CONTINUOUS;
  41.  
  42. #local BUFFER1 = 0x1;
  43. #local BUFFER2 = 0x2;
  44. #local BUFFER3 = 0x4;
  45.  
  46. global function buffer_settings_notebook(dlgid)
  47. {
  48.    local dhHelpSettings, phHelpSettings;
  49.  
  50.    nb_initializing = TRUE;
  51.  
  52.    if (dlgid)
  53.    {
  54.       if(status_bar_flags )
  55.          message( "Creating Buffer Settings Pages..." );
  56.  
  57.       phHelpSettings = append_notebook_page( dlgid, dhHelpSettings,
  58.                                              " ",   
  59.                                              "Buffer" )
  60.       nbPagePrefix[phHelpSettings].name = "bufferhelp";
  61.  
  62.       phBufferSettings1 = append_notebook_page( dlgid, dhBufferSettings1,
  63.                                              " Buffer Specific Settings",   
  64.                                              "Buffer Flags", NBTAB_MINOR )
  65.       nbPagePrefix[phBufferSettings1].name = "buffer1";
  66.  
  67.       phBufferSettings2 = append_notebook_page( dlgid, dhBufferSettings2,
  68.                                              " Tabs and Auto Indent",   
  69.                                              "Misc", NBTAB_MINOR )
  70.       nbPagePrefix[phBufferSettings2].name = "buffer2";
  71.  
  72.       phBufferSettings3 = append_notebook_page( dlgid, dhBufferSettings3,
  73.                                              " Word Processing",   
  74.                                              "Word Proc", NBTAB_MINOR )
  75.       nbPagePrefix[phBufferSettings3].name = "buffer3";
  76.    }
  77.    else
  78.    {
  79.       warning("Illegal call to buffer_settings_notebook()");
  80.    }
  81.  
  82.    nb_initializing = FALSE;
  83. }
  84.  
  85. global function reset_buffer_settings_notebook()
  86. {
  87.    dhBufferSettings1    = 0
  88.    dhBufferSettings2    = 0
  89.    dhBufferSettings3    = 0
  90.    
  91.    phBufferSettings1    = 0
  92.    phBufferSettings2    = 0
  93.    phBufferSettings3    = 0
  94.  
  95.    comp_buff = FALSE;
  96.    delete_type(CURRENT_BUFFER);
  97. #     delete_type(DEFAULT);
  98. }
  99.  
  100. # function commented out since it's not used and generates a warning.
  101. # it is going to be kept around incase there is a use for it
  102. #local function destroy_settings_notebook()
  103. #{
  104. #   delete_notebook_page(nhBufferNotebook, phBufferSettings1)
  105. #   delete_notebook_page(nhBufferNotebook, phBufferSettings2)
  106. #
  107. #   delete_notebook(nhBufferNotebook)
  108. #
  109. #   nhBufferNotebook = 0
  110. #}
  111.  
  112. ########################## BUFFER NOTEBOOK #################################
  113.  
  114. global function create_bufferhelp_page(pageid, dlgid)
  115. {
  116.    local dhHelpSettings;
  117.  
  118.    dhHelpSettings = create_page(function_id( "nop_settings_callback"), 
  119.                                  dlgid, IDD_BUFFER_HELP_PAGE, resource_dll )
  120.    attach_help(editor_helpfile, dhHelpSettings);
  121.    if(isWindows())
  122.       nbPagePrefix[pageid].help = "Misc. window settings";
  123.    else
  124.       nbPagePrefix[pageid].help = "bufferpages";
  125.    set_notebook_page_dialog(dlgid, pageid, dhHelpSettings);
  126.    nbPagePrefix[pageid].dialog_handle = dhHelpSettings;
  127. }
  128.  
  129. global function create_buffer1_page(pageid, dlgid)
  130. {
  131.    local temp_type;
  132.  
  133.    dhBufferSettings1 = create_page(function_id( "buffer1_settings_callback" ),
  134.                                    dlgid, IDD_BUFFER_SETTINGS1, resource_dll);
  135.  
  136.    attach_help(editor_helpfile, dhBufferSettings1)
  137.    if(isWindows())
  138.       nbPagePrefix[pageid].help = "Buffer flags";
  139.    else
  140.       nbPagePrefix[pageid].help = "bufferpage1";
  141.  
  142.    if(!(CURRENT_BUFFER in languages))
  143.       add_type(CURRENT_BUFFER);
  144.    if(!(DEFAULT in languages))
  145.       add_type(DEFAULT);
  146.    if(!save_languages)
  147.       save_languages = copy_languages_array(languages);
  148.  
  149.    set_dialog_item(dhBufferSettings1, IDL_TYPE, DAC_SORT_ASCENDING);
  150.  
  151.    temp_type = global_type ? global_type : CURRENT_BUFFER;
  152.    if(!global_type || (global_type == CURRENT_BUFFER) || (global_type == DEFAULT))
  153.    {
  154.       global_type = Type(path_ext(buffer_filename));
  155.       global_type = global_type ? global_type : "pel";
  156.       initialize_buffer1_settings(dhBufferSettings1, global_type, 1);
  157.    }
  158.  
  159.    global_type = temp_type;
  160.    initialize_buffer1_settings(dhBufferSettings1, global_type, 1);
  161.  
  162.    set_notebook_page_dialog(dlgid, pageid, dhBufferSettings1);
  163.    nbPagePrefix[pageid].dialog_handle = dhBufferSettings1;
  164. }
  165.  
  166. global function create_buffer2_page(pageid, dlgid)
  167. {
  168.    local temp_type;
  169.  
  170.    dhBufferSettings2 = create_page(function_id( "buffer2_settings_callback" ), 
  171.                                    dlgid, IDD_BUFFER_SETTINGS2, resource_dll);
  172.  
  173.    attach_help(editor_helpfile, dhBufferSettings2)
  174.    if(isWindows())
  175.       nbPagePrefix[pageid].help = "Tabs and Margins";
  176.    else
  177.       nbPagePrefix[pageid].help = "bufferpage2";
  178.  
  179.    if(!(CURRENT_BUFFER in languages))
  180.       add_type(CURRENT_BUFFER);
  181.    if(!(DEFAULT in languages))
  182.       add_type(DEFAULT);
  183.    if(!save_languages)
  184.       save_languages = copy_languages_array(languages);
  185.  
  186.    set_dialog_item(dhBufferSettings2, IDL_TYPE, DAC_SORT_ASCENDING);
  187.  
  188.    temp_type = global_type ? global_type : CURRENT_BUFFER;
  189.    if(!global_type || (global_type == CURRENT_BUFFER) || (global_type == DEFAULT))
  190.    {
  191.       global_type = Type(path_ext(buffer_filename));
  192.       global_type = global_type ? global_type : "pel";
  193.       initialize_buffer2_settings(dhBufferSettings2, global_type, 1);
  194.    }
  195.  
  196.    global_type = temp_type;
  197.    initialize_buffer2_settings(dhBufferSettings2, global_type, 1);
  198.  
  199. #   initialize_buffer2_settings(dhBufferSettings2, global_type);
  200.  
  201.    set_notebook_page_dialog(dlgid, pageid, dhBufferSettings2);
  202.    nbPagePrefix[pageid].dialog_handle = dhBufferSettings2;
  203. }
  204.  
  205. global function create_buffer3_page(pageid, dlgid)
  206. {
  207.    local temp_type;
  208.  
  209.    dhBufferSettings3 = create_page(function_id( "buffer3_settings_callback" ), 
  210.                                    dlgid, IDD_BUFFER_SETTINGS3, resource_dll);
  211.  
  212.    attach_help(editor_helpfile, dhBufferSettings3)
  213.    if(isWindows())
  214.       nbPagePrefix[pageid].help = "Tabs and Margins";
  215.    else
  216.       nbPagePrefix[pageid].help = "bufferpage3";
  217.  
  218.    if(!(CURRENT_BUFFER in languages))
  219.       add_type(CURRENT_BUFFER);
  220.    if(!(DEFAULT in languages))
  221.       add_type(DEFAULT);
  222.    if(!save_languages)
  223.       save_languages = copy_languages_array(languages);
  224.  
  225.    set_dialog_item(dhBufferSettings3, IDL_TYPE, DAC_SORT_ASCENDING);
  226.    set_dialog_item(dhBufferSettings3, IDE_BUF_WP_LEFT_MARGIN, DAC_SPIN_LIMITS, 1, 80 )
  227.    set_dialog_item(dhBufferSettings3, IDE_BUF_WP_RIGHT_MARGIN, DAC_SPIN_LIMITS, 1, 200 );
  228.  
  229.    temp_type = (global_type ? global_type : CURRENT_BUFFER);
  230.    if(!global_type || (global_type == CURRENT_BUFFER) || (global_type == DEFAULT))
  231.    {
  232.       global_type = Type(path_ext(buffer_filename));
  233.       global_type = global_type ? global_type : "pel";
  234.       initialize_buffer3_settings(dhBufferSettings3, global_type, 1);
  235.    }
  236.  
  237.    global_type = temp_type;
  238.    initialize_buffer3_settings(dhBufferSettings3, global_type, 1);
  239.  
  240.    set_notebook_page_dialog(dlgid, pageid, dhBufferSettings3);
  241.    nbPagePrefix[pageid].dialog_handle = dhBufferSettings3;
  242. }
  243.  
  244. ########################## BUFFER PAGE 1 #################################
  245. global function initialize_buffer1_settings(handle, type, load_types)
  246. {
  247.    local flags = BufferFlags(type);
  248.  
  249.    nb_initializing = TRUE;
  250.  
  251.    if(load_types)
  252.       init_types(handle, 1);
  253.  
  254. #   if((type != CURRENT_BUFFER) && (type != DEFAULT))
  255. #      set_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM, type"");
  256.  
  257.    if(and(flags, BUFFER_SNAP_TO_EOL ) )
  258.       set_dialog_item( handle, IDC_BUFFER_SNAP_TO_EOL, DAC_CHECK)
  259.    else
  260.       set_dialog_item( handle, IDC_BUFFER_SNAP_TO_EOL, DAC_UNCHECK)
  261.    
  262.    if(and(flags, BUFFER_REAL_SPACE_ONLY ) )
  263.       set_dialog_item( handle, IDC_BUFFER_REAL_SPACE_ONLY , DAC_CHECK)
  264.    else
  265.       set_dialog_item( handle, IDC_BUFFER_REAL_SPACE_ONLY , DAC_UNCHECK)
  266.    
  267.    if(and(flags, BUFFER_TABS_TO_SPACES ) )
  268.       set_dialog_item( handle, IDC_BUFFER_TABS_TO_SPACES , DAC_CHECK)
  269.    else
  270.       set_dialog_item( handle, IDC_BUFFER_TABS_TO_SPACES , DAC_UNCHECK)
  271.    
  272.    if(and(flags, BUFFER_EXPAND_TABS ) )
  273.       set_dialog_item( handle, IDC_BUFFER_EXPAND_TABS, DAC_CHECK)
  274.    else
  275.       set_dialog_item( handle, IDC_BUFFER_EXPAND_TABS, DAC_UNCHECK)
  276.    
  277.    if(and(flags, BUFFER_READ_ONLY ) )
  278.       set_dialog_item( handle, IDC_BUFFER_READ_ONLY, DAC_CHECK)
  279.    else
  280.       set_dialog_item( handle, IDC_BUFFER_READ_ONLY, DAC_UNCHECK)
  281.    
  282.    if(and(flags, BUFFER_OVERTYPE_MODE ) )
  283.       set_dialog_item( handle, IDC_BUFFER_OVERTYPE , DAC_CHECK)
  284.    else
  285.       set_dialog_item( handle, IDC_BUFFER_OVERTYPE , DAC_UNCHECK);
  286.  
  287.    if(Syntax(type))
  288.       set_dialog_item(handle, IDC_SYNTAX_HILITE, DAC_CHECK);
  289.    else
  290.       set_dialog_item(handle, IDC_SYNTAX_HILITE, DAC_UNCHECK);
  291.  
  292. #     set_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM, CURRENT_BUFFER)
  293. #   deselect_checks(handle);
  294.    set_checks(handle, global_type);
  295.  
  296.    nb_initializing = FALSE
  297. }
  298.  
  299. global function buffer1_settings_config()
  300. {
  301.    local data[]
  302.    local i = 1
  303.  
  304.    data[ i++ ] = sprintf( "# Settings specific to the first buffer settings notebook page\n" )
  305.    data[ i++ ] = sprintf( "default_buffer_flags=%d\n", default_buffer_flags )
  306.    data[ i++ ] = sprintf( "default_syntax_highlight=%d\n", default_syntax_highlight )
  307.    data[ i++ ] = sprintf( "\n" )
  308.  
  309.    return data
  310. }
  311.  
  312. # Assumption:  Upon entrance to this function, we are in the buffer that
  313. #              whose certain values we want to apply to all other buffers.
  314. #              The calling function, apply_to_all, makes sure that this
  315. #              assumption is valid
  316. #global function buffer1_apply_to_all()
  317. #{
  318. #   local cur_buf           = 0
  319. #   local first_buf         = current_buffer
  320. #
  321. #   local set_bits          = 0
  322. #   local unset_bits        = 0
  323. #
  324. #   local flags             =  BUFFER_OVERTYPE_MODE    +
  325. #                              BUFFER_READ_ONLY        +
  326. #                              BUFFER_EXPAND_TABS      +
  327. #                              BUFFER_TABS_TO_SPACES   +
  328. #                              BUFFER_REAL_SPACE_ONLY  +
  329. #                              BUFFER_SNAP_TO_EOL      +
  330. #                              BUFFER_WP_ENABLED       
  331. #
  332. #   local new_val = syntax_highlight;
  333. #
  334. #   # get the bits that are set in the current buffer
  335. #   set_bits = and( buffer_flags, flags )
  336. #
  337. #   # get the bits that are not set in the current buffer
  338. #   unset_bits = and( flags, not(set_bits) )
  339. #
  340. #   # Apply to all buffers.   
  341. #   # This gets a little complex.  We need to set the bits that
  342. #   # are set, and unset all of the bits that are not set
  343. #   while( (cur_buf = next_buffer()) != first_buf )
  344. #      {
  345. #      buffer_flags = or( buffer_flags, set_bits )
  346. #      buffer_flags = and( buffer_flags, not(unset_bits) )
  347. #      syntax_highlight = new_val;
  348. #      }
  349. #
  350. #   current_buffer = first_buf
  351. #}
  352.  
  353. global function buffer1_settings_callback()
  354. {
  355.    local retval, handle = callback_dialog_handle, flags, type;
  356.  
  357.    enable_undo(handle, callback_index );
  358.  
  359.    if(callback_msg == DM_HELPREQUESTED)
  360.    {   
  361.       display_help(nbPagePrefix[current_nb_page].help, handle);
  362.       return DRC_MSG_PROCESSED;
  363.    }
  364.  
  365.    if(callback_msg == DM_INIT )   
  366.    {
  367. #        set_dialog_item( handle, IDC_APPLY_TO_ALL, DAC_UNCHECK) 
  368.       apply_page_to_all( "buffer1", FALSE )
  369.    }
  370.    else if(callback_msg == DM_CANCEL )
  371.    {
  372.        return DRC_MSG_PROCESSED
  373.    }
  374.    else if((callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  375.    {
  376.       if(callback_index == IDB_UNDO  ) 
  377.       {
  378.          undo_buffer1_settings(global_type);
  379.          initialize_buffer1_settings(handle, global_type)
  380.          return DRC_MSG_PROCESSED
  381.       }
  382.       else if(callback_index == IDB_DEFAULT  ) 
  383.       {
  384.          set_comp_buff();
  385.          default_buffer1_settings(handle, global_type);
  386.          initialize_buffer1_settings(handle, global_type);
  387.          return DRC_MSG_PROCESSED
  388.       }
  389.       else if(callback_index == IDR_CURRENT_BUFFER)
  390.       {
  391.          global_type = CURRENT_BUFFER;
  392.          initialize_buffer1_settings(handle, global_type);
  393.          set_dialog_item(handle, IDL_TYPE, DAC_DISABLE);
  394.       }
  395.       else if(callback_index == IDR_DEFAULT)
  396.       {
  397.          global_type = DEFAULT;
  398.          initialize_buffer1_settings(handle, global_type);
  399.          set_dialog_item(handle, IDL_TYPE, DAC_DISABLE);
  400.       }
  401.       else if(callback_index == IDR_TYPES)
  402.       {
  403.          global_type = query_dialog_item(handle, IDL_TYPE, DAC_TEXT);
  404.          initialize_buffer1_settings(handle, global_type);
  405.          set_dialog_item(handle, IDL_TYPE, DAC_ENABLE);
  406.       }
  407.       else if(callback_index == IDB_APPLY_TO_ALL)
  408.       {
  409.          comp_buff = TRUE;
  410.          apply_settings1(global_type);
  411.       }
  412.       else if( (callback_index == IDC_SYNTAX_HILITE)          ||
  413.                (callback_index == IDC_BUFFER_SNAP_TO_EOL)     ||
  414.                (callback_index == IDC_BUFFER_READ_ONLY)       ||
  415.                (callback_index == IDC_BUFFER_EXPAND_TABS)     ||
  416.                (callback_index == IDC_BUFFER_REAL_SPACE_ONLY) ||
  417.                (callback_index == IDC_BUFFER_TABS_TO_SPACES)  ||
  418.                (callback_index == IDC_BUFFER_OVERTYPE) )
  419.       {
  420.          set_comp_buff();
  421.          retval = query_dialog_item( handle, callback_index, DAC_CHECK);
  422.          #  Set all bits in retval if the box is checked, so set_flag_bits
  423.          #  will work with any of the BUFFER_ masks;
  424.          retval = (retval ? 0xffffffff : 0);
  425.  
  426.          if(callback_index == IDC_BUFFER_OVERTYPE)
  427.             set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_OVERTYPE_MODE, retval));
  428.          else if(callback_index == IDC_BUFFER_TABS_TO_SPACES)
  429.             set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_TABS_TO_SPACES, retval));
  430.          else if(callback_index == IDC_BUFFER_REAL_SPACE_ONLY)
  431.             set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_REAL_SPACE_ONLY, retval));
  432.          else if(callback_index == IDC_BUFFER_EXPAND_TABS)
  433.             set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_EXPAND_TABS, retval));
  434.          else if(callback_index == IDC_BUFFER_READ_ONLY)
  435.             set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_READ_ONLY, retval));
  436.          else if(callback_index == IDC_BUFFER_SNAP_TO_EOL)
  437.             set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_SNAP_TO_EOL, retval));
  438.          else if(callback_index == IDC_SYNTAX_HILITE)
  439.             set_syntax(global_type, retval);
  440.       }
  441. #      else if(callback_index == IDC_APPLY_TO_ALL)
  442. #         set_apply_to_all(type, retval, BUFFER1);
  443. #      else if(callback_index == IDC_MAKE_DEFAULT)
  444. #      {
  445. #         set_make_default(type, retval, BUFFER1);
  446. #         if(retval)
  447. #            set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_DISABLE);
  448. #         else
  449. #            set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_ENABLE);
  450. #      }
  451.  
  452.       return DRC_MSG_PROCESSED
  453.    }
  454.    else if ( callback_msg == DM_SELECT )
  455.    {
  456.       if(callback_index == IDL_TYPE)
  457.       {
  458.          global_type = query_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM);
  459. #           set_checks(handle, global_type);
  460.          initialize_buffer1_settings(handle, global_type);
  461.  
  462.          return DRC_MSG_PROCESSED;
  463.       }
  464.    }
  465.    return DRC_CONTINUE
  466. }
  467.  
  468.  
  469. ########################## BUFFER PAGE 2 #################################
  470. global function initialize_buffer2_settings(handle, type, load_types)
  471. {
  472.    nb_initializing = TRUE;
  473.  
  474.    if(load_types)
  475.       init_types(handle, 1);
  476.  
  477. #   if((type != CURRENT_BUFFER) && (type != DEFAULT))
  478. #      set_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM, type "");
  479.  
  480.    if(AutoIndent(type))
  481.       set_dialog_item(handle, IDC_AUTOINDENT, DAC_CHECK)
  482.    else
  483.       set_dialog_item(handle, IDC_AUTOINDENT, DAC_UNCHECK)
  484.  
  485.    set_dialog_item(handle, IDE_BUFFER_TABS, DAC_EDIT_TEXT, Tabs(type) "")
  486.    
  487. #   deselect_checks(handle);
  488.  
  489.    set_checks(handle, global_type);
  490.  
  491.    nb_initializing = FALSE
  492. }
  493.  
  494. global function buffer2_settings_config()
  495. {
  496.    local data[]
  497.    local i = 1
  498.  
  499.    data[ i++ ] = sprintf( "# Settings specific to the second buffer settings notebook page\n" )
  500.  
  501.    data[ i++ ] = sprintf( "default_auto_indent_mode=%d\n",       default_auto_indent_mode )
  502.    data[ i++ ] = sprintf( "default_buffer_tabs=%s\n",       default_buffer_tabs           )
  503.    data[ i++ ] = sprintf( "\n" )
  504.  
  505.    return data 
  506. }
  507.  
  508. #global function buffer2_apply_to_all()
  509. #{
  510. #   local first_buf         = current_buffer
  511. #   local cur_buf           = 0
  512. #
  513. #   local all_auto_indent_mode = auto_indent_mode
  514. #   local all_buffer_tabs      = buffer_tabs     
  515. #
  516. #   while( (cur_buf = next_buffer()) != first_buf )
  517. #   {
  518. #      toggle_auto_indent( all_auto_indent_mode )
  519. #      buffer_tabs      = all_buffer_tabs     
  520. #   }
  521. #
  522. #   current_buffer = first_buf
  523. #}
  524.  
  525. global function buffer2_settings_callback()
  526. {
  527.    local type, value, ret_msg = DRC_CONTINUE, handle = callback_dialog_handle;
  528.  
  529.    enable_undo(handle, callback_index );
  530.  
  531.    if(callback_msg == DM_INIT )   
  532.    {
  533. #        set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_UNCHECK) 
  534.       apply_page_to_all( "buffer2", FALSE )
  535.    }     
  536.    else if(callback_msg == DM_HELPREQUESTED)
  537.    {
  538.       display_help(nbPagePrefix[current_nb_page].help, handle);
  539.       return DRC_MSG_PROCESSED
  540.    }
  541.  
  542.    else if(callback_msg == DM_CANCEL )
  543.    {
  544.        return DRC_MSG_PROCESSED
  545.    }
  546.    else if((callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  547.    {
  548.       if(callback_index == IDB_UNDO  ) 
  549.       {
  550.          undo_buffer2_settings(global_type);
  551.          initialize_buffer2_settings(handle, global_type)
  552.          return DRC_MSG_PROCESSED
  553.       }
  554.       else if(callback_index == IDB_DEFAULT  ) 
  555.       {
  556.          set_comp_buff();
  557.          default_buffer2_settings(handle, global_type);
  558.          initialize_buffer2_settings(handle, global_type)
  559.          return DRC_MSG_PROCESSED;
  560.       }
  561.       else if(callback_index == IDR_CURRENT_BUFFER)
  562.       {
  563.          global_type = CURRENT_BUFFER;
  564.          initialize_buffer2_settings(handle, global_type);
  565.          set_dialog_item(handle, IDL_TYPE, DAC_DISABLE);
  566.       }
  567.       else if(callback_index == IDR_DEFAULT)
  568.       {
  569.          global_type = DEFAULT;
  570.          initialize_buffer2_settings(handle, global_type);
  571.          set_dialog_item(handle, IDL_TYPE, DAC_DISABLE);
  572.       }
  573.       else if(callback_index == IDR_TYPES)
  574.       {
  575.          global_type = query_dialog_item(handle, IDL_TYPE, DAC_TEXT);
  576.          initialize_buffer2_settings(handle, global_type);
  577.          set_dialog_item(handle, IDL_TYPE, DAC_ENABLE);
  578.       }
  579.       else if(callback_index == IDB_APPLY_TO_ALL)
  580.       {
  581.          comp_buff = TRUE;
  582.          apply_settings2(global_type);
  583.          return DRC_MSG_PROCESSED;
  584.       }
  585. #      else if(callback_index == IDC_MAKE_DEFAULT)
  586. #      {
  587. #         value = query_dialog_item(handle, IDC_MAKE_DEFAULT, DAC_CHECK);
  588. #         set_make_default(type, value, BUFFER2);
  589. #         if(value)
  590. #            set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_DISABLE);
  591. #         else
  592. #            set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_ENABLE);
  593. #
  594. #         return DRC_MSG_PROCESSED;
  595. #      }
  596. #      else if(callback_index == IDC_APPLY_TO_ALL)
  597. #      {
  598. #         set_apply_to_all(type, query_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_CHECK), BUFFER2);
  599. #         return DRC_MSG_PROCESSED;
  600. #      }
  601.       else if(callback_index == IDC_AUTOINDENT)
  602.       {
  603.          set_comp_buff();
  604.          set_auto_indent(global_type, query_dialog_item(handle, IDC_AUTOINDENT, DAC_CHECK));
  605.          return DRC_MSG_PROCESSED;
  606.       }
  607.    }
  608. #   else if(callback_msg == DM_KILL_FOCUS)
  609. #   {
  610. #      if(callback_index == IDE_BUFFER_TABS)
  611. #      {
  612. #         set_comp_buff();
  613. #         if(global_type)
  614. #            set_tabs(global_type, query_dialog_item(handle, IDE_BUFFER_TABS, DAC_EDIT_TEXT));
  615. #         ret_msg = DRC_MSG_PROCESSED;
  616. #      }
  617. #   }
  618.    else if(callback_msg == DM_CHANGE)
  619.    {  #  we set the tabs here also because when the user clicks on a radio button
  620.       #  the DM_CLICK was being processed before the DM_KILL_FOCUS, so the tab
  621.       #  settings were not being preserved;
  622.       if(callback_index == IDE_BUFFER_TABS)
  623.       {
  624.          set_comp_buff();
  625.          if(global_type)
  626.             set_tabs(global_type, query_dialog_item(handle, IDE_BUFFER_TABS, DAC_EDIT_TEXT));
  627.          ret_msg = DRC_MSG_PROCESSED;
  628.       }
  629.    }
  630.    else if(callback_msg == DM_SELECT)
  631.    {
  632.       if(callback_index == IDL_TYPE)
  633.       {
  634.          global_type = query_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM);
  635. #           set_checks(handle, global_type);
  636.  
  637.          initialize_buffer2_settings(handle, global_type);
  638.  
  639.          ret_msg = DRC_MSG_PROCESSED;
  640.       }
  641.    }
  642.    return ret_msg;
  643. }
  644.  
  645. ########################## BUFFER PAGE 3 #################################
  646. global function initialize_buffer3_settings(handle, type, load_types)
  647. {
  648.    local flags;
  649.  
  650.    nb_initializing = TRUE;
  651.  
  652.    if ( load_types )
  653.       init_types(handle, 1);
  654.  
  655. #   if((type != CURRENT_BUFFER) && (type != DEFAULT))
  656. #      set_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM, type"");
  657.  
  658.    flags = BufferFlags(global_type)
  659.    if ( and(flags, BUFFER_WP_ENABLED) )
  660.    {
  661.       set_dialog_item(handle, IDC_BUFFER_WP_ENABLED, DAC_CHECK);
  662.       set_dialog_item(handle, IDC_BUF_WP_WRAP_CONTINUOUS, DAC_ENABLE);
  663.       set_dialog_item(handle, IDC_BUF_WP_CARRY_COMMENTS , DAC_ENABLE);
  664.  
  665.       if ( and(flags, BUFFER_WP_WRAP_CONTINUOUS) )
  666.          set_dialog_item(handle, IDC_BUF_WP_WRAP_CONTINUOUS, DAC_CHECK);
  667.       else
  668.          set_dialog_item(handle, IDC_BUF_WP_WRAP_CONTINUOUS, DAC_UNCHECK);
  669.  
  670.       if ( and(flags, BUFFER_WP_CARRY_COMMENTS) )
  671.          set_dialog_item(handle, IDC_BUF_WP_CARRY_COMMENTS, DAC_CHECK);
  672.       else
  673.          set_dialog_item(handle, IDC_BUF_WP_CARRY_COMMENTS, DAC_UNCHECK);
  674.                
  675.    }
  676.    else
  677.    {
  678.       set_dialog_item(handle, IDC_BUFFER_WP_ENABLED, DAC_UNCHECK);
  679.       set_dialog_item(handle, IDC_BUF_WP_WRAP_CONTINUOUS, DAC_UNCHECK);
  680.       set_dialog_item(handle, IDC_BUF_WP_CARRY_COMMENTS, DAC_UNCHECK);
  681.       set_dialog_item(handle, IDC_BUF_WP_CARRY_COMMENTS, DAC_DISABLE);
  682.       set_dialog_item(handle, IDC_BUF_WP_WRAP_CONTINUOUS, DAC_DISABLE);
  683.    }
  684.  
  685.    set_dialog_item(handle, IDE_BUF_WP_LEFT_MARGIN,  DAC_SPIN_VALUE, LeftMargin(global_type)+0);
  686.    set_dialog_item(handle, IDE_BUF_WP_RIGHT_MARGIN, DAC_SPIN_VALUE, RightMargin(global_type)+0);
  687.  
  688. #   deselect_checks(handle);
  689.  
  690.    set_checks(handle, global_type);
  691.  
  692.    nb_initializing = FALSE
  693. }
  694.  
  695. global function buffer3_settings_config()
  696. {
  697.    local data[]
  698.    local i = 1
  699.  
  700.    data[ i++ ] = sprintf( "# Settings specific to the third buffer settings notebook page\n" )
  701.  
  702.    data[ i++ ] = sprintf( "default_wp_right_margin=%d\n",   default_wp_right_margin       )
  703.    data[ i++ ] = sprintf( "default_wp_left_margin=%d\n",   default_wp_left_margin       )
  704.    data[ i++ ] = sprintf( "\n" )
  705.  
  706.    return data 
  707. }
  708.  
  709. #global function buffer3_apply_to_all()
  710. #{
  711. #   local first_buf         = current_buffer
  712. #   local cur_buf           = 0
  713. #
  714. #   local mode = 0;
  715. #   local all_wp_right_margin  = wp_right_margin 
  716. #   local all_wp_left_margin  = wp_left_margin 
  717. #
  718. #   mode = get_word_mode();
  719. ##   if(and(buffer_flags, BUFFER_WP_ENABLED))
  720. ##   {
  721. ##      mode = 1;    #  Plain old word wrap
  722. ##
  723. ##      if(and(buffer_flags, BUFFER_WP_WRAP_CONTINUOUS))
  724. ##         mode = 2; #  Auto flow
  725. ##      #  if(some other thing that indicates copy text)
  726. ##      #     mode = 3;
  727. ##   }
  728. #
  729. #   while( (cur_buf = next_buffer()) != first_buf )
  730. #   {
  731. #      set_word_mode( mode )
  732. #      wp_right_margin  = all_wp_right_margin 
  733. #      wp_left_margin  = all_wp_left_margin 
  734. #   }
  735. #
  736. #   current_buffer = first_buf
  737. #}
  738.  
  739. global function buffer3_settings_callback()
  740. {
  741.    local type, retval, mode, flags;
  742.    local ret_msg = DRC_CONTINUE, handle = callback_dialog_handle;
  743.  
  744.    enable_undo(handle, callback_index );
  745.  
  746.    if(callback_msg == DM_INIT )   
  747.    {
  748. #        set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_UNCHECK) 
  749.       apply_page_to_all( "buffer3", FALSE )
  750.    }     
  751.    else if(callback_msg == DM_HELPREQUESTED)
  752.    {
  753.       display_help(nbPagePrefix[current_nb_page].help, handle);
  754.       return DRC_MSG_PROCESSED
  755.    }
  756.  
  757.    else if(callback_msg == DM_CANCEL )
  758.    {
  759.        return DRC_MSG_PROCESSED
  760.    }
  761.    else if((callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  762.    {
  763.       if(callback_index == IDB_UNDO  ) 
  764.       {
  765.          undo_buffer3_settings(global_type);
  766.          initialize_buffer3_settings(handle, global_type)
  767.          return DRC_MSG_PROCESSED
  768.       }
  769.       else if(callback_index == IDB_DEFAULT  )
  770.       {
  771.          set_comp_buff();
  772.          default_buffer3_settings(handle, global_type);
  773.          initialize_buffer3_settings(handle, global_type)
  774.          return DRC_MSG_PROCESSED;
  775.       }
  776.       else if(callback_index == IDR_CURRENT_BUFFER)
  777.       {
  778.          global_type = CURRENT_BUFFER;
  779.          initialize_buffer3_settings(handle, global_type);
  780.          set_dialog_item(handle, IDL_TYPE, DAC_DISABLE);
  781.       }
  782.       else if(callback_index == IDR_DEFAULT)
  783.       {
  784.          global_type = DEFAULT;
  785.          initialize_buffer3_settings(handle, global_type);
  786.          set_dialog_item(handle, IDL_TYPE, DAC_DISABLE);
  787.       }
  788.       else if(callback_index == IDR_TYPES)
  789.       {
  790.          global_type = query_dialog_item(handle, IDL_TYPE, DAC_TEXT);
  791.          initialize_buffer3_settings(handle, global_type);
  792.          set_dialog_item(handle, IDL_TYPE, DAC_ENABLE);
  793.       }
  794.       else if(callback_index == IDB_APPLY_TO_ALL)
  795.       {
  796.          comp_buff = TRUE;
  797.          apply_settings3(global_type);
  798.          return DRC_MSG_PROCESSED;
  799.       }
  800. #      else if(callback_index == IDC_MAKE_DEFAULT)
  801. #      {
  802. #         retval = query_dialog_item(handle, IDC_MAKE_DEFAULT, DAC_CHECK);
  803. #         set_make_default(type, retval, BUFFER3);
  804. #         if(value)
  805. #            set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_DISABLE);
  806. #         else
  807. #            set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_ENABLE);
  808. #
  809. #         return DRC_MSG_PROCESSED;
  810. #      }
  811. #      else if(callback_index == IDC_APPLY_TO_ALL)
  812. #      {
  813. #         set_apply_to_all(type, query_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_CHECK), BUFFER3);
  814. #         return DRC_MSG_PROCESSED;
  815. #      }
  816.       else if(callback_index == IDC_BUFFER_WP_ENABLED)
  817.       {
  818.          set_comp_buff();
  819.          retval = query_dialog_item(handle, IDC_BUFFER_WP_ENABLED, DAC_CHECK);
  820.          retval = (retval ? BUFFER_WP_ENABLED : 0);
  821.          set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_WP_ENABLED, retval));
  822.          if(retval)
  823.          {
  824.             set_dialog_item(handle, IDC_BUF_WP_WRAP_CONTINUOUS, DAC_ENABLE);
  825.             set_dialog_item(handle, IDC_BUF_WP_CARRY_COMMENTS, DAC_ENABLE);
  826.          }
  827.          else
  828.          {
  829.             set_dialog_item(handle, IDC_BUF_WP_WRAP_CONTINUOUS, DAC_DISABLE);
  830.             set_dialog_item(handle, IDC_BUF_WP_CARRY_COMMENTS, DAC_DISABLE);
  831.          }
  832.          return DRC_MSG_PROCESSED
  833.       }
  834.       else if(callback_index == IDC_BUF_WP_WRAP_CONTINUOUS)
  835.       {
  836.          set_comp_buff();
  837.          retval = query_dialog_item(handle, IDC_BUF_WP_WRAP_CONTINUOUS, DAC_CHECK);
  838.          retval = (retval ? BUFFER_WP_WRAP_CONTINUOUS : 0);
  839.          set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_WP_WRAP_CONTINUOUS, retval));
  840.          return DRC_MSG_PROCESSED
  841.       }
  842.       else if(callback_index == IDC_BUF_WP_CARRY_COMMENTS)
  843.       {
  844.          set_comp_buff();
  845.          retval = query_dialog_item(handle, IDC_BUF_WP_CARRY_COMMENTS, DAC_CHECK);
  846.          retval = (retval ? BUFFER_WP_CARRY_COMMENTS : 0);
  847.          set_buffer_flags(global_type, set_flag_bits(BufferFlags(global_type), BUFFER_WP_CARRY_COMMENTS, retval));
  848.          return DRC_MSG_PROCESSED
  849.       }
  850.    }
  851.    else if(callback_msg == DM_KILL_FOCUS)
  852.    {
  853.       if(callback_index == IDE_BUF_WP_LEFT_MARGIN)
  854.       {
  855.          set_comp_buff();
  856.          if(global_type)
  857.             set_left_margin(global_type, query_dialog_item(handle, IDE_BUF_WP_LEFT_MARGIN, DAC_SPIN_VALUE));
  858.          ret_msg = DRC_MSG_PROCESSED;
  859.       }
  860.       else if(callback_index == IDE_BUF_WP_RIGHT_MARGIN)
  861.       {
  862.          set_comp_buff();
  863.          if(global_type)
  864.             set_right_margin(global_type, query_dialog_item(handle, IDE_BUF_WP_RIGHT_MARGIN, DAC_SPIN_VALUE));
  865.          ret_msg = DRC_MSG_PROCESSED;
  866.       }
  867.    }
  868.    else if(callback_msg == DM_SELECT)
  869.    {
  870.       if(callback_index == IDL_TYPE)
  871.       {
  872.          global_type = query_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM);
  873. #           set_checks(handle, global_type);
  874.          initialize_buffer3_settings(handle, global_type);
  875.  
  876.          ret_msg = DRC_MSG_PROCESSED;
  877.       }
  878.    }
  879.    return ret_msg;
  880. }
  881.  
  882.  
  883. local function set_checks(handle, type)
  884. {
  885.    if(type == CURRENT_BUFFER)
  886.    {
  887.       set_dialog_item(handle, IDL_TYPE,           DAC_DISABLE);
  888.       set_dialog_item(handle, IDR_CURRENT_BUFFER, DAC_CHECK);
  889.       set_dialog_item(handle, IDR_DEFAULT,        DAC_UNCHECK);
  890.       set_dialog_item(handle, IDR_TYPES,          DAC_UNCHECK);
  891.    }
  892.    else if(type == DEFAULT)
  893.    {
  894.       set_dialog_item(handle, IDL_TYPE,           DAC_DISABLE);
  895.       set_dialog_item(handle, IDR_CURRENT_BUFFER, DAC_UNCHECK);
  896.       set_dialog_item(handle, IDR_DEFAULT,        DAC_CHECK);
  897.       set_dialog_item(handle, IDR_TYPES,          DAC_UNCHECK);
  898.    }
  899.    else
  900.    {
  901.       set_dialog_item(handle, IDL_TYPE,           DAC_ENABLE);
  902.       set_dialog_item(handle, IDR_CURRENT_BUFFER, DAC_UNCHECK);
  903.       set_dialog_item(handle, IDR_DEFAULT,        DAC_UNCHECK);
  904.       set_dialog_item(handle, IDR_TYPES,          DAC_CHECK);
  905.       set_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM, type"");
  906.    }
  907.  
  908. #   if ( type !=  )
  909. #   {
  910. ##      set_dialog_item(handle, IDC_MAKE_DEFAULT, DAC_DISABLE);
  911. ##      set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_DISABLE);
  912. #      global_type = type;
  913. #   }
  914. #   else
  915. #   {
  916. ##      set_dialog_item(handle, IDC_MAKE_DEFAULT, DAC_ENABLE);
  917. ##      set_dialog_item(handle, IDC_APPLY_TO_ALL, DAC_ENABLE);
  918. #      global_type = FALSE;
  919. #   }
  920. }
  921.  
  922. ########################## UNDO and DEFAULT #################################
  923. global function assign_bufferhelp_changes(dlgid)
  924. {
  925.    nop();
  926. }
  927.  
  928. global function assign_buffer1_changes(dlgid)
  929. {
  930.    local type = CURRENT_BUFFER;
  931.  
  932.    buffer_flags = BufferFlags(type);
  933.    syntax_highlight = Syntax(type);
  934.  
  935.    type = DEFAULT;
  936.  
  937.    default_buffer_flags = set_flag_bits(default_buffer_flags, BUFFER1MASK, BufferFlags(type));
  938.    default_syntax_highlight = Syntax(type);
  939.  
  940. #   if(ApplyToAll(type, BUFFER1))
  941. #      apply_page_to_all( "buffer1", function_id("buffer1_apply_to_all"));
  942. #
  943. #   if(MakeDefault(type, BUFFER1))
  944. #      make_default_buffer1_settings();
  945. }
  946.  
  947. global function assign_buffer2_changes(dlgid)
  948. {
  949.    local type = CURRENT_BUFFER;
  950.  
  951.    toggle_auto_indent(AutoIndent(type));
  952.  
  953.    buffer_tabs     = Tabs(type);
  954.    wp_right_margin = RightMargin(type);
  955.    wp_left_margin  = LeftMargin(type);
  956.  
  957.    type = DEFAULT;
  958.  
  959.    default_auto_indent_mode = AutoIndent(type);
  960.    default_buffer_tabs      = Tabs(type);
  961.    default_wp_right_margin  = RightMargin(type);
  962.    default_wp_left_margin   = LeftMargin(type);
  963.  
  964. #   if(ApplyToAll(type, BUFFER2))
  965. #      apply_page_to_all( "buffer2", function_id("buffer2_apply_to_all"));
  966. #
  967. #   if(MakeDefault(type, BUFFER2))
  968. #      make_default_buffer2_settings();
  969. }
  970.  
  971. global function assign_buffer3_changes(dlgid)
  972. {
  973.    local type = CURRENT_BUFFER;
  974.  
  975.    buffer_flags = set_flag_bits(buffer_flags, BUFFER3MASK, BufferFlags(type));
  976.    wp_right_margin = RightMargin(type);
  977.    wp_left_margin  = LeftMargin(type);
  978.  
  979.    type = DEFAULT;
  980.  
  981.    default_buffer_flags = set_flag_bits(default_buffer_flags, BUFFER3MASK, BufferFlags(type));
  982.    default_wp_right_margin = RightMargin(type);
  983.    default_wp_left_margin  = LeftMargin(type);
  984.  
  985. #   if ( ApplyToAll(type, BUFFER3) )
  986. #      apply_page_to_all( "buffer3", function_id("buffer3_apply_to_all"));
  987. #
  988. #   if ( MakeDefault(type, BUFFER3) )
  989. #      make_default_buffer3_settings();
  990. }
  991.  
  992. local function default_buffer1_settings(handle, type)
  993. {
  994.    nb_initializing = TRUE;
  995.  
  996.    set_buffer_flags(type, set_flag_bits(BufferFlags(type), BUFFER1MASK, BufferFlags(DEFAULT)) );
  997.    set_syntax(type, Syntax(DEFAULT));
  998. #   deselect_checks(handle);
  999.  
  1000.    nb_initializing = FALSE
  1001. }
  1002.  
  1003.  
  1004. local function default_buffer2_settings(handle, type)
  1005. {
  1006.    nb_initializing = TRUE
  1007.  
  1008.    set_auto_indent(type, AutoIndent(DEFAULT));
  1009.    set_tabs(type, Tabs(DEFAULT));
  1010.  
  1011. #   deselect_checks(handle);
  1012.  
  1013.    nb_initializing = FALSE
  1014. }
  1015.  
  1016. local function default_buffer3_settings(handle, type)
  1017. {
  1018.    nb_initializing = TRUE
  1019.  
  1020.    set_buffer_flags(type, set_flag_bits(BufferFlags(type), BUFFER3MASK, BufferFlags(DEFAULT)));
  1021.    set_margins(type, Margins(DEFAULT));
  1022. #   deselect_checks(handle);
  1023.  
  1024.    nb_initializing = FALSE
  1025. }
  1026.  
  1027. local function undo_buffer1_settings(type)
  1028. {
  1029.    if(type in save_languages)
  1030.    {
  1031.       if(type in languages)
  1032.       {
  1033.          languages[type].syntax     = save_languages[type].syntax;
  1034.          languages[type].buff_flags = set_flag_bits(languages[type].buff_flags, 
  1035.                                                     BUFFER1MASK, 
  1036.                                                     save_languages[type].buff_flags);
  1037.       }
  1038.    }
  1039.    else if(type == CURRENT_BUFFER)
  1040.    {
  1041.       languages[type].syntax     = syntax_highlight;
  1042.       languages[type].buff_flags = set_flag_bits(languages[type].buff_flags, 
  1043.                                                  BUFFER1MASK, 
  1044.                                                  buffer_flags);
  1045.    }
  1046.    else if(type == DEFAULT)
  1047.    {
  1048.       languages[type].syntax     = default_syntax_highlight;
  1049.       languages[type].buff_flags = set_flag_bits(languages[type].buff_flags, 
  1050.                                                  BUFFER1MASK, 
  1051.                                                  default_buffer_flags);
  1052.    }
  1053.    else
  1054.    {
  1055.       warning("No information was saved for this type >" type "<");
  1056.    }
  1057. }
  1058.  
  1059. local function undo_buffer2_settings(type)
  1060. {
  1061.    if(type in save_languages)
  1062.    {
  1063.       if(type in languages)
  1064.       {
  1065.          languages[type].tab_stops      = save_languages[type].tab_stops;
  1066. #           languages[type].matching_pairs = save_languages[type].matching_pairs;
  1067.          languages[type].auto_indent    = save_languages[type].auto_indent;
  1068.       }
  1069.    }
  1070.    else if(type == CURRENT_BUFFER)
  1071.    {
  1072.       languages[type].tab_stops      = buffer_tabs;
  1073. #        languages[type].matching_pairs = matching_pairs;
  1074.       languages[type].auto_indent    = auto_indent_mode;
  1075.    }
  1076.    else if(type == DEFAULT)
  1077.    {
  1078.       languages[type].tab_stops      = default_buffer_tabs;
  1079. #        languages[type].matching_pairs = matching_pairs;
  1080.       languages[type].auto_indent    = default_auto_indent_mode;
  1081.    }
  1082.    else
  1083.    {
  1084.          warning("No information was saved for this type >" type "<");
  1085.    }
  1086. }
  1087.  
  1088. local function undo_buffer3_settings(type)
  1089. {
  1090.    if(type in save_languages)
  1091.    {
  1092.       if(type in languages)
  1093.       {
  1094.          languages[type].margins    = save_languages[type].margins;
  1095.          languages[type].buff_flags = set_flag_bits(languages[type].buff_flags, 
  1096.                                                     BUFFER3MASK, 
  1097.                                                     save_languages[type].buff_flags);
  1098.       }
  1099.    }
  1100.    else if(type == CURRENT_BUFFER)
  1101.    {
  1102.       languages[type].margins    = wp_left_margin "  " wp_right_margin;
  1103.       languages[type].buff_flags = set_flag_bits(languages[type].buff_flags, 
  1104.                                                  BUFFER3MASK, 
  1105.                                                  buffer_flags);
  1106.    }
  1107.    else if(type == CURRENT_BUFFER)
  1108.    {
  1109.       languages[type].margins    = default_wp_left_margin "  " default_wp_right_margin;
  1110.       languages[type].buff_flags = set_flag_bits(languages[type].buff_flags, 
  1111.                                                  BUFFER3MASK, 
  1112.                                                  default_buffer_flags);
  1113.    }
  1114.    else
  1115.    {
  1116.       warning("No information was saved for this type >" type "<");
  1117.    }
  1118. }
  1119.  
  1120. local function set_comp_buff()
  1121. {
  1122. #     if((global_type != CURRENT_BUFFER) && (global_type != DEFAULT))
  1123.    if(global_type != CURRENT_BUFFER)
  1124.       comp_buff = TRUE;
  1125.    else
  1126.    {
  1127.       set_modified(CURRENT_BUFFER, TRUE);
  1128.    }
  1129. }
  1130.  
  1131. local function apply_settings1(model)
  1132. {
  1133.    local type;
  1134.    local flags = BufferFlags(model);
  1135.    local syntax = Syntax(model);
  1136.  
  1137.    for(type in languages)
  1138.    {
  1139.       if((type != model) && (type != CURRENT_BUFFER) && (type != DEFAULT))
  1140.       {
  1141.          set_buffer_flags(type, set_flag_bits(BufferFlags(type), BUFFER1MASK, flags));
  1142.          set_syntax(type, syntax);
  1143.       }
  1144.    }
  1145. }
  1146.  
  1147. local function apply_settings2(model)
  1148. {
  1149.    local type;
  1150.    local tabs   = Tabs(model);
  1151.    local indent = AutoIndent(model);
  1152.  
  1153.    for(type in languages)
  1154.    {
  1155.       if((type != model) && (type != CURRENT_BUFFER) && (type != DEFAULT))
  1156.       {
  1157.          set_tabs(type, tabs);
  1158.          set_auto_indent(type, indent);
  1159.       }
  1160.    }
  1161. }
  1162.  
  1163. local function apply_settings3(model)
  1164. {
  1165.    local type;
  1166.    local flags   = BufferFlags(model);
  1167.    local margins = Margins(model);
  1168.  
  1169.    for(type in languages)
  1170.    {
  1171.       if((type != model) && (type != CURRENT_BUFFER) && (type != DEFAULT))
  1172.       {
  1173.          set_buffer_flags(type, set_flag_bits(BufferFlags(type), BUFFER3MASK, flags));
  1174.          set_margins(type, margins);
  1175.       }
  1176.    }
  1177. }
  1178.