SF.net SVN: geany:[3319] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Thu Dec 4 20:19:20 UTC 2008


Revision: 3319
          http://geany.svn.sourceforge.net/geany/?rev=3319&view=rev
Author:   eht16
Date:     2008-12-04 20:19:20 +0000 (Thu, 04 Dec 2008)

Log Message:
-----------
Add auto-closing of braces, brackets and quotes (patch by Guillaume de Rorthais, thanks).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/THANKS
    trunk/geany.glade
    trunk/src/about.c
    trunk/src/editor.c
    trunk/src/editor.h
    trunk/src/interface.c
    trunk/src/keyfile.c
    trunk/src/plugindata.h
    trunk/src/prefs.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/ChangeLog	2008-12-04 20:19:20 UTC (rev 3319)
@@ -8,6 +8,10 @@
  * plugins/genapi.py:
    Beatify the header comments of the generated API file.
    Add command line option to suppress status output.
+ * THANKS, geany.glade, src/about.c, src/editor.c, src/editor.h,
+   src/interface.c, src/keyfile.c, src/plugindata.h, src/prefs.c:
+   Add auto-closing of braces, brackets and quotes
+   (patch by Guillaume de Rorthais, thanks).
 
 
 2008-12-04  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/THANKS
===================================================================
--- trunk/THANKS	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/THANKS	2008-12-04 20:19:20 UTC (rev 3319)
@@ -56,6 +56,7 @@
 Moritz Barsnick <barsnick(at)users(dot)sourceforge(dot)net> - Split Vertically command
 Tyler D'Agosta - Add missing HTML entities
 Walery Studennikov <despairr(at)gmail(dot)com> - YAML filetype patch
+Guillaume de Rorthais <ioguix(at)free(dot)fr> - Auto-close brackets/braces/quotes patch
 
 Translators:
 ------------

Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/geany.glade	2008-12-04 20:19:20 UTC (rev 3319)
@@ -6236,301 +6236,492 @@
 	      </child>
 
 	      <child>
-		<widget class="GtkFrame" id="frame18">
-		  <property name="border_width">5</property>
+		<widget class="GtkVBox" id="vbox39">
 		  <property name="visible">True</property>
-		  <property name="label_xalign">0</property>
-		  <property name="label_yalign">0.5</property>
-		  <property name="shadow_type">GTK_SHADOW_NONE</property>
+		  <property name="homogeneous">True</property>
+		  <property name="spacing">1</property>
 
 		  <child>
-		    <widget class="GtkAlignment" id="alignment21">
+		    <widget class="GtkFrame" id="frame18">
+		      <property name="border_width">5</property>
 		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_NONE</property>
 
 		      <child>
-			<widget class="GtkVBox" id="vbox19">
+			<widget class="GtkAlignment" id="alignment21">
 			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">0</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">12</property>
+			  <property name="right_padding">0</property>
 
 			  <child>
-			    <widget class="GtkCheckButton" id="check_complete_snippets">
+			    <widget class="GtkVBox" id="vbox19">
 			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Type a defined short character sequence and complete it to a more complex string using a single keypress.</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Snippet completion</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">0</property>
 
-			  <child>
-			    <widget class="GtkCheckButton" id="check_xmltag">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Automatic completion and closing of XML tags (includes HTML tags)</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">XML tag auto completion</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
+			      <child>
+				<widget class="GtkCheckButton" id="check_complete_snippets">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Type a defined short character sequence and complete it to a more complex string using a single keypress.</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">Snippet completion</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
 
-			  <child>
-			    <widget class="GtkCheckButton" id="check_auto_multiline">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Continue automatically multi-line comments in languages like C, C++ and Java when a new line is entered inside such a comment.</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Automatic continuation of multi-line comments</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
+			      <child>
+				<widget class="GtkCheckButton" id="check_xmltag">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Automatic completion and closing of XML tags (includes HTML tags)</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">XML tag auto completion</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
 
