Index: plugins/filebrowser/gedit-file-browser-plugin.c
===================================================================
--- plugins/filebrowser/gedit-file-browser-plugin.c	(revision 6856)
+++ plugins/filebrowser/gedit-file-browser-plugin.c	(working copy)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gedit-file-browser-plugin.c - Gedit plugin providing easy file access 
  * from the sidepanel
@@ -840,7 +841,7 @@
 on_uri_activated_cb (GeditFileBrowserWidget * tree_widget,
 		     gchar const *uri, GeditWindow * window)
 {
-	gedit_commands_load_uri (window, uri, NULL, 0);
+	gedit_commands_load_uri (window, uri, NULL, 0, 0);
 }
 
 static void
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 6856)
+++ ChangeLog	(working copy)
@@ -1,3 +1,52 @@
+2009-01-23  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+	* GNU LilyPond point-and-click support: use +LINE[:COLUMN]
+	positioning -- Take 2.
+
+	* gedit/gedit-tab.c (_GeditTabPrivate): Add tmp_column_pos field.
+
+	(io_loading_error_message_area_response): 
+	(conversion_loading_error_message_area_response):
+	(document_loaded): Use it, updating callers.
+
+	* gedit/gedit-view.c (search_init): Update callers.
+	(_gedit_tab_new_from_uri):
+	(_gedit_tab_load):
+	(_gedit_tab_revert): Add column parameter, update callers.
+
+	* gedit/gedit-window.c (gedit_window_create_tab_from_uri): 
+	Add column parameter, update caller.
+	
+	* gedit/gedit-document.c (gedit_document_set_line_column_iter):
+	New function, refactored from gedit_document_goto_line.
+	
+	(gedit_document_goto_line_column): Use it.  Rename from
+	gedit_document_goto_line.  Add column parameter.  Jump to column.
+
+	* gedit/gedit-commands-file.c (load_file_list): Add column parameter.
+	Remove code duplication, also jumping to column.
+
+	* gedit/gedit-session.c: Update callers.
+
+	* gedit/gedit-commands.h:
+	* gedit/gedit-document.h: 
+	* gedit/gedit-tab.h: 
+	* gedit/gedit-window.h: Update prototypes adding column parameter.
+
+	* gedit/gedit.c (get_line_column_position): New function.
+	(gedit_get_command_line_data):
+	(on_message_received): Use it to grok +LINE[:COLUMN] option.
+	(gedit_get_command_line_data):
+	(options): Document +LINE[:COLUMN] option, as good/bad as GOption
+	seems to allow.
+	(send_bacon_message): Send positioning info as +LINE:COLUMN.
+	(main): Update callers.
+
+	* plugins/filebrowser/gedit-file-browser-plugin.c (on_uri_activated_cb):
+	Update caller.
+
+	* data/gedit.1: Update.
+
 === gedit 2.25.5 ===
 
 2009-01-19  Paolo Borelli  <pborelli@katamail.com>
Index: gedit/gedit-tab.c
===================================================================
--- gedit/gedit-tab.c	(revision 6856)
+++ gedit/gedit-tab.c	(working copy)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gedit-tab.c
  * This file is part of gedit
@@ -68,6 +69,7 @@
 
 	/* tmp data for loading */
 	gint                    tmp_line_pos;
+	gint                    tmp_column_pos;
 	const GeditEncoding    *tmp_encoding;
 	
 	GTimer 		       *timer;
@@ -486,6 +488,7 @@
 				     uri,
 				     tab->priv->tmp_encoding,
 				     tab->priv->tmp_line_pos,
+				     tab->priv->tmp_column_pos,
 				     FALSE);
 	}
 	else
@@ -528,6 +531,7 @@
 				     uri,
 				     encoding,
 				     tab->priv->tmp_line_pos,
+				     tab->priv->tmp_column_pos,
 				     FALSE);
 	}
 	else
@@ -1075,6 +1079,7 @@
 	g_free (uri);
 
 	tab->priv->tmp_line_pos = 0;
+	tab->priv->tmp_column_pos = 0;
 	tab->priv->tmp_encoding = NULL;
 }
 
@@ -1603,7 +1608,8 @@
 GtkWidget *
 _gedit_tab_new_from_uri (const gchar         *uri,
 			 const GeditEncoding *encoding,
-			 gint                 line_pos,			
+			 gint                 line_pos,
+			 gint                 column_pos,
 			 gboolean             create)
 {
 	GeditTab *tab;
@@ -1616,6 +1622,7 @@
 			 uri,
 			 encoding,
 			 line_pos,
+			 column_pos,
 			 create);
 
 	return GTK_WIDGET (tab);
