[anjuta] language-support-cpp-java: indentation parameters



commit c60e7bfbb51bb96f5ed9348073e51424580e5886
Author: Carl-Anton Ingmarsson <ca ingmarsson gmail com>
Date:   Thu May 21 09:51:29 2009 +0200

    language-support-cpp-java: indentation parameters
    
    bgo#583346 â?? make indentation of parameters inside parantheses specifiable
---
 .../anjuta-language-cpp-java.ui                    |  242 ++++++++++++++-----
 plugins/language-support-cpp-java/plugin.c         |   40 +++-
 2 files changed, 206 insertions(+), 76 deletions(-)

diff --git a/plugins/language-support-cpp-java/anjuta-language-cpp-java.ui b/plugins/language-support-cpp-java/anjuta-language-cpp-java.ui
index 04d03a6..ea43bed 100644
--- a/plugins/language-support-cpp-java/anjuta-language-cpp-java.ui
+++ b/plugins/language-support-cpp-java/anjuta-language-cpp-java.ui
@@ -1,29 +1,23 @@
 <?xml version="1.0"?>
-<!--*- mode: xml -*-->
 <interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkAdjustment" id="adjustment1">
     <property name="upper">100</property>
-    <property name="lower">0</property>
-    <property name="page_increment">10</property>
     <property name="step_increment">1</property>
-    <property name="page_size">0</property>
-    <property name="value">0</property>
+    <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment2">
+    <property name="value">4</property>
     <property name="upper">100</property>
-    <property name="lower">0</property>
-    <property name="page_increment">10</property>
     <property name="step_increment">1</property>
-    <property name="page_size">0</property>
-    <property name="value">4</property>
+    <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment3">
+    <property name="value">10</property>
     <property name="upper">50</property>
-    <property name="lower">0</property>
-    <property name="page_increment">10</property>
     <property name="step_increment">1</property>
-    <property name="page_size">0</property>
-    <property name="value">10</property>
+    <property name="page_increment">10</property>
   </object>
   <object class="GtkWindow" id="preferences_dialog">
     <property name="title" translatable="yes">window1</property>
@@ -36,7 +30,7 @@
             <property name="visible">True</property>
             <property name="border_width">5</property>
             <property name="label_xalign">0</property>
-            <property name="shadow_type">GTK_SHADOW_NONE</property>
+            <property name="shadow_type">none</property>
             <child>
               <object class="GtkVBox" id="vbox1111">
                 <property name="visible">True</property>
@@ -46,28 +40,29 @@
                     <property name="visible">True</property>
                     <property name="border_width">10</property>
                     <property name="n_rows">3</property>
-                    <property name="n_columns">1</property>
                     <property name="column_spacing">5</property>
                     <property name="row_spacing">5</property>
                     <child>
                       <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:language.cpp.indent.automatic">
+                        <property name="label" translatable="yes">Enable smart indentation</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="label" translatable="yes">Enable smart indentation</property>
+                        <property name="receives_default">False</property>
                         <property name="use_underline">True</property>
                         <property name="xalign">0</property>
                         <property name="draw_indicator">True</property>
                       </object>
                       <packing>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options"/>
+                        <property name="y_options"></property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:language.cpp.indent.adaptive">
+                        <property name="label" translatable="yes">Enable adaptive indentation</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="label" translatable="yes">Enable adaptive indentation</property>
+                        <property name="receives_default">False</property>
                         <property name="use_underline">True</property>
                         <property name="draw_indicator">True</property>
                       </object>
@@ -75,13 +70,14 @@
                         <property name="top_attach">1</property>
                         <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options"/>
+                        <property name="y_options"></property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:language.cpp.indent.tab.indents">
-                        <property name="can_focus">True</property>
                         <property name="label" translatable="yes">Pressing tab indents</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
                         <property name="use_underline">True</property>
                         <property name="draw_indicator">True</property>
                       </object>
@@ -89,102 +85,202 @@
                         <property name="top_attach">2</property>
                         <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options"/>
+                        <property name="y_options"></property>
                       </packing>
                     </child>
                   </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkFrame" id="frame48">
                     <property name="visible">True</property>
                     <property name="label_xalign">0</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <property name="shadow_type">none</property>
                     <child>
                       <object class="GtkAlignment" id="alignment5">
                         <property name="visible">True</property>
                         <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkTable" id="table18">
+                          <object class="GtkVBox" id="vbox2">
                             <property name="visible">True</property>
-                            <property name="n_rows">2</property>
-                            <property name="n_columns">2</property>
-                            <property name="column_spacing">5</property>
-                            <property name="row_spacing">5</property>
+                            <property name="orientation">vertical</property>
                             <child>