-			  <child>
-			    <widget class="GtkCheckButton" id="check_symbol_auto_completion">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Automatic completion of known symbols in open files (function names, global variables, ...)</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Automatic symbol completion</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
+			      <child>
+				<widget class="GtkCheckButton" id="check_auto_multiline">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Continue automatically multi-line comments in languages like C, C++ and Java when a new line is entered inside such a comment.</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">Automatic continuation of multi-line comments</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkCheckButton" id="check_symbol_auto_completion">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Automatic completion of known symbols in open files (function names, global variables, ...)</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">Automatic symbol completion</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkTable" id="table14">
+				  <property name="visible">True</property>
+				  <property name="n_rows">3</property>
+				  <property name="n_columns">2</property>
+				  <property name="homogeneous">False</property>
+				  <property name="row_spacing">3</property>
+				  <property name="column_spacing">12</property>
+
+				  <child>
+				    <widget class="GtkLabel" id="label223">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Max. symbol name suggestions:</property>
+				      <property name="use_underline">False</property>
+				      <property name="use_markup">False</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				      <property name="width_chars">-1</property>
+				      <property name="single_line_mode">False</property>
+				      <property name="angle">0</property>
+				    </widget>
+				    <packing>
+				      <property name="left_attach">0</property>
+				      <property name="right_attach">1</property>
+				      <property name="top_attach">2</property>
+				      <property name="bottom_attach">3</property>
+				      <property name="x_options">fill</property>
+				      <property name="y_options"></property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="label173">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Completion list height:</property>
+				      <property name="use_underline">False</property>
+				      <property name="use_markup">False</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				      <property name="width_chars">-1</property>
+				      <property name="single_line_mode">False</property>
+				      <property name="angle">0</property>
+				    </widget>
+				    <packing>
+				      <property name="left_attach">0</property>
+				      <property name="right_attach">1</property>
+				      <property name="top_attach">1</property>
+				      <property name="bottom_attach">2</property>
+				      <property name="x_options">fill</property>
+				      <property name="y_options"></property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="label205">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Characters to type for completion:</property>
+				      <property name="use_underline">False</property>
+				      <property name="use_markup">False</property>
+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
+				      <property name="wrap">False</property>
+				      <property name="selectable">False</property>
+				      <property name="xalign">0</property>
+				      <property name="yalign">0.5</property>
+				      <property name="xpad">0</property>
+				      <property name="ypad">0</property>
+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				      <property name="width_chars">-1</property>
+				      <property name="single_line_mode">False</property>
+				      <property name="angle">0</property>
+				    </widget>
+				    <packing>
+				      <property name="left_attach">0</property>
+				      <property name="right_attach">1</property>
+				      <property name="top_attach">0</property>
+				      <property name="bottom_attach">1</property>
+				      <property name="x_options">fill</property>
+				      <property name="y_options"></property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkSpinButton" id="spin_symbol_complete_chars">
+				      <property name="visible">True</property>
+				      <property name="tooltip" translatable="yes">The amount of characters which are necessary to show the symbol auto completion list.</property>
+				      <property name="can_focus">True</property>
+				      <property name="climb_rate">1</property>
+				      <property name="digits">0</property>
+				      <property name="numeric">True</property>
+				      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				      <property name="snap_to_ticks">False</property>
+				      <property name="wrap">False</property>
+				      <property name="adjustment">9 1 99 1 10 0</property>
+				    </widget>
+				    <packing>
+				      <property name="left_attach">1</property>
+				      <property name="right_attach">2</property>
+				      <property name="top_attach">0</property>
+				      <property name="bottom_attach">1</property>
+				      <property name="y_options"></property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkSpinButton" id="spin_symbollistheight">
+				      <property name="visible">True</property>
+				      <property name="tooltip" translatable="yes">Display height in rows for the auto completion list.</property>
+				      <property name="can_focus">True</property>
+				      <property name="climb_rate">1</property>
+				      <property name="digits">0</property>
+				      <property name="numeric">True</property>
+				      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				      <property name="snap_to_ticks">False</property>
+				      <property name="wrap">False</property>
+				      <property name="adjustment">9 1 99 1 10 0</property>
+				    </widget>
+				    <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="y_options"></property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkSpinButton" id="spin_autocompletion_max_entries">
+				      <property name="visible">True</property>
+				      <property name="tooltip" translatable="yes">Maximum number of entries to display in the auto completion list.</property>
+				      <property name="can_focus">True</property>
+				      <property name="climb_rate">1</property>
+				      <property name="digits">0</property>
+				      <property name="numeric">True</property>
+				      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+				      <property name="snap_to_ticks">False</property>
+				      <property name="wrap">False</property>
+				      <property name="adjustment">9 1 10000 1 10 0</property>
+				    </widget>
+				    <packing>
+				      <property name="left_attach">1</property>
+				      <property name="right_attach">2</property>
+				      <property name="top_attach">2</property>
+				      <property name="bottom_attach">3</property>
+				      <property name="y_options"></property>
+				    </packing>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
 			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
 			  </child>
