Index: gtk2_ardour/editor_ops.cc
===================================================================
--- gtk2_ardour/editor_ops.cc	(revision 3247)
+++ gtk2_ardour/editor_ops.cc	(working copy)
@@ -1836,6 +1836,46 @@
 	reposition_and_zoom (new_leftmost, new_fpu);
 }
 
+
+bool
+Editor::choose_new_marker_name(string &name) {
+
+	if (!Config->get_name_new_markers()) {
+		/* don't prompt user for a new name */
+		return true;
+	}
+
+	ArdourPrompter dialog (true);
+
+	dialog.set_prompt (_("New Name:"));
+
+	WindowTitle title(Glib::get_application_name());
+	title += _("Name New Location Marker");
+
+	dialog.set_title(title.get_string());
+
+	dialog.set_name ("MarkNameWindow");
+	dialog.set_size_request (250, -1);
+	dialog.set_position (Gtk::WIN_POS_MOUSE);
+
+	dialog.add_button (Stock::OK, RESPONSE_ACCEPT);
+	dialog.set_initial_text (name);
+
+	dialog.show ();
+
+	switch (dialog.run ()) {
+	case RESPONSE_ACCEPT:
+		break;
+	default:
+		return false;
+	}
+	
+	dialog.get_result(name);
+	return true;
+
+}
+
+
 void
 Editor::add_location_from_selection ()
 {
@@ -1871,6 +1911,9 @@
 	select_new_marker = true;
 
 	session->locations()->next_available_name(markername,"mark");
+	if (!choose_new_marker_name(markername)) {
+		return;
+	}
 	Location *location = new Location (where, where, markername, Location::IsMark);
 	session->begin_reversible_command (_("add marker"));
         XMLNode &before = session->locations()->get_state();
@@ -2015,6 +2058,9 @@
 	}
 
 	session->locations()->next_available_name(markername,"mark");
+	if (!choose_new_marker_name(markername)) {
+		return;
+	}
 	session->locations()->add (new Location (pos, 0, markername, Location::IsMark), true);
 }
 
Index: gtk2_ardour/location_ui.cc
===================================================================
--- gtk2_ardour/location_ui.cc	(revision 3247)
+++ gtk2_ardour/location_ui.cc	(working copy)
@@ -600,6 +600,12 @@
 	i_am_the_modifier--;
 }
 
+void
+LocationEditRow::focus_name() {
+	name_entry.grab_focus();
+}
+
+
 LocationUI::LocationUI ()
 	: ArdourDialog ("locations dialog"),
 	  add_location_button (_("Add New Location")),
@@ -628,6 +634,8 @@
 	location_rows_scroller.set_name ("LocationLocRowsScroller");
 	location_rows_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
 	location_rows_scroller.set_size_request (-1, 130);
+	
+	newest_location = 0;
 
 	loc_frame_box.set_spacing (5);
 	loc_frame_box.set_border_width (5);
@@ -789,6 +797,10 @@
 			erow->remove_requested.connect (mem_fun(*this, &LocationUI::location_remove_requested));
  			erow->redraw_ranges.connect (mem_fun(*this, &LocationUI::location_redraw_ranges));
 			loc_children.push_back(Box_Helpers::Element(*erow, PACK_SHRINK, 1, PACK_START));
