Add Document->Clone keybinding

This commit is contained in:
Nick Treleaven 2012-12-12 13:59:29 +00:00
parent 83e7afc199
commit 6ca889c78b
5 changed files with 21 additions and 4 deletions

View File

@ -3627,6 +3627,8 @@ Document keybindings
==================================== ==================== ================================================== ==================================== ==================== ==================================================
Action Default shortcut Description Action Default shortcut Description
==================================== ==================== ================================================== ==================================== ==================== ==================================================
Clone See `Cloning documents`_.
Replace tabs by space Replaces all tabs with the right amount of spaces. Replace tabs by space Replaces all tabs with the right amount of spaces.
Replace spaces by tabs Replaces leading spaces with tab characters. Replace spaces by tabs Replaces leading spaces with tab characters.

View File

@ -2744,15 +2744,21 @@ GeanyDocument *document_index(gint idx)
/* create a new file and copy file content and properties */ /* create a new file and copy file content and properties */
G_MODULE_EXPORT void on_clone1_activate(GtkMenuItem *menuitem, gpointer user_data) G_MODULE_EXPORT void on_clone1_activate(GtkMenuItem *menuitem, gpointer user_data)
{
GeanyDocument *old_doc = document_get_current();
if (old_doc)
document_clone(old_doc);
}
GeanyDocument *document_clone(GeanyDocument *old_doc)
{ {
gchar *text; gchar *text;
GeanyDocument *doc; GeanyDocument *doc;
GeanyDocument *old_doc = document_get_current();
ScintillaObject *old_sci; ScintillaObject *old_sci;
if (!old_doc) g_return_val_if_fail(old_doc, NULL);
return;
old_sci = old_doc->editor->sci; old_sci = old_doc->editor->sci;
if (sci_has_selection(old_sci)) if (sci_has_selection(old_sci))
text = sci_get_selection_contents(old_sci); text = sci_get_selection_contents(old_sci);
@ -2777,6 +2783,7 @@ G_MODULE_EXPORT void on_clone1_activate(GtkMenuItem *menuitem, gpointer user_dat
/* update ui */ /* update ui */
ui_document_show_hide(doc); ui_document_show_hide(doc);
return doc;
} }

View File

@ -279,6 +279,8 @@ gint document_compare_by_tab_order_reverse(gconstpointer a, gconstpointer b);
void document_grab_focus(GeanyDocument *doc); void document_grab_focus(GeanyDocument *doc);
GeanyDocument *document_clone(GeanyDocument *old_doc);
G_END_DECLS G_END_DECLS
#endif #endif

View File

@ -561,6 +561,8 @@ static void init_default_kb(void)
0, 0, "menu_linewrap", _("Toggle Line wrapping"), "menu_line_wrapping1"); 0, 0, "menu_linewrap", _("Toggle Line wrapping"), "menu_line_wrapping1");
add_kb(group, GEANY_KEYS_DOCUMENT_LINEBREAK, NULL, add_kb(group, GEANY_KEYS_DOCUMENT_LINEBREAK, NULL,
0, 0, "menu_linebreak", _("Toggle Line breaking"), "line_breaking1"); 0, 0, "menu_linebreak", _("Toggle Line breaking"), "line_breaking1");
add_kb(group, GEANY_KEYS_DOCUMENT_CLONE, NULL,
0, 0, "menu_clone", _("_Clone"), "clone1");
add_kb(group, GEANY_KEYS_DOCUMENT_REPLACETABS, NULL, add_kb(group, GEANY_KEYS_DOCUMENT_REPLACETABS, NULL,
0, 0, "menu_replacetabs", _("Replace tabs by space"), "menu_replace_tabs"); 0, 0, "menu_replacetabs", _("Replace tabs by space"), "menu_replace_tabs");
add_kb(group, GEANY_KEYS_DOCUMENT_REPLACESPACES, NULL, add_kb(group, GEANY_KEYS_DOCUMENT_REPLACESPACES, NULL,
@ -2348,6 +2350,9 @@ static gboolean cb_func_document_action(guint key_id)
on_line_wrapping1_toggled(NULL, NULL); on_line_wrapping1_toggled(NULL, NULL);
ui_document_show_hide(doc); ui_document_show_hide(doc);
break; break;
case GEANY_KEYS_DOCUMENT_CLONE:
document_clone(doc);
break;
case GEANY_KEYS_DOCUMENT_RELOADTAGLIST: case GEANY_KEYS_DOCUMENT_RELOADTAGLIST:
document_update_tags(doc); document_update_tags(doc);
break; break;

View File

@ -246,6 +246,7 @@ enum GeanyKeyBindingID
GEANY_KEYS_PROJECT_CLOSE, /**< Keybinding. */ GEANY_KEYS_PROJECT_CLOSE, /**< Keybinding. */
GEANY_KEYS_FORMAT_JOINLINES, /**< Keybinding. */ GEANY_KEYS_FORMAT_JOINLINES, /**< Keybinding. */
GEANY_KEYS_GOTO_LINESTARTVISUAL, /**< Keybinding. */ GEANY_KEYS_GOTO_LINESTARTVISUAL, /**< Keybinding. */
GEANY_KEYS_DOCUMENT_CLONE, /**< Keybinding. */
GEANY_KEYS_COUNT /* must not be used by plugins */ GEANY_KEYS_COUNT /* must not be used by plugins */
}; };