+			</widget>
+		      </child>
 
+		      <child>
+			<widget class="GtkLabel" id="label177">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"><b>Completions</b></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">True</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame38">
+		      <property name="border_width">5</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment42">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">12</property>
+			  <property name="right_padding">0</property>
+
 			  <child>
-			    <widget class="GtkTable" id="table14">
+			    <widget class="GtkTable" id="table16">
 			      <property name="visible">True</property>
-			      <property name="n_rows">3</property>
+			      <property name="n_rows">5</property>
 			      <property name="n_columns">2</property>
 			      <property name="homogeneous">False</property>
-			      <property name="row_spacing">3</property>
-			      <property name="column_spacing">12</property>
+			      <property name="row_spacing">0</property>
+			      <property name="column_spacing">0</property>
 
 			      <child>
-				<widget class="GtkLabel" id="label223">
+				<widget class="GtkCheckButton" id="check_autoclose_parenthesis">
 				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">Max. symbol name suggestions:</property>
-				  <property name="use_underline">False</property>
-				  <property name="use_markup">False</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</property>
+				  <property name="tooltip" translatable="yes">Auto-close parenthesis when typing an opening one</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">Parenthesis ( )</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
 				</widget>
 				<packing>
 				  <property name="left_attach">0</property>
 				  <property name="right_attach">1</property>
-				  <property name="top_attach">2</property>
-				  <property name="bottom_attach">3</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
 				  <property name="x_options">fill</property>
 				  <property name="y_options"></property>
 				</packing>
 			      </child>
 
 			      <child>
-				<widget class="GtkLabel" id="label173">
+				<widget class="GtkCheckButton" id="check_autoclose_squote">
 				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">Completion list height:</property>
-				  <property name="use_underline">False</property>
-				  <property name="use_markup">False</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</property>
+				  <property name="tooltip" translatable="yes">Auto-close simple quote when typing an opening one</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">Simple quotes ' '</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
 				</widget>
 				<packing>
 				  <property name="left_attach">0</property>
 				  <property name="right_attach">1</property>
-				  <property name="top_attach">1</property>
-				  <property name="bottom_attach">2</property>
+				  <property name="top_attach">3</property>
+				  <property name="bottom_attach">4</property>
 				  <property name="x_options">fill</property>
 				  <property name="y_options"></property>
 				</packing>
 			      </child>
 
 			      <child>
-				<widget class="GtkLabel" id="label205">
+				<widget class="GtkCheckButton" id="check_autoclose_cbracket">
 				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">Characters to type for completion:</property>
-				  <property name="use_underline">False</property>
-				  <property name="use_markup">False</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</property>
+				  <property name="tooltip" translatable="yes">Auto-close curly bracket when typing an opening one</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">Curly brackets { }</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
 				</widget>
 				<packing>
 				  <property name="left_attach">0</property>
 				  <property name="right_attach">1</property>
-				  <property name="top_attach">0</property>
-				  <property name="bottom_attach">1</property>
+				  <property name="top_attach">1</property>
+				  <property name="bottom_attach">2</property>
 				  <property name="x_options">fill</property>
 				  <property name="y_options"></property>
 				</packing>
 			      </child>
 
 			      <child>
-				<widget class="GtkSpinButton" id="spin_symbol_complete_chars">
+				<widget class="GtkCheckButton" id="check_autoclose_sbracket">
 				  <property name="visible">True</property>
-				  <property name="tooltip" translatable="yes">The amount of characters which are necessary to show the symbol auto completion list.</property>
+				  <property name="tooltip" translatable="yes">Auto-close squre-bracket when typing an opening one</property>
 				  <property name="can_focus">True</property>