@@ -1988,6 +1995,7 @@
 		 const gchar         *uri,
 		 const GeditEncoding *encoding,
 		 gint                 line_pos,
+		 gint                 column_pos,
 		 gboolean             create)
 {
 	GeditDocument *doc;
@@ -2001,6 +2009,7 @@
 	gedit_tab_set_state (tab, GEDIT_TAB_STATE_LOADING);
 
 	tab->priv->tmp_line_pos = line_pos;
+	tab->priv->tmp_column_pos = column_pos;
 	tab->priv->tmp_encoding = encoding;
 
 	if (tab->priv->auto_save_timeout > 0)
@@ -2010,6 +2019,7 @@
 			     uri,
 			     encoding,
 			     line_pos,
+			     column_pos,
 			     create);
 }
 
@@ -2037,6 +2047,7 @@
 	g_return_if_fail (uri != NULL);
 
 	tab->priv->tmp_line_pos = 0;
+	tab->priv->tmp_column_pos = 0;
 	tab->priv->tmp_encoding = gedit_document_get_encoding (doc);
 
 	if (tab->priv->auto_save_timeout > 0)
@@ -2046,6 +2057,7 @@
 			     uri,
 			     tab->priv->tmp_encoding,
 			     0,
+			     0,
 			     FALSE);
 
 	g_free (uri);
Index: gedit/gedit-tab.h
===================================================================
--- gedit/gedit-tab.h	(revision 6856)
+++ gedit/gedit-tab.h	(working copy)
@@ -131,6 +131,7 @@
 GtkWidget	*_gedit_tab_new_from_uri	(const gchar         *uri,
 						 const GeditEncoding *encoding,
 						 gint                 line_pos,
+						 gint                 column_pos,
 						 gboolean             create);
 gchar 		*_gedit_tab_get_name		(GeditTab            *tab);
 gchar 		*_gedit_tab_get_tooltips	(GeditTab            *tab);
@@ -139,6 +140,7 @@
 						 const gchar         *uri,
 						 const GeditEncoding *encoding,
 						 gint                 line_pos,
+						 gint                 column_pos,
 						 gboolean             create);
 void		 _gedit_tab_revert		(GeditTab            *tab);
 void		 _gedit_tab_save		(GeditTab            *tab);
Index: gedit/gedit-session.c
===================================================================
--- gedit/gedit-session.c	(revision 6856)
+++ gedit/gedit-session.c	(working copy)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gedit-session.c - Basic session management for gedit
  * This file is part of gedit
@@ -555,6 +556,7 @@
 							  documents[i],
 							  NULL,
 							  0,
+							  0,
 							  FALSE,
 							  jump_to);
 		}
Index: gedit/gedit.c
===================================================================
--- gedit/gedit.c	(revision 6856)
+++ gedit/gedit.c	(working copy)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gedit.c
  * This file is part of gedit
@@ -86,6 +87,8 @@
 
 /* command line */
 static gint line_position = 0;
+static gint column_position = 0;
+static gchar *line_column_position = NULL;
 static gchar *encoding_charset = NULL;
 static const GeditEncoding *encoding;
 static gboolean new_window_option = FALSE;
@@ -107,6 +110,9 @@
 	{ "new-document", '\0', 0, G_OPTION_ARG_NONE, &new_document_option,
 	  N_("Create a new document in an existing instance of gedit"), NULL },
 
+	{ "+LINE[:COLUMN]", '\0', 0, G_OPTION_ARG_NONE, &line_column_position,
+	  N_("    Move cursor to LINE, COLUMN"), NULL },
+
 	{ G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &remaining_args,
 	  NULL, N_("[FILE...]") }, /* collects file arguments */
 
@@ -114,6 +120,19 @@
 };
 
 static void
