SF.net SVN: geany: [1453] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Apr 15 18:10:00 UTC 2007


Revision: 1453
          http://svn.sourceforge.net/geany/?rev=1453&view=rev
Author:   eht16
Date:     2007-04-15 11:09:59 -0700 (Sun, 15 Apr 2007)

Log Message:
-----------
Added context actions to run custom commands on current selection or the current word below cursor.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/data/filetypes.asm
    trunk/data/filetypes.c
    trunk/data/filetypes.caml
    trunk/data/filetypes.conf
    trunk/data/filetypes.cpp
    trunk/data/filetypes.css
    trunk/data/filetypes.d
    trunk/data/filetypes.diff
    trunk/data/filetypes.docbook
    trunk/data/filetypes.ferite
    trunk/data/filetypes.fortran
    trunk/data/filetypes.html
    trunk/data/filetypes.java
    trunk/data/filetypes.javascript
    trunk/data/filetypes.latex
    trunk/data/filetypes.lua
    trunk/data/filetypes.makefile
    trunk/data/filetypes.oms
    trunk/data/filetypes.pascal
    trunk/data/filetypes.perl
    trunk/data/filetypes.php
    trunk/data/filetypes.python
    trunk/data/filetypes.ruby
    trunk/data/filetypes.sh
    trunk/data/filetypes.sql
    trunk/data/filetypes.tcl
    trunk/data/filetypes.vhdl
    trunk/data/filetypes.xml
    trunk/doc/geany.docbook
    trunk/geany.glade
    trunk/src/callbacks.c
    trunk/src/callbacks.h
    trunk/src/filetypes.c
    trunk/src/filetypes.h
    trunk/src/geany.h
    trunk/src/interface.c
    trunk/src/keybindings.c
    trunk/src/keybindings.h
    trunk/src/keyfile.c
    trunk/src/main.c
    trunk/src/prefs.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/ChangeLog	2007-04-15 18:09:59 UTC (rev 1453)
@@ -1,3 +1,13 @@
+2007-04-15  Enrico Tröger  <enrico.troeger at uvena.de>
+
+ * geany.glade, data/filetypes.*, doc/geany.docbook, src/callbacks.c,
+   src/callbacks.h, src/filetypes.c, src/filetypes.h, src/geany.h,
+   src/interface.c, src/keybindings.c, src/keybindings.h, src/keyfile.c,
+   src/main.c, src/prefs.c:
+   Added context actions to run custom commands on current selection or
+   the current word below cursor.
+
+
 2007-04-15  Nick Treleaven  <nick.treleaven at btinternet.com>
 
  * src/sci_cb.c:

Modified: trunk/data/filetypes.asm
===================================================================
--- trunk/data/filetypes.asm	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.asm	2007-04-15 18:09:59 UTC (rev 1453)
@@ -41,6 +41,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.c
===================================================================
--- trunk/data/filetypes.c	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.c	2007-04-15 18:09:59 UTC (rev 1453)
@@ -51,6 +51,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.caml
===================================================================
--- trunk/data/filetypes.caml	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.caml	2007-04-15 18:09:59 UTC (rev 1453)
@@ -38,6 +38,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.conf
===================================================================
--- trunk/data/filetypes.conf	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.conf	2007-04-15 18:09:59 UTC (rev 1453)
@@ -26,3 +26,6 @@
 #	command_example();
 # This setting works only for single line comments
 comment_use_indent=true
+
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=

Modified: trunk/data/filetypes.cpp
===================================================================
--- trunk/data/filetypes.cpp	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.cpp	2007-04-15 18:09:59 UTC (rev 1453)
@@ -51,6 +51,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.css
===================================================================
--- trunk/data/filetypes.css	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.css	2007-04-15 18:09:59 UTC (rev 1453)
@@ -39,3 +39,6 @@
 #	command_example();
 # This setting works only for single line comments
 comment_use_indent=true
+
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=

Modified: trunk/data/filetypes.d
===================================================================
--- trunk/data/filetypes.d	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.d	2007-04-15 18:09:59 UTC (rev 1453)
@@ -50,6 +50,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.diff
===================================================================
--- trunk/data/filetypes.diff	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.diff	2007-04-15 18:09:59 UTC (rev 1453)
@@ -18,3 +18,6 @@
 comment_open=
 comment_close=
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+

Modified: trunk/data/filetypes.docbook
===================================================================
--- trunk/data/filetypes.docbook	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.docbook	2007-04-15 18:09:59 UTC (rev 1453)
@@ -52,3 +52,6 @@
 #	command_example();
 # This setting works only for single line comments
 comment_use_indent=true
+
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=