-				  <property name="climb_rate">1</property>
-				  <property name="digits">0</property>
-				  <property name="numeric">True</property>
-				  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-				  <property name="snap_to_ticks">False</property>
-				  <property name="wrap">False</property>
-				  <property name="adjustment">9 1 99 1 10 0</property>
+				  <property name="label" translatable="yes">Square brackets [ ]</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
 				</widget>
 				<packing>
-				  <property name="left_attach">1</property>
-				  <property name="right_attach">2</property>
-				  <property name="top_attach">0</property>
-				  <property name="bottom_attach">1</property>
+				  <property name="left_attach">0</property>
+				  <property name="right_attach">1</property>
+				  <property name="top_attach">2</property>
+				  <property name="bottom_attach">3</property>
+				  <property name="x_options">fill</property>
 				  <property name="y_options"></property>
 				</packing>
 			      </child>
 
 			      <child>
-				<widget class="GtkSpinButton" id="spin_symbollistheight">
+				<widget class="GtkCheckButton" id="check_autoclose_dquote">
 				  <property name="visible">True</property>
-				  <property name="tooltip" translatable="yes">Display height in rows for the auto completion list.</property>
+				  <property name="tooltip" translatable="yes">Auto-close double quote when typing an opening one</property>
 				  <property name="can_focus">True</property>
-				  <property name="climb_rate">1</property>
-				  <property name="digits">0</property>
-				  <property name="numeric">True</property>
-				  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-				  <property name="snap_to_ticks">False</property>
-				  <property name="wrap">False</property>
-				  <property name="adjustment">9 1 99 1 10 0</property>
+				  <property name="label" translatable="yes">Double quotes " "</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">False</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
 				</widget>
 				<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="left_attach">0</property>
+				  <property name="right_attach">1</property>
+				  <property name="top_attach">4</property>
+				  <property name="bottom_attach">5</property>
+				  <property name="x_options">fill</property>
 				  <property name="y_options"></property>
 				</packing>
 			      </child>
-
-			      <child>
-				<widget class="GtkSpinButton" id="spin_autocompletion_max_entries">
-				  <property name="visible">True</property>
-				  <property name="tooltip" translatable="yes">Maximum number of entries to display in the auto completion list.</property>
-				  <property name="can_focus">True</property>
-				  <property name="climb_rate">1</property>
-				  <property name="digits">0</property>
-				  <property name="numeric">True</property>
-				  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-				  <property name="snap_to_ticks">False</property>
-				  <property name="wrap">False</property>
-				  <property name="adjustment">9 1 10000 1 10 0</property>
-				</widget>
-				<packing>
-				  <property name="left_attach">1</property>
-				  <property name="right_attach">2</property>
-				  <property name="top_attach">2</property>
-				  <property name="bottom_attach">3</property>
-				  <property name="y_options"></property>
-				</packing>
-			      </child>
 			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
 			  </child>
 			</widget>
 		      </child>
-		    </widget>
-		  </child>
 
-		  <child>
-		    <widget class="GtkLabel" id="label177">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"><b>Completions</b></property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">True</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
+		      <child>
+			<widget class="GtkLabel" id="label225">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"><b>Auto-close quotes and brackets</b></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">True</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
 		    </widget>
 		    <packing>
-		      <property name="type">label_item</property>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
 		    </packing>
 		  </child>
 		</widget>
@@ -6541,7 +6732,7 @@
 	      </child>
 
 	      <child>
-		<widget class="GtkLabel" id="label212">
+		<widget class="GtkLabel" id="label226">
 		  <property name="visible">True</property>
 		  <property name="label" translatable="yes">Completions</property>
 		  <property name="use_underline">False</property>

Modified: trunk/src/about.c
===================================================================
--- trunk/src/about.c	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/src/about.c	2008-12-04 20:19:20 UTC (rev 3319)
@@ -80,7 +80,7 @@
 static const gchar *contributors =
 "Alexander Rodin, Andrew Rowland, Anh Phạm, blackdog, Bo Lorentsen, Bob Doan, Bronisław Białek, Catalin Marinas, "
 "Christoph Berg, Colomban Wendling, Conrad Steenberg, Daniel Richard G., Dave Moore, Dirk Weber, Felipe Pena, François Cami, "