+get_line_column_position (char const* arg)
+{
+	char const* p;
+
+	p = strchr (arg, ':');
+	if (p != NULL)
+		column_position = atoi (p + 1);
+	else
+		column_position = 0;
+	line_position = atoi (arg + 1);
+}
+
+static void
 gedit_get_command_line_data (void)
 {
 	if (remaining_args)
@@ -125,10 +144,13 @@
 			if (*remaining_args[i] == '+')
 			{
 				if (*(remaining_args[i] + 1) == '\0')
+				{
 					/* goto the last line of the document */
 					line_position = G_MAXINT;
+					column_position = 0;
+				}
 				else
-					line_position = atoi (remaining_args[i] + 1);
+					get_line_column_position (remaining_args[i]);
 			}
 			else
 			{
@@ -283,7 +305,8 @@
 			gint n_uris, j;
 			gchar **uris;
 
-			line_position = atoi (params[1]);
+			get_line_column_position (params[1]);
+
 			if (params[2] != '\0');
 				encoding = gedit_encoding_get_from_charset (params[2]);
 
@@ -329,7 +352,8 @@
 		_gedit_cmd_load_files_from_prompt (window,
 						   file_list,
 						   encoding,
-						   line_position);
+						   line_position,
+						   column_position);
 
 		if (new_document_option)
 			gedit_window_create_tab (window, TRUE);
@@ -374,8 +398,9 @@
 
 	new_window_option = FALSE;
 	new_document_option = FALSE;
+	line_position = 0;
+	column_position = 0;
 	encoding = NULL;
-	line_position = 0;
 }
 
 /* clientside */
@@ -441,7 +466,7 @@
 		command = g_string_append (command, "NEW-DOCUMENT");
 	}
 
-	/* OPEN_URIS command, optionally specify line_num and encoding */
+	/* OPEN_URIS command, optionally specify +line:column and encoding */
 	if (file_list)
 	{
 		GSList *l;
@@ -450,8 +475,8 @@
 		command = g_string_append (command, "OPEN-URIS");
 
 		g_string_append_printf (command,
-					"\t%d\t%s\t%u\t",
-					line_position,
+					"\t+%d:%d\t%s\t%u\t",
+					line_position, column_position,
 					encoding_charset ? encoding_charset : "",
 					g_slist_length (file_list));
 
@@ -647,7 +672,8 @@
 			_gedit_cmd_load_files_from_prompt (window, 
 							   file_list, 
 							   encoding, 
-							   line_position);
+							   line_position,
+							   column_position);
 		}
 		else
 		{
@@ -668,6 +694,7 @@
 		new_document_option = FALSE;
 		encoding = NULL;
 		line_position = 0;
+		column_position = 0;
 	}
 
 	gedit_debug_message (DEBUG_APP, "Start gtk-main");		
Index: gedit/gedit-window.c
===================================================================
--- gedit/gedit-window.c	(revision 6856)
+++ gedit/gedit-window.c	(working copy)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gedit-window.c
  * This file is part of gedit
@@ -1118,7 +1119,7 @@
 
 	uris = g_slist_prepend (uris, (gpointer) uri);
 
-	if (gedit_commands_load_uris (window, uris, NULL, 0) != 1)
+	if (gedit_commands_load_uris (window, uris, NULL, 0, 0) != 1)
 	{
 		_gedit_recent_remove (window, uri);
 	}
@@ -2692,6 +2693,7 @@
 	gedit_commands_load_uris (window,
 				  uris,
 				  NULL,
+				  0,
 				  0);
 
 	g_slist_free (uris);
@@ -3929,6 +3931,7 @@
  * @uri: the uri of the document
  * @encoding: a #GeditEncoding
  * @line_pos: the line position to visualize
+ * @colum_pos: the column position to visualize
  * @create: %TRUE to create a new document in case @uri does exist
  * @jump_to: %TRUE to set the new #GeditTab as active
  *
@@ -3944,6 +3947,7 @@
 				  const gchar         *uri,
 				  const GeditEncoding *encoding,
 				  gint                 line_pos,
+				  gint                 column_pos,
 				  gboolean             create,
 				  gboolean             jump_to)
 {
@@ -3955,6 +3959,7 @@
 	tab = _gedit_tab_new_from_uri (uri,
 				       encoding,
 				       line_pos,
+				       column_pos,
 				       create);	
 	if (tab == NULL)
 		return NULL;
Index: gedit/gedit-view.c
===================================================================
--- gedit/gedit-view.c	(revision 6856)
+++ gedit/gedit-view.c	(working copy)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gedit-view.c
  * This file is part of gedit
@@ -1694,6 +1695,7 @@
 		{
 			gboolean moved;
 			gint line;
+			gint column = 0;
 			gint offset_line = 0;
 			
 			if (*entry_text == '-')
@@ -1719,7 +1721,7 @@
 				line = MAX (atoi (entry_text) - 1, 0);
 			}
 			
-			moved = gedit_document_goto_line (doc, line);
+			moved = gedit_document_goto_line_column (doc, line, column);
 			gedit_view_scroll_to_cursor (view);
 
 			if (!moved)
Index: gedit/gedit-window.h
===================================================================
--- gedit/gedit-window.h	(revision 6856)
+++ gedit/gedit-window.h	(working copy)
@@ -109,6 +109,7 @@
 							 const gchar         *uri,
 							 const GeditEncoding *encoding,
 							 gint                 line_pos,
+							 gint                 column_pos,
 							 gboolean             create,
 							 gboolean             jump_to);
 							 