-                              <object class="GtkSpinButton" id="preferences_spin:int:0:1:language.cpp.indent.brace.size">
+                              <object class="GtkTable" id="table18">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="adjustment">adjustment1</property>
-                                <property name="climb_rate">1</property>
-                                <property name="numeric">True</property>
+                                <property name="n_rows">2</property>
+                                <property name="n_columns">2</property>
+                                <property name="column_spacing">5</property>
+                                <property name="row_spacing">5</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="preferences_spin:int:0:1:language.cpp.indent.brace.size">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="invisible_char">&#x2022;</property>
+                                    <property name="adjustment">adjustment1</property>
+                                    <property name="climb_rate">1</property>
+                                    <property name="numeric">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="bottom_attach">2</property>
+                                    <property name="x_options"></property>
+                                    <property name="y_options"></property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" id="preferences_spin:int:4:1:language.cpp.indent.statement.size">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="invisible_char">&#x2022;</property>
+                                    <property name="adjustment">adjustment2</property>
+                                    <property name="climb_rate">1</property>
+                                    <property name="numeric">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                    <property name="x_options"></property>
+                                    <property name="y_options"></property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label12353">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Brace indentation size in spaces:</property>
+                                  </object>
+                                  <packing>
+                                    <property name="top_attach">1</property>
+                                    <property name="bottom_attach">2</property>
+                                    <property name="x_options">GTK_FILL</property>
+                                    <property name="y_options"></property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label123">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Statement indentation size in spaces:</property>
+                                  </object>
+                                  <packing>
+                                    <property name="x_options">GTK_FILL</property>
+                                    <property name="y_options"></property>
+                                  </packing>
+                                </child>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options"/>
-                                <property name="y_options"/>
+                                <property name="position">0</property>
                               </packing>
                             </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label12355">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Indentation parameters&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="frame2">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="top_padding">6</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkTable" id="table1">
+                            <property name="visible">True</property>
+                            <property name="n_rows">2</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">5</property>
+                            <property name="row_spacing">5</property>
                             <child>
-                              <object class="GtkSpinButton" id="preferences_spin:int:4:1:language.cpp.indent.statement.size">
+                              <object class="GtkRadioButton" id="preferences_toggle:bool:0:0:language.cpp.indent.paranthese.lineup">
+                                <property name="label" translatable="yes">Line up parantheses:</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="adjustment">adjustment2</property>
-                                <property name="climb_rate">1</property>
-                                <property name="numeric">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">preferences_toggle:bool:0:0:language.cpp.indent.paranthese.indent</property>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="x_options"/>
-                                <property name="y_options"/>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label12353">
+                              <object class="GtkRadioButton" id="preferences_toggle:bool:0:0:language.cpp.indent.paranthese.indent">
+                                <property name="label" translatable="yes">Indent:</property>
                                 <property name="visible">True</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Brace indentation size in spaces:</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
                               </object>
                               <packing>
                                 <property name="top_attach">1</property>
                                 <property name="bottom_attach">2</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
+                                <property name="y_options"></property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label123">
+                              <object class="GtkSpinButton" id="preferences_spin:int:4:1:language.cpp.indent.paranthese.size">
                                 <property name="visible">True</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Statement indentation size in spaces:</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">&#x2022;</property>
+                                <property name="adjustment">adjustment4</property>
+                                <property name="climb_rate">1</property>
+                                <property name="numeric">True</property>
+                                <signal name="value_changed" handler="on_spinbutton1_value_changed"/>
                               </object>
                               <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
+                                <property name="y_options"></property>
                               </packing>
                             </child>
+                            <child>
+                              <placeholder/>
+                            </child>
                           </object>
                         </child>
                       </object>
                     </child>
                     <child type="label">
-                      <object class="GtkLabel" id="label12355">
+                      <object class="GtkLabel" id="label3">
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">&lt;b&gt;Indentation parameters&lt;/b&gt;</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Paranthese indentation &lt;/b&gt;</property>
                         <property name="use_markup">True</property>
                       </object>
                     </child>
                   </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="position">1</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
                   </packing>
                 </child>
               </object>
@@ -217,7 +313,7 @@
                 <property name="border_width">5</property>
                 <property name="label_xalign">0</property>
                 <property name="label_yalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
+                <property name="shadow_type">none</property>
                 <child>
                   <object class="GtkVBox" id="vbox1118">
                     <property name="visible">True</property>
@@ -238,6 +334,7 @@
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
+                            <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
@@ -257,14 +354,16 @@
                       <packing>
                         <property name="expand">False</property>
                         <property name="fill">False</property>
+                        <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:language.cpp.code.completion.enable">
+                        <property name="label" translatable="yes">Enable code completion</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
                         <property name="border_width">5</property>
-                        <property name="label" translatable="yes">Enable code completion</property>
                         <property name="use_underline">True</property>
                         <property name="draw_indicator">True</property>
                       </object>
@@ -276,11 +375,12 @@
                     </child>
                     <child>
                       <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:language.cpp.code.completion.space.after.func">
+                        <property name="label" translatable="yes">Add a space after function call autocompletion</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="border_width">5</property>
-                        <property name="label" translatable="yes">Add a space after function call autocompletion</property>
                         <property name="draw_indicator">True</property>
                       </object>
                       <packing>