-"Giuseppe Torelli, Guillaume Hoffmann, Herbert Voss, Jason Oster, Jean-François Wauthy, Jeff Pohlmeyer, "
+"Giuseppe Torelli, Guillaume de Rorthais, Guillaume Hoffmann, Herbert Voss, Jason Oster, Jean-François Wauthy, Jeff Pohlmeyer, "
 "John Gabriele, Josef Whiter, Kevin Ellwood, Kristoffer A. Tjernås, Marko Peric, Matti Mårds, Moritz Barsnick, "
 "Peter Strand, Pierre Joye, Rob van der Linde, Robert McGinley, Roland Baudin, S Jagannathan, Saleem Abdulrasool, "
 "Sebastian Kraft, Shiv, Slava Semushin, Stefan Oltmanns, Tamim, Tomás Vírseda, Walery Studennikov, Yura Siamashka";

Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/src/editor.c	2008-12-04 20:19:20 UTC (rev 3319)
@@ -89,7 +89,7 @@
 static void insert_indent_after_line(GeanyEditor *editor, gint line);
 static void auto_multiline(GeanyEditor *editor, gint pos);
 static gboolean is_code_style(gint lexer, gint style);
-static void auto_close_bracket(ScintillaObject *sci, gint pos, gchar c);
+static void auto_close_chars(ScintillaObject *sci, gint pos, gchar c);
 static void auto_table(GeanyEditor *editor, gint pos);
 static void close_block(GeanyEditor *editor, gint pos);
 
@@ -436,7 +436,9 @@
 			break;
 		}
 		case '(':
-		{	/* show calltips */
+		{
+			auto_close_chars(sci, pos, nt->ch);
+			/* show calltips */
 			editor_show_calltip(editor, --pos);
 			break;
 		}
@@ -453,14 +455,12 @@
 			calltip.set = FALSE;
 			break;
 		}
+		case '{':
 		case '[':
-		case '{':
-		{	/* Tex auto-closing */
-			if (sci_get_lexer(sci) == SCLEX_LATEX)
-			{
-				auto_close_bracket(sci, pos, nt->ch);	/* Tex auto-closing */
-				editor_show_calltip(editor, --pos);
-			}
+		case '"':
+		case '\'':
+		{
+			auto_close_chars(sci, pos, nt->ch);
 			break;
 		}
 		case '}':
@@ -1007,20 +1007,36 @@
 }
 
 
-static void auto_close_bracket(ScintillaObject *sci, gint pos, gchar c)
+static void auto_close_chars(ScintillaObject *sci, gint pos, gchar c)
 {
-	if (! editor_prefs.complete_snippets || SSM(sci, SCI_GETLEXER, 0, 0) != SCLEX_LATEX)
-		return;
+	const gchar *closing_char;
 
-	if (c == '[')
+	if ((editor_prefs.autoclose_chars & GEANY_AC_PARENTHESIS) && c == '(')
 	{
-		sci_add_text(sci, "]");
+		closing_char = ")";
 	}
-	else if (c == '{')
+	else if ((editor_prefs.autoclose_chars & GEANY_AC_CBRACKET) && c == '{')
 	{
-		sci_add_text(sci, "}");
+		closing_char = "}";
 	}
-	sci_set_current_position(sci, pos, TRUE);
+	else if ((editor_prefs.autoclose_chars & GEANY_AC_SBRACKET) && c == '[')
+	{
+		closing_char = "]";
+	}
+	else if ((editor_prefs.autoclose_chars & GEANY_AC_SQUOTE) && c == '\'')
+	{
+		closing_char = "'";
+	}
+	else if ((editor_prefs.autoclose_chars & GEANY_AC_DQUOTE) && c == '"')
+	{
+		closing_char = "\"";
+	}
+
+	if (closing_char != NULL)
+	{
+		sci_add_text(sci, closing_char);
+		sci_set_current_position(sci, pos, TRUE);
+	}
 }
 
 

Modified: trunk/src/editor.h
===================================================================
--- trunk/src/editor.h	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/src/editor.h	2008-12-04 20:19:20 UTC (rev 3319)
@@ -50,6 +50,16 @@
 }
 GeanyAutoIndent;
 
+
+/* Auto-close brackets/quotes */
+enum {
+	GEANY_AC_PARENTHESIS	= 1,
+	GEANY_AC_CBRACKET		= 2,
+	GEANY_AC_SBRACKET		= 4,
+	GEANY_AC_SQUOTE			= 8,
+	GEANY_AC_DQUOTE			= 16
+};
+
 /** Geany indicator types, can be used with Editor indicator functions to highlight
  *  text in the document. */
 typedef enum