+			if (location == newest_location) {
+				newest_location = 0;
+				erow->focus_name();
+			}
 		}
 		else if (location->is_auto_punch()) {
 			punch_edit_row.set_session (session);
@@ -820,6 +832,9 @@
 		nframes_t where = session->audible_frame();
 		session->locations()->next_available_name(markername,"mark");
 		Location *location = new Location (where, where, markername, Location::IsMark);
+		if (Config->get_name_new_markers()) {
+			newest_location = location;			
+		}
 		session->begin_reversible_command (_("add marker"));
 		XMLNode &before = session->locations()->get_state();
 		session->locations()->add (location, true);
Index: gtk2_ardour/editor_markers.cc
===================================================================
--- gtk2_ardour/editor_markers.cc	(revision 3247)
+++ gtk2_ardour/editor_markers.cc	(working copy)
@@ -404,6 +404,9 @@
 
 	if (session) {
 		session->locations()->next_available_name(markername, markerprefix);
+		if (!is_xrun && !choose_new_marker_name(markername)) {
+		    	return;
+		}		
 		Location *location = new Location (where, where, markername, (Location::Flags) flags);
 		session->begin_reversible_command (_("add marker"));
                 XMLNode &before = session->locations()->get_state();
Index: gtk2_ardour/ardour_ui.h
===================================================================
--- gtk2_ardour/ardour_ui.h	(revision 3247)
+++ gtk2_ardour/ardour_ui.h	(working copy)
@@ -725,6 +725,7 @@
 	void toggle_only_copy_imported_files ();
 	void toggle_ShowTrackMeters ();
 	void toggle_use_narrow_ms();
+	void toggle_NameNewMarkers ();
 	void toggle_rubberbanding_snaps_to_grid ();
 	void toggle_auto_analyse_audio ();
 	void toggle_TapeMachineMode();
Index: gtk2_ardour/ardour.menus
===================================================================
--- gtk2_ardour/ardour.menus	(revision 3247)
+++ gtk2_ardour/ardour.menus	(working copy)
@@ -511,6 +511,7 @@
     	       	     <menuitem action='ShowTrackMeters'/>
 	       	     <menuitem action='DefaultNarrowMS'/>
                	     <menuitem action='link-region-and-track-selection'/>
+	             <menuitem action='NameNewMarkers'/>
                	     <menuitem action='RubberbandingSnapsToGrid'/>
                	     <menuitem action='AutoAnalyseAudio'/>
 		</menu>
Index: gtk2_ardour/ardour_ui_ed.cc
===================================================================
--- gtk2_ardour/ardour_ui_ed.cc	(revision 3247)
+++ gtk2_ardour/ardour_ui_ed.cc	(working copy)
@@ -456,6 +456,7 @@
 	ActionManager::register_toggle_action (option_actions, X_("AutoAnalyseAudio"), _("Auto-analyse new audio"), mem_fun (*this, &ARDOUR_UI::toggle_auto_analyse_audio));
 
 	ActionManager::register_toggle_action (option_actions, X_("DefaultNarrowMS"), _("Use narrow mixer strips"), mem_fun (*this, &ARDOUR_UI::toggle_use_narrow_ms));
+	ActionManager::register_toggle_action (option_actions, X_("NameNewMarkers"), _("Name New Markers"), mem_fun (*this, &ARDOUR_UI::toggle_NameNewMarkers));
 
 	RadioAction::Group denormal_group;
 
Index: gtk2_ardour/ardour_ui_options.cc
===================================================================
--- gtk2_ardour/ardour_ui_options.cc	(revision 3247)
+++ gtk2_ardour/ardour_ui_options.cc	(working copy)
@@ -578,6 +578,12 @@
 }
 
 void
+ARDOUR_UI::toggle_NameNewMarkers()
+{
+	ActionManager::toggle_config_state ("options", "NameNewMarkers", &Configuration::set_name_new_markers, &Configuration::get_name_new_markers);
+}
+
+void
 ARDOUR_UI::toggle_rubberbanding_snaps_to_grid ()
 {
 	ActionManager::toggle_config_state ("options", "RubberbandingSnapsToGrid", &Configuration::set_rubberbanding_snaps_to_grid, &Configuration::get_rubberbanding_snaps_to_grid);
Index: gtk2_ardour/location_ui.h
===================================================================
--- gtk2_ardour/location_ui.h	(revision 3247)
+++ gtk2_ardour/location_ui.h	(working copy)
@@ -50,6 +50,7 @@
 	void set_session (ARDOUR::Session *);
 
 	void set_number (int);
+	void focus_name();
 	
 	sigc::signal<void,ARDOUR::Location*> remove_requested;  
 	sigc::signal<void> redraw_ranges;  
@@ -149,6 +150,7 @@
 
   private:
 	ARDOUR::LocationStack* locations;
+	ARDOUR::Location *newest_location;
         
 	void session_gone();
 
Index: gtk2_ardour/editor.h
===================================================================
--- gtk2_ardour/editor.h	(revision 3247)
+++ gtk2_ardour/editor.h	(working copy)
@@ -465,6 +465,7 @@
 	void hide_marker (ArdourCanvas::Item*, GdkEvent*);
 	void clear_marker_display ();
 	void mouse_add_new_marker (nframes_t where, bool is_cd=false, bool is_xrun=false);
+	bool choose_new_marker_name(string &name);
 	void update_cd_marker_display ();
 	void ensure_cd_marker_updated (LocationMarkers * lam, ARDOUR::Location * location);
 
Index: libs/ardour/ardour/configuration_vars.h
===================================================================
--- libs/ardour/ardour/configuration_vars.h	(revision 3247)
+++ libs/ardour/ardour/configuration_vars.h	(working copy)
@@ -156,6 +156,7 @@
 CONFIG_VARIABLE (std::string, keyboard_layout, "keyboard-layout", "ansi")
 CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "ardour")
 CONFIG_VARIABLE (bool, default_narrow_ms, "default-narrow_ms", false)
+CONFIG_VARIABLE (bool, name_new_markers, "name-new-markers", false)
 CONFIG_VARIABLE (bool, rubberbanding_snaps_to_grid, "rubberbanding-snaps-to-grid", false)
 CONFIG_VARIABLE (long, font_scale, "font-scale", 102400)
 