Index: gedit/gedit-document.c
===================================================================
--- gedit/gedit-document.c	(revision 6856)
+++ gedit/gedit-document.c	(working copy)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gedit-document.c
  * This file is part of gedit
@@ -77,6 +78,7 @@
 						 const gchar            *uri,
 						 const GeditEncoding    *encoding,
 						 gint                    line_pos,
+						 gint                    column_pos,
 						 gboolean                create);
 static void	gedit_document_save_real	(GeditDocument          *doc,
 						 const gchar            *uri,
@@ -125,6 +127,7 @@
 	                              * to a non existing file */
 	const GeditEncoding *requested_encoding;
 	gint                 requested_line_pos;
+	gint                 requested_column_pos;
 
 	/* Saving stuff */
 	GeditDocumentSaver *saver;
@@ -1008,8 +1011,40 @@
 
 	doc->priv->requested_encoding = NULL;
 	doc->priv->requested_line_pos = 0;
+	doc->priv->requested_column_pos = 0;
 }
 
+static gboolean
+gedit_document_set_line_column_iter (GeditDocument *doc, gint line, gint column,
+				     GtkTextIter *iter)
+{
+	guint line_count;
+	guint char_count;
+
+	gedit_debug (DEBUG_DOCUMENT);
+	g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), FALSE);
+	g_return_val_if_fail (line >= -1, FALSE);
+	g_return_val_if_fail (column >= -1, FALSE);
+
+	if (line)
+	{
+		line_count = gtk_text_buffer_get_line_count (GTK_TEXT_BUFFER (doc));
+		if (line > line_count)
+			line = line_count;
+		line--;
+	}
+	if (column)
+	{
+		gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (doc), iter, line);
+		char_count = gtk_text_iter_get_chars_in_line (iter);
+		if (column > char_count)
+			column = char_count + 1;
+		column--;
+	}
+	gtk_text_buffer_get_iter_at_line_offset (GTK_TEXT_BUFFER (doc), iter, line, column);
+	return TRUE;
+}
+
 static void
 document_loader_loaded (GeditDocumentLoader *loader,
 			const GError        *error,
@@ -1038,13 +1073,12 @@
 		set_uri (doc, NULL, content_type);
 
 		/* move the cursor at the requested line if any */
-		if (doc->priv->requested_line_pos > 0)
-		{
-			/* line_pos - 1 because get_iter_at_line counts from 0 */
-			gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (doc),
-							  &iter,
-							  doc->priv->requested_line_pos - 1);
-		}
+		if (doc->priv->requested_line_pos > 0
+		    || doc->priv->requested_column_pos > 0)
+			gedit_document_set_line_column_iter (doc,
+							     doc->priv->requested_line_pos,
+							     doc->priv->requested_column_pos,
+							     &iter);
 		/* else, if enabled, to the position stored in the metadata */
 		else if (gedit_prefs_manager_get_restore_cursor_position ())
 		{
@@ -1134,6 +1168,7 @@
 			  const gchar         *uri,
 			  const GeditEncoding *encoding,
 			  gint                 line_pos,
+			  gint                 column_pos,
 			  gboolean             create)
 {
 	g_return_if_fail (doc->priv->loader == NULL);
@@ -1149,6 +1184,7 @@
 	doc->priv->create = create;
 	doc->priv->requested_encoding = encoding;
 	doc->priv->requested_line_pos = line_pos;
+	doc->priv->requested_column_pos = column_pos;
 
 	set_uri (doc, uri, NULL);
 
@@ -1170,13 +1206,15 @@
 		     const gchar         *uri,
 		     const GeditEncoding *encoding,
 		     gint                 line_pos,
+		     gint                 column_pos,
 		     gboolean             create)
 {
 	g_return_if_fail (GEDIT_IS_DOCUMENT (doc));
 	g_return_if_fail (uri != NULL);
 	g_return_if_fail (gedit_utils_is_valid_uri (uri));
 
-	g_signal_emit (doc, document_signals[LOAD], 0, uri, encoding, line_pos, create);
+	g_signal_emit (doc, document_signals[LOAD], 0, uri, encoding, line_pos,
+		       column_pos, create);
 }
 
 /**
@@ -1393,36 +1431,14 @@
  * to the last line and FALSE is returned.
  */
 gboolean