@@ -114,6 +124,7 @@
 	gboolean	auto_continue_multiline;
 	gchar		*comment_toggle_mark;
 	guint		autocompletion_max_entries;
+	guint		autoclose_chars;
 } GeanyEditorPrefs;
 
 extern GeanyEditorPrefs editor_prefs;

Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/src/interface.c	2008-12-04 20:19:20 UTC (rev 3319)
@@ -2773,6 +2773,7 @@
   GtkWidget *entry_toggle_mark;
   GtkWidget *label172;
   GtkWidget *label211;
+  GtkWidget *vbox39;
   GtkWidget *frame18;
   GtkWidget *alignment21;
   GtkWidget *vbox19;
@@ -2791,7 +2792,16 @@
   GtkObject *spin_autocompletion_max_entries_adj;
   GtkWidget *spin_autocompletion_max_entries;
   GtkWidget *label177;
-  GtkWidget *label212;
+  GtkWidget *frame38;
+  GtkWidget *alignment42;
+  GtkWidget *table16;
+  GtkWidget *check_autoclose_parenthesis;
+  GtkWidget *check_autoclose_squote;
+  GtkWidget *check_autoclose_cbracket;
+  GtkWidget *check_autoclose_sbracket;
+  GtkWidget *check_autoclose_dquote;
+  GtkWidget *label225;
+  GtkWidget *label226;
   GtkWidget *vbox24;
   GtkWidget *frame5;
   GtkWidget *alignment6;
@@ -3854,9 +3864,13 @@
   gtk_widget_show (label211);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook4), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook4), 0), label211);
 
+  vbox39 = gtk_vbox_new (TRUE, 1);
+  gtk_widget_show (vbox39);
+  gtk_container_add (GTK_CONTAINER (notebook4), vbox39);
+
   frame18 = gtk_frame_new (NULL);
   gtk_widget_show (frame18);
-  gtk_container_add (GTK_CONTAINER (notebook4), frame18);
+  gtk_box_pack_start (GTK_BOX (vbox39), frame18, TRUE, TRUE, 0);
   gtk_container_set_border_width (GTK_CONTAINER (frame18), 5);
   gtk_frame_set_shadow_type (GTK_FRAME (frame18), GTK_SHADOW_NONE);
 
@@ -3948,10 +3962,65 @@
   gtk_frame_set_label_widget (GTK_FRAME (frame18), label177);
   gtk_label_set_use_markup (GTK_LABEL (label177), TRUE);
 
-  label212 = gtk_label_new (_("Completions"));
-  gtk_widget_show (label212);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook4), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook4), 1), label212);
+  frame38 = gtk_frame_new (NULL);
+  gtk_widget_show (frame38);
+  gtk_box_pack_start (GTK_BOX (vbox39), frame38, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame38), 5);
+  gtk_frame_set_shadow_type (GTK_FRAME (frame38), GTK_SHADOW_NONE);
 