Modified: trunk/data/filetypes.ferite
===================================================================
--- trunk/data/filetypes.ferite	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.ferite	2007-04-15 18:09:59 UTC (rev 1453)
@@ -47,6 +47,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.fortran
===================================================================
--- trunk/data/filetypes.fortran	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.fortran	2007-04-15 18:09:59 UTC (rev 1453)
@@ -42,7 +42,10 @@
 # This setting works only for single line comments
 comment_use_indent=false
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
 
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.html
===================================================================
--- trunk/data/filetypes.html	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.html	2007-04-15 18:09:59 UTC (rev 1453)
@@ -20,6 +20,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.java
===================================================================
--- trunk/data/filetypes.java	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.java	2007-04-15 18:09:59 UTC (rev 1453)
@@ -46,7 +46,10 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
 
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.javascript
===================================================================
--- trunk/data/filetypes.javascript	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.javascript	2007-04-15 18:09:59 UTC (rev 1453)
@@ -42,6 +42,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.latex
===================================================================
--- trunk/data/filetypes.latex	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.latex	2007-04-15 18:09:59 UTC (rev 1453)
@@ -28,6 +28,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.lua
===================================================================
--- trunk/data/filetypes.lua	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.lua	2007-04-15 18:09:59 UTC (rev 1453)
@@ -56,6 +56,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.makefile
===================================================================
--- trunk/data/filetypes.makefile	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.makefile	2007-04-15 18:09:59 UTC (rev 1453)
@@ -27,3 +27,6 @@
 #	command_example();
 # This setting works only for single line comments
 comment_use_indent=true
+
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=

Modified: trunk/data/filetypes.oms
===================================================================
--- trunk/data/filetypes.oms	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.oms	2007-04-15 18:09:59 UTC (rev 1453)
@@ -33,3 +33,6 @@
 #	command_example();
 # This setting works only for single line comments
 comment_use_indent=true
+
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=

Modified: trunk/data/filetypes.pascal
===================================================================
--- trunk/data/filetypes.pascal	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.pascal	2007-04-15 18:09:59 UTC (rev 1453)
@@ -34,6 +34,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.perl
===================================================================
--- trunk/data/filetypes.perl	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.perl	2007-04-15 18:09:59 UTC (rev 1453)
@@ -52,6 +52,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.php
===================================================================
--- trunk/data/filetypes.php	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.php	2007-04-15 18:09:59 UTC (rev 1453)
@@ -20,6 +20,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.python
===================================================================
--- trunk/data/filetypes.python	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.python	2007-04-15 18:09:59 UTC (rev 1453)
@@ -37,6 +37,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.ruby
===================================================================
--- trunk/data/filetypes.ruby	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.ruby	2007-04-15 18:09:59 UTC (rev 1453)
@@ -56,6 +56,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.sh
===================================================================
--- trunk/data/filetypes.sh	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.sh	2007-04-15 18:09:59 UTC (rev 1453)
@@ -33,6 +33,9 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.sql
===================================================================
--- trunk/data/filetypes.sql	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.sql	2007-04-15 18:09:59 UTC (rev 1453)
@@ -37,3 +37,6 @@
 #	command_example();
 # This setting works only for single line comments
 comment_use_indent=true
+
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=

Modified: trunk/data/filetypes.tcl
===================================================================
--- trunk/data/filetypes.tcl	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.tcl	2007-04-15 18:09:59 UTC (rev 1453)
@@ -44,7 +44,13 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
+
 [build_settings]
 # %f will be replaced by the complete filename
 # %e will be replaced by the filename without extension

Modified: trunk/data/filetypes.vhdl
===================================================================
--- trunk/data/filetypes.vhdl	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.vhdl	2007-04-15 18:09:59 UTC (rev 1453)
@@ -43,4 +43,7 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
 
+

Modified: trunk/data/filetypes.xml
===================================================================
--- trunk/data/filetypes.xml	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/data/filetypes.xml	2007-04-15 18:09:59 UTC (rev 1453)
@@ -90,3 +90,5 @@
 # This setting works only for single line comments
 comment_use_indent=true
 
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=

Modified: trunk/doc/geany.docbook
===================================================================
--- trunk/doc/geany.docbook	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/doc/geany.docbook	2007-04-15 18:09:59 UTC (rev 1453)
@@ -5,7 +5,7 @@
 <!ENTITY appversion "0.11">
 <!ENTITY appurl "http://geany.uvena.de">
 <!ENTITY author_mail "enrico.troeger at uvena.de">
-<!ENTITY date "March 08, 2007">
+<!ENTITY date "April 15, 2007">
 <!ENTITY legal SYSTEM "geany_gpl.docbook">
 <!ENTITY scikeybinding SYSTEM "scikeybinding.docbook">
 ]>
@@ -608,6 +608,37 @@
 					automatically.
 				</para>
 			</section>
+			<section id="editing_context_actions">
+				<title>Context actions</title>
+				<para>
+					You can execute a specified command on the current word near the cursor
+					position or an available selection and this word is passed as an argument
+					to this command. It can be used for example to open some API documentation
+					in a browser window or open any other external program. To do this,
+					there is an menu entry in the popup menu of the editor widget and also a
+					keyboard shortcut(see <xref linkend="keybindings"/>).
+				</para>
+				<para>
+					The command can be specified in the preferences dialog and additionally for
+					each filetype (see "context_action_cmd" in <xref linkend="filetypes_format"/>).
+					At executing, the filetype specific command is used if available otherwise the
+					command	specified in the preferences dialog is executed.
+				</para>
+				<para>
+					The passed word can be referred with the wildcard "%s" everywhere in the
+					command, before executing it will be replaced by the current word.
+					For example, the command to open the PHP API documentation would be:
+				</para>
+				<para>
+					<command>firefox "http://www.php.net/%s"</command>
+				</para>
+				<para>
+					when executing the command, the %s is substituted by the word near the
+					cursor position or by the current selection. If the cursor is at the word
+					"echo", a browser window will open(assumed your browser is called firefox)
+					and it will open the address: http://www.php.net/echo.
+				</para>
+			</section>
 		</section>
 		<section id="search_replace">
 			<title>Search, replace and go to</title>