@@ -289,11 +389,12 @@
                     </child>
                     <child>
                       <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:language.cpp.code.completion.brace.after.func">
+                        <property name="label" translatable="yes">Add '(' after function call autocompletion</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="border_width">5</property>
-                        <property name="label" translatable="yes">Add '(' after function call autocompletion</property>
                         <property name="draw_indicator">True</property>
                       </object>
                       <packing>
@@ -302,11 +403,12 @@
                     </child>
                     <child>
                       <object class="GtkCheckButton" id="preferences_toggle:bool:0:1:language.cpp.brace.autocompletion">
+                        <property name="label" translatable="yes">Enable smart brace completion</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="border_width">5</property>
-                        <property name="label" translatable="yes">Enable smart brace completion</property>
                         <property name="draw_indicator">True</property>
                       </object>
                       <packing>
@@ -328,6 +430,7 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
@@ -337,7 +440,7 @@
                 <property name="border_width">5</property>
                 <property name="label_xalign">0</property>
                 <property name="label_yalign">0</property>
-                <property name="shadow_type">GTK_SHADOW_NONE</property>
+                <property name="shadow_type">none</property>
                 <child>
                   <object class="GtkAlignment" id="alignment1">
                     <property name="visible">True</property>
@@ -348,16 +451,18 @@
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <child>
                           <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:language.cpp.code.calltip.enable">
+                            <property name="label" translatable="yes">Show calltips</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="border_width">5</property>
-                            <property name="label" translatable="yes">Show calltips</property>
                             <property name="draw_indicator">True</property>
                           </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
+                            <property name="position">0</property>
                           </packing>
                         </child>
                       </object>
@@ -380,6 +485,9 @@
               </packing>
             </child>
           </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
         </child>
         <child type="tab">
           <object class="GtkLabel" id="label1">
@@ -395,4 +503,10 @@
       </object>
     </child>
   </object>
+  <object class="GtkAdjustment" id="adjustment4">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
 </interface>
diff --git a/plugins/language-support-cpp-java/plugin.c b/plugins/language-support-cpp-java/plugin.c
index a77c2cf..21d01ea 100644
--- a/plugins/language-support-cpp-java/plugin.c
+++ b/plugins/language-support-cpp-java/plugin.c
@@ -60,6 +60,8 @@
 #define PREF_INDENT_TAB_INDENTS "language.cpp.indent.tab.indents"
 #define PREF_INDENT_STATEMENT_SIZE "language.cpp.indent.statement.size"
 #define PREF_INDENT_BRACE_SIZE "language.cpp.indent.brace.size"
+#define PREF_INDENT_PARANTHESE_LINEUP "language.cpp.indent.paranthese.lineup"
+#define PREF_INDENT_PARANTHESE_SIZE "language.cpp.indent.paranthese.size"
 #define PREF_BRACE_AUTOCOMPLETION "language.cpp.brace.autocompletion"
 
 #define TAB_SIZE (ianjuta_editor_get_tabsize (editor, NULL))
@@ -1066,22 +1068,36 @@ get_line_indentation_base (CppJavaPlugin *plugin,
 		else if (point_ch == '(' || point_ch == '[')
 		{
 			line_indent = 0;
-			while (ianjuta_iterable_previous (iter, NULL))
+			if (anjuta_preferences_get_bool (plugin->prefs,
+			                                 PREF_INDENT_PARANTHESE_LINEUP))
 			{
-				gchar dummy_ch = ianjuta_editor_cell_get_char (IANJUTA_EDITOR_CELL (iter), 0,
-														 NULL);
-				if (iter_is_newline (iter, dummy_ch))
+				while (ianjuta_iterable_previous (iter, NULL))
 				{
-					skip_iter_to_newline_head (iter, dummy_ch);
-					break;
+					gchar dummy_ch = ianjuta_editor_cell_get_char (IANJUTA_EDITOR_CELL (iter), 0,
+					                                               NULL);
+					if (iter_is_newline (iter, dummy_ch))
+					{
+						skip_iter_to_newline_head (iter, dummy_ch);
+						break;
+					}
+					if (dummy_ch == '\t')
+						line_indent += TAB_SIZE;
+					else
+						(*line_indent_spaces)++;
 				}
-				if (dummy_ch == '\t')
-					line_indent += TAB_SIZE;
-				else
-					(*line_indent_spaces)++;
+				(*line_indent_spaces)++;
+				line_indent += extra_indent;
+			}
+			else
+			{
+				gint line_for_indent =
+					ianjuta_editor_get_line_from_position (editor, iter, NULL);
+				line_indent = get_line_indentation (editor, line_for_indent);
+				line_indent += extra_indent;
+
+				(*line_indent_spaces) += anjuta_preferences_get_int (plugin->prefs,
+				                                                     PREF_INDENT_PARANTHESE_SIZE);
 			}
-			(*line_indent_spaces)++;
-			line_indent += extra_indent;
 			
 			/* Although statement is incomplete at this point, we don't
 			 * set it to incomplete and just leave it to unknown to avaoid



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]