+  alignment42 = gtk_alignment_new (0.5, 0.5, 1, 1);
+  gtk_widget_show (alignment42);
+  gtk_container_add (GTK_CONTAINER (frame38), alignment42);
+  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment42), 0, 0, 12, 0);
+
+  table16 = gtk_table_new (5, 2, FALSE);
+  gtk_widget_show (table16);
+  gtk_container_add (GTK_CONTAINER (alignment42), table16);
+
+  check_autoclose_parenthesis = gtk_check_button_new_with_mnemonic (_("Parenthesis ( )"));
+  gtk_widget_show (check_autoclose_parenthesis);
+  gtk_table_attach (GTK_TABLE (table16), check_autoclose_parenthesis, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, check_autoclose_parenthesis, _("Auto-close parenthesis when typing an opening one"), NULL);
+
+  check_autoclose_squote = gtk_check_button_new_with_mnemonic (_("Simple quotes ' '"));
+  gtk_widget_show (check_autoclose_squote);
+  gtk_table_attach (GTK_TABLE (table16), check_autoclose_squote, 0, 1, 3, 4,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, check_autoclose_squote, _("Auto-close simple quote when typing an opening one"), NULL);
+
+  check_autoclose_cbracket = gtk_check_button_new_with_mnemonic (_("Curly brackets { }"));
+  gtk_widget_show (check_autoclose_cbracket);
+  gtk_table_attach (GTK_TABLE (table16), check_autoclose_cbracket, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, check_autoclose_cbracket, _("Auto-close curly bracket when typing an opening one"), NULL);
+
+  check_autoclose_sbracket = gtk_check_button_new_with_mnemonic (_("Square brackets [ ]"));
+  gtk_widget_show (check_autoclose_sbracket);
+  gtk_table_attach (GTK_TABLE (table16), check_autoclose_sbracket, 0, 1, 2, 3,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, check_autoclose_sbracket, _("Auto-close squre-bracket when typing an opening one"), NULL);
+
+  check_autoclose_dquote = gtk_check_button_new_with_mnemonic (_("Double quotes \" \""));
+  gtk_widget_show (check_autoclose_dquote);
+  gtk_table_attach (GTK_TABLE (table16), check_autoclose_dquote, 0, 1, 4, 5,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_tooltips_set_tip (tooltips, check_autoclose_dquote, _("Auto-close double quote when typing an opening one"), NULL);
+
+  label225 = gtk_label_new (_("<b>Auto-close quotes and brackets</b>"));
+  gtk_widget_show (label225);
+  gtk_frame_set_label_widget (GTK_FRAME (frame38), label225);
+  gtk_label_set_use_markup (GTK_LABEL (label225), TRUE);
+
+  label226 = gtk_label_new (_("Completions"));
+  gtk_widget_show (label226);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook4), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook4), 1), label226);
+
   vbox24 = gtk_vbox_new (FALSE, 10);
   gtk_widget_show (vbox24);
   gtk_container_add (GTK_CONTAINER (notebook4), vbox24);
@@ -5012,6 +5081,7 @@
   GLADE_HOOKUP_OBJECT (prefs_dialog, entry_toggle_mark, "entry_toggle_mark");
   GLADE_HOOKUP_OBJECT (prefs_dialog, label172, "label172");
   GLADE_HOOKUP_OBJECT (prefs_dialog, label211, "label211");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, vbox39, "vbox39");
   GLADE_HOOKUP_OBJECT (prefs_dialog, frame18, "frame18");
   GLADE_HOOKUP_OBJECT (prefs_dialog, alignment21, "alignment21");
   GLADE_HOOKUP_OBJECT (prefs_dialog, vbox19, "vbox19");
@@ -5027,7 +5097,16 @@
   GLADE_HOOKUP_OBJECT (prefs_dialog, spin_symbollistheight, "spin_symbollistheight");
   GLADE_HOOKUP_OBJECT (prefs_dialog, spin_autocompletion_max_entries, "spin_autocompletion_max_entries");
   GLADE_HOOKUP_OBJECT (prefs_dialog, label177, "label177");
-  GLADE_HOOKUP_OBJECT (prefs_dialog, label212, "label212");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, frame38, "frame38");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, alignment42, "alignment42");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, table16, "table16");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, check_autoclose_parenthesis, "check_autoclose_parenthesis");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, check_autoclose_squote, "check_autoclose_squote");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, check_autoclose_cbracket, "check_autoclose_cbracket");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, check_autoclose_sbracket, "check_autoclose_sbracket");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, check_autoclose_dquote, "check_autoclose_dquote");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, label225, "label225");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, label226, "label226");
   GLADE_HOOKUP_OBJECT (prefs_dialog, vbox24, "vbox24");
   GLADE_HOOKUP_OBJECT (prefs_dialog, frame5, "frame5");
   GLADE_HOOKUP_OBJECT (prefs_dialog, alignment6, "alignment6");

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/src/keyfile.c	2008-12-04 20:19:20 UTC (rev 3319)
@@ -333,6 +333,7 @@
 	g_key_file_set_boolean(config, PACKAGE, "auto_continue_multiline", editor_prefs.auto_continue_multiline);
 	g_key_file_set_string(config, PACKAGE, "comment_toggle_mark", editor_prefs.comment_toggle_mark);
 	g_key_file_set_boolean(config, PACKAGE, "scroll_stop_at_last_line", editor_prefs.scroll_stop_at_last_line);