@@ -1649,8 +1680,8 @@
 							</row>
 							<row>
 								<entry>Find Usage</entry>
-								<entry>Finds all occurrences of the current word (near the
-									   keyboard cursor) and displays them in the messages window.
+								<entry>Finds all occurrences of the current word (near the keyboard
+									   cursor) or selection and displays them in the messages window.
 								</entry>
 							</row>
 							<row>
@@ -1669,6 +1700,13 @@
 									   will beep and do nothing. See <xref linkend="search_gototag"/>.
 								</entry>
 							</row>
+							<row>
+								<entry>Context Action</entry>
+								<entry>Executes a command and passes the current word (near the
+									   cursor postion) or selection as an argument. See
+									   <xref linkend="editing_context_actions"/>.
+								</entry>
+							</row>
 						</tbody>
 					</tgroup>
 				</table>
@@ -1803,6 +1841,31 @@
 										</entry>
 										<entry>comment_use_indent=true</entry>
 									</row>
+									<row>
+										<entry>context_action_cmd</entry>
+										<entry><para>
+											   A command which can be executed on a certain word or
+											   the current selection. Example usage: Open the API
+											   documentation for the current function call at the
+											   cursor position. The command can be set for every
+											   filetype or if not set, a global command will be used.
+											   The command itself can be specified without the full
+											   path, then it is searched in $PATH. But for security
+											   reasons, it is recommended to specify the full path
+											   to the command. The wildcard %s will be replaced
+											   by the current word at the cursor position or by
+											   the current selection.
+											   </para>
+											   <para>
+											   Hint: for PHP files the following could be quite
+											   useful:
+											   <emphasis>
+											   context_action_cmd=firefox "http://www.php.net/%s"
+											   </emphasis>
+											   </para>
+										</entry>
+										<entry>context_action_cmd=devhelp -s "%s"</entry>
+									</row>
 								</tbody>
 							</tgroup>
 						</table>

Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/geany.glade	2007-04-15 18:09:59 UTC (rev 1453)
@@ -2569,7 +2569,7 @@
 	      <signal name="activate" handler="on_menu_increase_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:31:38 GMT"/>
 
 	      <child internal-child="image">
-		<widget class="GtkImage" id="image1669">
+		<widget class="GtkImage" id="image1693">
 		  <property name="visible">True</property>
 		  <property name="stock">gtk-indent</property>
 		  <property name="icon_size">1</property>
@@ -2590,7 +2590,7 @@
 	      <signal name="activate" handler="on_menu_decrease_indent1_activate" last_modification_time="Tue, 01 Aug 2006 10:31:38 GMT"/>
 
 	      <child internal-child="image">
-		<widget class="GtkImage" id="image1670">
+		<widget class="GtkImage" id="image1694">
 		  <property name="visible">True</property>
 		  <property name="stock">gtk-unindent</property>
 		  <property name="icon_size">1</property>
@@ -2646,7 +2646,7 @@
       <property name="use_underline">True</property>
 
       <child internal-child="image">
-	<widget class="GtkImage" id="image1671">
+	<widget class="GtkImage" id="image1695">
 	  <property name="visible">True</property>
 	  <property name="stock">gtk-add</property>
 	  <property name="icon_size">1</property>
@@ -2678,7 +2678,7 @@
       <property name="use_underline">True</property>
 
       <child internal-child="image">
-	<widget class="GtkImage" id="image1672">
+	<widget class="GtkImage" id="image1696">
 	  <property name="visible">True</property>
 	  <property name="stock">gtk-add</property>
 	  <property name="icon_size">1</property>
@@ -2763,7 +2763,7 @@
       <property name="use_underline">True</property>
 
       <child internal-child="image">
-	<widget class="GtkImage" id="image1673">
+	<widget class="GtkImage" id="image1697">
 	  <property name="visible">True</property>
 	  <property name="stock">gtk-add</property>
 	  <property name="icon_size">1</property>
@@ -2802,7 +2802,7 @@
       <signal name="activate" handler="on_find_usage1_activate" last_modification_time="Fri, 27 May 2005 21:55:12 GMT"/>
 
       <child internal-child="image">
-	<widget class="GtkImage" id="image1674">
+	<widget class="GtkImage" id="image1698">
 	  <property name="visible">True</property>
 	  <property name="stock">gtk-find</property>
 	  <property name="icon_size">1</property>
@@ -2834,6 +2834,15 @@
   </child>
 
   <child>
+    <widget class="GtkMenuItem" id="context_action1">
+      <property name="visible">True</property>
+      <property name="label" translatable="yes">Context Action</property>
+      <property name="use_underline">True</property>
+      <signal name="activate" handler="on_context_action1_activate" last_modification_time="Fri, 13 Apr 2007 18:37:55 GMT"/>
+    </widget>
+  </child>
+
+  <child>
     <widget class="GtkSeparatorMenuItem" id="separator15">
       <property name="visible">True</property>
     </widget>