-gedit_document_goto_line (GeditDocument *doc, 
-			  gint           line)
+gedit_document_goto_line_column (GeditDocument *doc, gint line, gint column)
 {
-	gboolean ret = TRUE;
-	guint line_count;
 	GtkTextIter iter;
+	gboolean result = gedit_document_set_line_column_iter (doc, line, column, &iter);
 
-	gedit_debug (DEBUG_DOCUMENT);
-
-	g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), FALSE);
-	g_return_val_if_fail (line >= -1, FALSE);
-
-	line_count = gtk_text_buffer_get_line_count (GTK_TEXT_BUFFER (doc));
-
-	if (line >= line_count)
-	{
-		ret = FALSE;
-		gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (doc),
-					      &iter);
-	}
-	else
-	{
-		gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (doc),
-						  &iter,
-						  line);
-	}
-
-	gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc), &iter);
-
-	return ret;
+	if (result)
+		gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc), &iter);
+	return result;
 }
 
 static gint
Index: gedit/gedit-document.h
===================================================================
--- gedit/gedit-document.h	(revision 6856)
+++ gedit/gedit-document.h	(working copy)
@@ -106,6 +106,7 @@
 					 const gchar         *uri,
 					 const GeditEncoding *encoding,
 					 gint                 line_pos,
+					 gint                 column_pos,
 					 gboolean             create);
 
 	void (* loading)		(GeditDocument    *document,
@@ -173,6 +174,7 @@
 						 const gchar         *uri,
 						 const GeditEncoding *encoding,
 						 gint                 line_pos,
+						 gint                 column_pos,
 						 gboolean             create); 
 
 gboolean	 gedit_document_insert_file	(GeditDocument       *doc,
@@ -197,8 +199,9 @@
 
 gboolean	 gedit_document_get_deleted	(GeditDocument       *doc);
 
-gboolean	 gedit_document_goto_line 	(GeditDocument       *doc, 
-						 gint                 line);
+gboolean	 gedit_document_goto_line_column (GeditDocument       *doc, 
+						  gint                 line,
+						  gint                 column);
 
 void		 gedit_document_set_search_text	(GeditDocument       *doc,
 						 const gchar         *text,
Index: gedit/gedit-commands.h
===================================================================
--- gedit/gedit-commands.h	(revision 6856)
+++ gedit/gedit-commands.h	(working copy)
@@ -43,13 +43,15 @@
 void		 gedit_commands_load_uri		(GeditWindow         *window,
 							 const gchar         *uri,
 							 const GeditEncoding *encoding,
-							 gint                 line_pos);
+							 gint                 line_pos,
+							 gint                 column_pos);
 
 /* Ignore non-existing URIs */
 gint		 gedit_commands_load_uris		(GeditWindow         *window,
 							 const GSList        *uris,
 							 const GeditEncoding *encoding,
-							 gint                 line_pos);
+							 gint                 line_pos,
+							 gint                 column_pos);
 
 /*
  * Non-exported functions
@@ -63,7 +65,8 @@
 gint		_gedit_cmd_load_files_from_prompt	(GeditWindow         *window,
 							 const GSList        *uris,
 							 const GeditEncoding *encoding,
-							 gint                 line_pos);
+							 gint                 line_pos,
+							 gint                 column_pos);
 
 void		_gedit_cmd_file_new			(GtkAction   *action,
 							 GeditWindow *window);
Index: gedit/gedit-commands-file.c
===================================================================
--- gedit/gedit-commands-file.c	(revision 6856)
+++ gedit/gedit-commands-file.c	(working copy)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * gedit-commands-file.c
  * This file is part of gedit
@@ -130,6 +131,7 @@
 		GSList              *files,
 		const GeditEncoding *encoding,
 		gint                 line_pos,
+		gint                 column_pos,
 		gboolean             create)
 {
 	GeditTab      *tab;
@@ -157,17 +159,12 @@
 					gedit_window_set_active_tab (window, tab);
 					jump_to = FALSE;
 
-					if (line_pos > 0)
+					if (line_pos > 0 || column_pos > 0)
 					{
 						GeditDocument *doc;
-						GeditView *view;
 
 						doc = gedit_tab_get_document (tab);
-						view = gedit_tab_get_view (tab);
-
-						/* document counts lines starting from 0 */
-						gedit_document_goto_line (doc, line_pos - 1);
-						gedit_view_scroll_to_cursor (view);
+						gedit_document_goto_line_column (doc, line_pos, column_pos);
 					}
 				}
 