+	g_key_file_set_integer(config, PACKAGE, "autoclose_chars", editor_prefs.autoclose_chars);
 
 	/* files */
 	g_key_file_set_string(config, PACKAGE, "pref_editor_default_new_encoding", encodings[file_prefs.default_new_encoding].charset);
@@ -618,6 +619,7 @@
 	editor_prefs.line_break_column = utils_get_setting_integer(config, PACKAGE, "line_break_column", 72);
 	editor_prefs.auto_continue_multiline = utils_get_setting_boolean(config, PACKAGE, "auto_continue_multiline", TRUE);
 	editor_prefs.comment_toggle_mark = utils_get_setting_string(config, PACKAGE, "comment_toggle_mark", GEANY_TOGGLE_MARK);
+	editor_prefs.autoclose_chars = utils_get_setting_integer(config, PACKAGE, "autoclose_chars", 0);
 
 	/* Files
 	 * use current locale encoding as default for new files (should be UTF-8 in most cases) */

Modified: trunk/src/plugindata.h
===================================================================
--- trunk/src/plugindata.h	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/src/plugindata.h	2008-12-04 20:19:20 UTC (rev 3319)
@@ -45,7 +45,7 @@
 enum {
 	/** The Application Programming Interface (API) version, incremented
 	 * whenever any plugin data types are modified or appended to. */
-	GEANY_API_VERSION = 115,
+	GEANY_API_VERSION = 116,
 
 	/** The Application Binary Interface (ABI) version, incremented whenever
 	 * existing fields in the plugin data types have to be changed or reordered. */

Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c	2008-12-04 18:12:09 UTC (rev 3318)
+++ trunk/src/prefs.c	2008-12-04 20:19:20 UTC (rev 3319)
@@ -606,7 +606,26 @@
 	widget = lookup_widget(ui_widgets.prefs_dialog, "spin_line_break");
 	gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), editor_prefs.line_break_column);
 
+	widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_parenthesis");
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
+		(editor_prefs.autoclose_chars & GEANY_AC_PARENTHESIS));
 
+	widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_cbracket");
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
+		(editor_prefs.autoclose_chars & GEANY_AC_CBRACKET));
+
+	widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_sbracket");
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
+		(editor_prefs.autoclose_chars & GEANY_AC_SBRACKET));
+
+	widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_squote");
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
+		(editor_prefs.autoclose_chars & GEANY_AC_SQUOTE));
+
+	widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_dquote");
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
+		(editor_prefs.autoclose_chars & GEANY_AC_DQUOTE));
+
 	/* Tools Settings */
 	if (tool_prefs.make_cmd)
 			gtk_entry_set_text(GTK_ENTRY(lookup_widget(ui_widgets.prefs_dialog, "entry_com_make")), tool_prefs.make_cmd);
@@ -756,6 +775,7 @@
 	{
 		GtkWidget *widget;
 		guint i;
+		guint autoclose_brackets[5];
 
 		prefs_action(PREF_UPDATE);
 
@@ -1003,7 +1023,28 @@
 		widget = lookup_widget(ui_widgets.prefs_dialog, "spin_line_break");
 		editor_prefs.line_break_column = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
 
+		widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_parenthesis");
+		autoclose_brackets[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
+		widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_cbracket");
+		autoclose_brackets[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+
+		widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_sbracket");
+		autoclose_brackets[2] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+
+		widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_squote");
+		autoclose_brackets[3] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+
+		widget = lookup_widget(ui_widgets.prefs_dialog, "check_autoclose_dquote");
+		autoclose_brackets[4] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+
+		editor_prefs.autoclose_chars =
+		  (autoclose_brackets[0] ? GEANY_AC_PARENTHESIS : 0)
+		| (autoclose_brackets[1] ? GEANY_AC_CBRACKET : 0)
+		| (autoclose_brackets[2] ? GEANY_AC_SBRACKET : 0)
+		| (autoclose_brackets[3] ? GEANY_AC_SQUOTE : 0)
+		| (autoclose_brackets[4] ? GEANY_AC_DQUOTE : 0);
+
 		/* Tools Settings */
 		widget = lookup_widget(ui_widgets.prefs_dialog, "entry_com_make");
 		g_free(tool_prefs.make_cmd);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list