@@ -2848,7 +2857,7 @@
       <signal name="activate" handler="on_go_to_line_activate" last_modification_time="Sat, 16 Jul 2005 11:20:32 GMT"/>
 
       <child internal-child="image">
-	<widget class="GtkImage" id="image1675">
+	<widget class="GtkImage" id="image1699">
 	  <property name="visible">True</property>
 	  <property name="stock">gtk-jump-to</property>
 	  <property name="icon_size">1</property>
@@ -3204,6 +3213,110 @@
 		  <property name="fill">True</property>
 		</packing>
 	      </child>
+
+	      <child>
+		<widget class="GtkFrame" id="frame24">
+		  <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="alignment27">
+		      <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="GtkHBox" id="hbox8">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="label189">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Context Action command:</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.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="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkEntry" id="entry_contextaction">
+			      <property name="visible">True</property>
+			      <property name="tooltip" translatable="yes">Context action command. The current selected word can be used with %s. It can be everywhere in the given command and will be replaced before execution.</property>
+			      <property name="can_focus">True</property>
+			      <property name="editable">True</property>
+			      <property name="visibility">True</property>
+			      <property name="max_length">0</property>
+			      <property name="text" translatable="yes"></property>
+			      <property name="has_frame">True</property>
+			      <property name="invisible_char">●</property>
+			      <property name="activates_default">False</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label188">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes"><b>Context Action</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">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
 	    </widget>
 	    <packing>
 	      <property name="tab_expand">False</property>

Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/callbacks.c	2007-04-15 18:09:59 UTC (rev 1453)
@@ -2084,3 +2084,52 @@
 	sci_marker_delete_all(doc_list[idx].sci, 1);	// delete user markers
 }
 
+
+void
+on_context_action1_activate            (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+	gint idx;
+	gchar *word, *command;
+	GError *error = NULL;
+
+	idx = document_get_cur_idx();
+	if (! DOC_IDX_VALID(idx)) return;
+
+	if (sci_can_copy(doc_list[idx].sci))
+	{	// take selected text if there is a selection
+		word = g_malloc(sci_get_selected_text_length(doc_list[idx].sci) + 1);
+		sci_get_selected_text(doc_list[idx].sci, word);
+	}
+	else
+	{
+		word = g_strdup(editor_info.current_word);
+	}
+
+	// use the filetype specific command if available, fallback to global command otherwise
+	if (doc_list[idx].file_type != NULL &&
+		doc_list[idx].file_type->context_action_cmd != NULL &&
+		*doc_list[idx].file_type->context_action_cmd != '\0')
+	{
+		command = g_strdup(doc_list[idx].file_type->context_action_cmd);
+	}
+	else
+	{
+		command = g_strdup(app->context_action_cmd);
+	}
+
+	// substitute the wildcard %s and run the command if it is non empty
+	if (command != NULL && *command != '\0')
+	{
+		command = utils_str_replace(command, "%s", word);
+
+		if (! g_spawn_command_line_async(command, &error))
+		{
+			msgwin_status_add("Context action command failed: %s", error->message);
+			g_error_free(error);
+		}
+	}
+	g_free(word);
+	g_free(command);
+}
+

Modified: trunk/src/callbacks.h
===================================================================
--- trunk/src/callbacks.h	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/callbacks.h	2007-04-15 18:09:59 UTC (rev 1453)
@@ -595,3 +595,7 @@
 void
 on_remove_markers1_activate            (GtkMenuItem     *menuitem,
                                         gpointer         user_data);
+
+void
+on_context_action1_activate            (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);

Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/filetypes.c	2007-04-15 18:09:59 UTC (rev 1453)
@@ -782,6 +782,7 @@
 			g_free(filetypes[i]->extension);
 			g_free(filetypes[i]->comment_open);
 			g_free(filetypes[i]->comment_close);
+			g_free(filetypes[i]->context_action_cmd);
 			g_free(filetypes[i]->programs->compiler);
 			g_free(filetypes[i]->programs->linker);
 			g_free(filetypes[i]->programs->run_cmd);
@@ -832,6 +833,14 @@
 	}
 	else filetypes[ft]->comment_use_indent = tmp;
 
+	// read context action
+	result = g_key_file_get_string(configh, "settings", "context_action_cmd", NULL);
+	if (result == NULL) result = g_key_file_get_string(config, "settings", "context_action_cmd", NULL);
+	if (result != NULL)
+	{
+		filetypes[ft]->context_action_cmd = result;
+	}
+
 	// read build settings
 	result = g_key_file_get_string(configh, "build_settings", "compiler", NULL);
 	if (result == NULL) result = g_key_file_get_string(config, "build_settings", "compiler", NULL);
@@ -951,7 +960,7 @@
 	gint i;
 
 	g_return_val_if_fail(ft != NULL, NULL);
-	
+
 	new_filter = gtk_file_filter_new();
 	gtk_file_filter_set_name(new_filter, ft->title);
 

Modified: trunk/src/filetypes.h
===================================================================
--- trunk/src/filetypes.h	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/filetypes.h	2007-04-15 18:09:59 UTC (rev 1453)
@@ -100,6 +100,7 @@
 	gchar	 		 *title;			// will be shown in the file open dialog
 	gchar	 		 *extension;
 	gchar			**pattern;