@@ -207,6 +204,7 @@
 					 uri,
 					 encoding,
 					 line_pos,
+					 column_pos,
 					 create);
 			g_free (uri);
 
@@ -229,6 +227,7 @@
 							uri,
 							encoding,
 							line_pos,
+							column_pos,
 							create,
 							jump_to);
 		g_free (uri);
@@ -284,6 +283,7 @@
 	       const GSList        *uris,
 	       const GeditEncoding *encoding,
 	       gint                 line_pos,
+	       gint                 column_pos,
 	       gboolean             create)
 {
 	GSList *files = NULL;
@@ -296,7 +296,8 @@
 	}
 	files = g_slist_reverse (files);
 
-	ret = load_file_list (window, files, encoding, line_pos, create);
+	ret = load_file_list (window, files, encoding, line_pos, column_pos,
+			      create);
 
 	g_slist_foreach (files, (GFunc) g_object_unref, NULL);
 	g_slist_free (files);
@@ -313,7 +314,8 @@
 gedit_commands_load_uri (GeditWindow         *window,
 			 const gchar         *uri,
 			 const GeditEncoding *encoding,
-			 gint                 line_pos)
+			 gint                 line_pos,
+			 gint                 column_pos)
 {
 	GSList *uris = NULL;
 
@@ -325,7 +327,7 @@
 
 	uris = g_slist_prepend (uris, (gchar *)uri);
 
-	load_uri_list (window, uris, encoding, line_pos, FALSE);
+	load_uri_list (window, uris, encoding, line_pos, column_pos, FALSE);
 
 	g_slist_free (uris);
 }
@@ -339,14 +341,16 @@
 gedit_commands_load_uris (GeditWindow         *window,
 			  const GSList        *uris,
 			  const GeditEncoding *encoding,
-			  gint                 line_pos)
+			  gint                 line_pos,
+			  gint                 column_pos)
 {	
 	g_return_val_if_fail (GEDIT_IS_WINDOW (window), 0);
 	g_return_val_if_fail ((uris != NULL) && (uris->data != NULL), 0);
 	
 	gedit_debug (DEBUG_COMMANDS);
 	
-	return load_uri_list (window, uris, encoding, line_pos, FALSE);
+	return load_uri_list (window, uris, encoding, line_pos, column_pos,
+			      FALSE);
 }
 
 /*
@@ -358,11 +362,13 @@
 _gedit_cmd_load_files_from_prompt (GeditWindow         *window,
 				   const GSList        *uris,
 				   const GeditEncoding *encoding,
-				   gint                 line_pos)
+				   gint                 line_pos,
+				   gint                 column_pos)
 {
 	gedit_debug (DEBUG_COMMANDS);
 
-	return load_uri_list (window, uris, encoding, line_pos, TRUE);
+	return load_uri_list (window, uris, encoding, line_pos, column_pos,
+			      TRUE);
 }
 
 static void
@@ -406,6 +412,7 @@
 	gedit_commands_load_uris (window,
 				  uris,
 				  encoding,
+				  0,
 				  0);
 
 	g_slist_foreach (uris, (GFunc) g_free, NULL);
@@ -539,6 +546,7 @@
 		gedit_commands_load_uris (window,
 					  uris,
 					  encoding,
+					  0,
 					  0);
 
 		g_slist_foreach (uris, (GFunc) g_free, NULL);
Index: data/gedit.1
===================================================================
--- data/gedit.1	(revision 6856)
+++ data/gedit.1	(working copy)
@@ -37,9 +37,10 @@
 Create a new document in an existing instance of
 .B gedit.
 .TP
-\fB+[num]\fR
-For the first file, go to the line specified by "num" (do not insert a space between the "+" sign and the number).
-If "num" is missing, go to the last line.
+\fB+[LINE[:COLUMN]]\fR For the first file, move the cursor the line
+specified by "LINE", and to the column specified by "COLUMN" (do not
+insert a spaces between the "+" or ":" signs and the number).  If
+"LINE" is missing, go to the last line.
 .TP
 \fBfilename(s)...\fR
 Specifies the file to open when 