+	gchar	 		 *context_action_cmd;
 	gchar	 		 *comment_open;
 	gchar	 		 *comment_close;
 	gboolean  		  comment_use_indent;

Modified: trunk/src/geany.h
===================================================================
--- trunk/src/geany.h	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/geany.h	2007-04-15 18:09:59 UTC (rev 1453)
@@ -144,6 +144,7 @@
 	gint				 long_line_type;
 	gint				 long_line_column;
 	gchar				*long_line_color;
+	gchar				*context_action_cmd;
 	gchar				*pref_template_developer;
 	gchar				*pref_template_company;
 	gchar				*pref_template_mail;

Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/interface.c	2007-04-15 18:09:59 UTC (rev 1453)
@@ -1893,20 +1893,20 @@
   GtkWidget *menu_duplicate_line2;
   GtkWidget *separator31;
   GtkWidget *menu_increase_indent2;
-  GtkWidget *image1669;
+  GtkWidget *image1693;
   GtkWidget *menu_decrease_indent2;
-  GtkWidget *image1670;
+  GtkWidget *image1694;
   GtkWidget *separator38;
   GtkWidget *send_selection_to1;
   GtkWidget *send_selection_to1_menu;
   GtkWidget *invisible12;
   GtkWidget *separator17;
   GtkWidget *insert_include1;
-  GtkWidget *image1671;
+  GtkWidget *image1695;
   GtkWidget *insert_include1_menu;
   GtkWidget *invisible3;
   GtkWidget *comments;
-  GtkWidget *image1672;
+  GtkWidget *image1696;
   GtkWidget *comments_menu;
   GtkWidget *add_changelog_entry2;
   GtkWidget *insert_file_header2;
@@ -1915,17 +1915,18 @@
   GtkWidget *insert_gpl_notice1;
   GtkWidget *insert_bsd_license_notice1;
   GtkWidget *insert_date2;
-  GtkWidget *image1673;
+  GtkWidget *image1697;
   GtkWidget *insert_date2_menu;
   GtkWidget *invisible10;
   GtkWidget *separator7;
   GtkWidget *find_usage1;
-  GtkWidget *image1674;
+  GtkWidget *image1698;
   GtkWidget *goto_tag_definition1;
   GtkWidget *goto_tag_declaration1;
+  GtkWidget *context_action1;
   GtkWidget *separator15;
   GtkWidget *go_to_line;
-  GtkWidget *image1675;
+  GtkWidget *image1699;
   GtkAccelGroup *accel_group;
   GtkTooltips *tooltips;
 
@@ -2032,17 +2033,17 @@
   gtk_widget_show (menu_increase_indent2);
   gtk_container_add (GTK_CONTAINER (menu_format2_menu), menu_increase_indent2);
 
-  image1669 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image1669);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent2), image1669);
+  image1693 = gtk_image_new_from_stock ("gtk-indent", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image1693);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_increase_indent2), image1693);
 
   menu_decrease_indent2 = gtk_image_menu_item_new_with_mnemonic (_("_Decrease Indent"));
   gtk_widget_show (menu_decrease_indent2);
   gtk_container_add (GTK_CONTAINER (menu_format2_menu), menu_decrease_indent2);
 
-  image1670 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image1670);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent2), image1670);
+  image1694 = gtk_image_new_from_stock ("gtk-unindent", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image1694);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_decrease_indent2), image1694);
 
   separator38 = gtk_separator_menu_item_new ();
   gtk_widget_show (separator38);
@@ -2068,9 +2069,9 @@
   gtk_widget_show (insert_include1);
   gtk_container_add (GTK_CONTAINER (edit_menu1), insert_include1);
 
-  image1671 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image1671);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include1), image1671);
+  image1695 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image1695);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_include1), image1695);
 
   insert_include1_menu = gtk_menu_new ();
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_include1), insert_include1_menu);
@@ -2082,9 +2083,9 @@
   gtk_widget_show (comments);
   gtk_container_add (GTK_CONTAINER (edit_menu1), comments);
 
-  image1672 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image1672);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (comments), image1672);
+  image1696 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image1696);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (comments), image1696);
 
   comments_menu = gtk_menu_new ();
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (comments), comments_menu);
@@ -2123,9 +2124,9 @@
   gtk_widget_show (insert_date2);
   gtk_container_add (GTK_CONTAINER (edit_menu1), insert_date2);
 
-  image1673 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image1673);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_date2), image1673);
+  image1697 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image1697);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (insert_date2), image1697);
 
   insert_date2_menu = gtk_menu_new ();
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (insert_date2), insert_date2_menu);
@@ -2142,9 +2143,9 @@
   gtk_widget_show (find_usage1);
   gtk_container_add (GTK_CONTAINER (edit_menu1), find_usage1);
 
-  image1674 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image1674);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find_usage1), image1674);
+  image1698 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image1698);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find_usage1), image1698);
 
   goto_tag_definition1 = gtk_menu_item_new_with_mnemonic (_("Go to Tag Definition"));
   gtk_widget_show (goto_tag_definition1);
@@ -2154,6 +2155,10 @@
   gtk_widget_show (goto_tag_declaration1);
   gtk_container_add (GTK_CONTAINER (edit_menu1), goto_tag_declaration1);
 
+  context_action1 = gtk_menu_item_new_with_mnemonic (_("Context Action"));
+  gtk_widget_show (context_action1);
+  gtk_container_add (GTK_CONTAINER (edit_menu1), context_action1);
+
   separator15 = gtk_separator_menu_item_new ();
   gtk_widget_show (separator15);
   gtk_container_add (GTK_CONTAINER (edit_menu1), separator15);
@@ -2164,9 +2169,9 @@
   gtk_container_add (GTK_CONTAINER (edit_menu1), go_to_line);
   gtk_tooltips_set_tip (tooltips, go_to_line, _("Goto to the entered line"), NULL);
 
-  image1675 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image1675);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line), image1675);
+  image1699 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image1699);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (go_to_line), image1699);
 
   g_signal_connect ((gpointer) undo1, "activate",
                     G_CALLBACK (on_undo1_activate),
@@ -2243,6 +2248,9 @@
   g_signal_connect ((gpointer) goto_tag_declaration1, "activate",
                     G_CALLBACK (on_goto_tag_activate),
                     NULL);
+  g_signal_connect ((gpointer) context_action1, "activate",
+                    G_CALLBACK (on_context_action1_activate),
+                    NULL);
   g_signal_connect ((gpointer) go_to_line, "activate",
                     G_CALLBACK (on_go_to_line_activate),
                     NULL);
@@ -2272,20 +2280,20 @@
   GLADE_HOOKUP_OBJECT (edit_menu1, menu_duplicate_line2, "menu_duplicate_line2");
   GLADE_HOOKUP_OBJECT (edit_menu1, separator31, "separator31");
   GLADE_HOOKUP_OBJECT (edit_menu1, menu_increase_indent2, "menu_increase_indent2");
-  GLADE_HOOKUP_OBJECT (edit_menu1, image1669, "image1669");
+  GLADE_HOOKUP_OBJECT (edit_menu1, image1693, "image1693");
   GLADE_HOOKUP_OBJECT (edit_menu1, menu_decrease_indent2, "menu_decrease_indent2");
-  GLADE_HOOKUP_OBJECT (edit_menu1, image1670, "image1670");
+  GLADE_HOOKUP_OBJECT (edit_menu1, image1694, "image1694");
   GLADE_HOOKUP_OBJECT (edit_menu1, separator38, "separator38");
   GLADE_HOOKUP_OBJECT (edit_menu1, send_selection_to1, "send_selection_to1");
   GLADE_HOOKUP_OBJECT (edit_menu1, send_selection_to1_menu, "send_selection_to1_menu");
   GLADE_HOOKUP_OBJECT (edit_menu1, invisible12, "invisible12");
   GLADE_HOOKUP_OBJECT (edit_menu1, separator17, "separator17");
   GLADE_HOOKUP_OBJECT (edit_menu1, insert_include1, "insert_include1");
-  GLADE_HOOKUP_OBJECT (edit_menu1, image1671, "image1671");
+  GLADE_HOOKUP_OBJECT (edit_menu1, image1695, "image1695");
   GLADE_HOOKUP_OBJECT (edit_menu1, insert_include1_menu, "insert_include1_menu");
   GLADE_HOOKUP_OBJECT (edit_menu1, invisible3, "invisible3");
   GLADE_HOOKUP_OBJECT (edit_menu1, comments, "comments");
-  GLADE_HOOKUP_OBJECT (edit_menu1, image1672, "image1672");
+  GLADE_HOOKUP_OBJECT (edit_menu1, image1696, "image1696");
   GLADE_HOOKUP_OBJECT (edit_menu1, comments_menu, "comments_menu");
   GLADE_HOOKUP_OBJECT (edit_menu1, add_changelog_entry2, "add_changelog_entry2");
   GLADE_HOOKUP_OBJECT (edit_menu1, insert_file_header2, "insert_file_header2");
@@ -2294,17 +2302,18 @@
   GLADE_HOOKUP_OBJECT (edit_menu1, insert_gpl_notice1, "insert_gpl_notice1");
   GLADE_HOOKUP_OBJECT (edit_menu1, insert_bsd_license_notice1, "insert_bsd_license_notice1");
   GLADE_HOOKUP_OBJECT (edit_menu1, insert_date2, "insert_date2");
-  GLADE_HOOKUP_OBJECT (edit_menu1, image1673, "image1673");
+  GLADE_HOOKUP_OBJECT (edit_menu1, image1697, "image1697");
   GLADE_HOOKUP_OBJECT (edit_menu1, insert_date2_menu, "insert_date2_menu");
   GLADE_HOOKUP_OBJECT (edit_menu1, invisible10, "invisible10");
   GLADE_HOOKUP_OBJECT (edit_menu1, separator7, "separator7");
   GLADE_HOOKUP_OBJECT (edit_menu1, find_usage1, "find_usage1");
-  GLADE_HOOKUP_OBJECT (edit_menu1, image1674, "image1674");
+  GLADE_HOOKUP_OBJECT (edit_menu1, image1698, "image1698");
   GLADE_HOOKUP_OBJECT (edit_menu1, goto_tag_definition1, "goto_tag_definition1");
   GLADE_HOOKUP_OBJECT (edit_menu1, goto_tag_declaration1, "goto_tag_declaration1");
+  GLADE_HOOKUP_OBJECT (edit_menu1, context_action1, "context_action1");
   GLADE_HOOKUP_OBJECT (edit_menu1, separator15, "separator15");
   GLADE_HOOKUP_OBJECT (edit_menu1, go_to_line, "go_to_line");
-  GLADE_HOOKUP_OBJECT (edit_menu1, image1675, "image1675");
+  GLADE_HOOKUP_OBJECT (edit_menu1, image1699, "image1699");
   GLADE_HOOKUP_OBJECT_NO_REF (edit_menu1, tooltips, "tooltips");
 
   gtk_menu_set_accel_group (GTK_MENU (edit_menu1), accel_group);
@@ -2334,6 +2343,12 @@
   GtkWidget *check_switch_pages;
   GtkWidget *check_ask_suppress_search_dialogs;
   GtkWidget *label178;
+  GtkWidget *frame24;
+  GtkWidget *alignment27;
+  GtkWidget *hbox8;
+  GtkWidget *label189;
+  GtkWidget *entry_contextaction;
+  GtkWidget *label188;
   GtkWidget *label94;
   GtkWidget *vbox14;
   GtkWidget *frame7;
@@ -2649,6 +2664,35 @@
   gtk_frame_set_label_widget (GTK_FRAME (frame19), label178);
   gtk_label_set_use_markup (GTK_LABEL (label178), TRUE);
 
+  frame24 = gtk_frame_new (NULL);
+  gtk_widget_show (frame24);
+  gtk_box_pack_start (GTK_BOX (vbox20), frame24, FALSE, TRUE, 0);
+  gtk_frame_set_shadow_type (GTK_FRAME (frame24), GTK_SHADOW_NONE);
+
+  alignment27 = gtk_alignment_new (0.5, 0.5, 1, 1);
+  gtk_widget_show (alignment27);
+  gtk_container_add (GTK_CONTAINER (frame24), alignment27);
+  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment27), 0, 0, 12, 0);
+
+  hbox8 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox8);
+  gtk_container_add (GTK_CONTAINER (alignment27), hbox8);
+
+  label189 = gtk_label_new (_("Context Action command:"));
+  gtk_widget_show (label189);
+  gtk_box_pack_start (GTK_BOX (hbox8), label189, FALSE, FALSE, 0);
+
+  entry_contextaction = gtk_entry_new ();
+  gtk_widget_show (entry_contextaction);
+  gtk_box_pack_start (GTK_BOX (hbox8), entry_contextaction, TRUE, TRUE, 0);
+  gtk_tooltips_set_tip (tooltips, entry_contextaction, _("Context action command. The current selected word can be used with %s. It can be everywhere in the given command and will be replaced before execution."), NULL);
+  gtk_entry_set_invisible_char (GTK_ENTRY (entry_contextaction), 9679);
+
+  label188 = gtk_label_new (_("<b>Context Action</b>"));
+  gtk_widget_show (label188);
+  gtk_frame_set_label_widget (GTK_FRAME (frame24), label188);
+  gtk_label_set_use_markup (GTK_LABEL (label188), TRUE);
+
   label94 = gtk_label_new (_("General"));
   gtk_widget_show (label94);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 0), label94);
@@ -3836,6 +3880,12 @@
   GLADE_HOOKUP_OBJECT (prefs_dialog, check_switch_pages, "check_switch_pages");
   GLADE_HOOKUP_OBJECT (prefs_dialog, check_ask_suppress_search_dialogs, "check_ask_suppress_search_dialogs");
   GLADE_HOOKUP_OBJECT (prefs_dialog, label178, "label178");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, frame24, "frame24");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, alignment27, "alignment27");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, hbox8, "hbox8");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, label189, "label189");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, entry_contextaction, "entry_contextaction");
+  GLADE_HOOKUP_OBJECT (prefs_dialog, label188, "label188");
   GLADE_HOOKUP_OBJECT (prefs_dialog, label94, "label94");
   GLADE_HOOKUP_OBJECT (prefs_dialog, vbox14, "vbox14");
   GLADE_HOOKUP_OBJECT (prefs_dialog, frame7, "frame7");

Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/keybindings.c	2007-04-15 18:09:59 UTC (rev 1453)
@@ -274,6 +274,8 @@
 		0, 0, "popup_gototagdefinition", _("Go to tag definition"));
 	keys[GEANY_KEYS_POPUP_GOTOTAGDECLARATION] = fill(cb_func_current_word,
 		0, 0, "popup_gototagdeclaration", _("Go to tag declaration"));
+	keys[GEANY_KEYS_POPUP_CONTEXTACTION] = fill(cb_func_current_word,
+		0, 0, "popup_contextaction", _("Context Action"));
 
 	// now load user defined keys
 	if (g_key_file_load_from_file(config, configfile, G_KEY_FILE_KEEP_COMMENTS, NULL))
@@ -363,6 +365,7 @@
 	GEANY_ADD_POPUP_ACCEL(GEANY_KEYS_POPUP_FINDUSAGE, find_usage1);
 	GEANY_ADD_POPUP_ACCEL(GEANY_KEYS_POPUP_GOTOTAGDEFINITION, goto_tag_definition1);
 	GEANY_ADD_POPUP_ACCEL(GEANY_KEYS_POPUP_GOTOTAGDECLARATION, goto_tag_declaration1);
+	GEANY_ADD_POPUP_ACCEL(GEANY_KEYS_POPUP_CONTEXTACTION, context_action1);
 	GEANY_ADD_POPUP_ACCEL(GEANY_KEYS_MENU_GOTOLINE, go_to_line);
 	GEANY_ADD_POPUP_ACCEL(GEANY_KEYS_EDIT_TOLOWERCASE, to_lower_case1);
 	GEANY_ADD_POPUP_ACCEL(GEANY_KEYS_EDIT_TOUPPERCASE, to_upper_case1);
@@ -746,7 +749,6 @@
 	on_find_nextsel1_activate(NULL, NULL);
 }
 
-
 static void cb_func_menu_replace(G_GNUC_UNUSED guint key_id)
 {
 	on_replace1_activate(NULL, NULL);
@@ -905,6 +907,10 @@
 			on_goto_tag_activate(GTK_MENU_ITEM(lookup_widget(app->popup_menu,
 				"goto_tag_declaration1")), NULL);
 			break;
+			case GEANY_KEYS_POPUP_CONTEXTACTION:
+			on_context_action1_activate(GTK_MENU_ITEM(lookup_widget(app->popup_menu,
+				"context_action1")), NULL);
+			break;
 		}
 }
 

Modified: trunk/src/keybindings.h
===================================================================
--- trunk/src/keybindings.h	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/keybindings.h	2007-04-15 18:09:59 UTC (rev 1453)
@@ -72,6 +72,7 @@
 	GEANY_KEYS_POPUP_FINDUSAGE,
 	GEANY_KEYS_POPUP_GOTOTAGDEFINITION,
 	GEANY_KEYS_POPUP_GOTOTAGDECLARATION,
+	GEANY_KEYS_POPUP_CONTEXTACTION,
 
 	GEANY_KEYS_MENU_FULLSCREEN,
 	GEANY_KEYS_MENU_MESSAGEWINDOW,

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/keyfile.c	2007-04-15 18:09:59 UTC (rev 1453)
@@ -153,6 +153,7 @@
 	}
 #endif
 	g_key_file_set_string(config, PACKAGE, "custom_date_format", app->custom_date_format);
+	g_key_file_set_string(config, PACKAGE, "context_action_cmd", app->context_action_cmd);
 	if (app->custom_commands != NULL)
 	{
 		g_key_file_set_string_list(config, PACKAGE, "custom_commands",
@@ -348,6 +349,7 @@
 	app->brace_match_ltgt = utils_get_setting_boolean(config, PACKAGE, "brace_match_ltgt", FALSE);
 	app->switch_msgwin_pages = utils_get_setting_boolean(config, PACKAGE, "switch_msgwin_pages", FALSE);
 	app->custom_date_format = utils_get_setting_string(config, PACKAGE, "custom_date_format", "");
+	app->context_action_cmd = utils_get_setting_string(config, PACKAGE, "context_action_cmd", "");
 	app->custom_commands = g_key_file_get_string_list(config, PACKAGE, "custom_commands", NULL, NULL);
 	app->editor_font = utils_get_setting_string(config, PACKAGE, "editor_font", GEANY_DEFAULT_FONT_EDITOR);
 	app->tagbar_font = utils_get_setting_string(config, PACKAGE, "tagbar_font", GEANY_DEFAULT_FONT_SYMBOL_LIST);

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/main.c	2007-04-15 18:09:59 UTC (rev 1453)
@@ -755,6 +755,7 @@
 	g_free(app->tagbar_font);
 	g_free(app->msgwin_font);
 	g_free(app->long_line_color);
+	g_free(app->context_action_cmd);
 	g_free(app->pref_template_developer);
 	g_free(app->pref_template_company);
 	g_free(app->pref_template_mail);

Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c	2007-04-15 16:13:57 UTC (rev 1452)
+++ trunk/src/prefs.c	2007-04-15 18:09:59 UTC (rev 1453)
@@ -112,7 +112,10 @@
 		widget = lookup_widget(app->prefs_dialog, "radio_tab_left");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
 
+	widget = lookup_widget(app->prefs_dialog, "entry_contextaction");
+	gtk_entry_set_text(GTK_ENTRY(widget), app->context_action_cmd);
 
+
 	// Interface settings
 	widget = lookup_widget(app->prefs_dialog, "check_list_symbol");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), app->sidebar_symbol_visible);
@@ -439,7 +442,11 @@
 		widget = lookup_widget(app->prefs_dialog, "check_show_notebook_tabs");
 		app->show_notebook_tabs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
+		widget = lookup_widget(app->prefs_dialog, "entry_contextaction");
+		g_free(app->context_action_cmd);
+		app->context_action_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
+
 		// Interface settings
 		widget = lookup_widget(app->prefs_dialog, "check_list_symbol");
 		app->sidebar_symbol_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));


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