~ubuntu-branches/ubuntu/utopic/geany/utopic

« back to all changes in this revision

Viewing changes to src/keybindings.c

  • Committer: Package Import Robot
  • Author(s): Chow Loong Jin
  • Date: 2011-12-10 07:43:26 UTC
  • mfrom: (3.3.7 sid)
  • Revision ID: package-import@ubuntu.com-20111210074326-s8yqbew5i20h33tf
Tags: 0.21-1ubuntu1
* Merge from Debian Unstable, remaining changes:
  - debian/patches/20_use_evince_viewer.patch:
     + use evince as viewer for pdf and dvi files
  - debian/patches/20_use_x_terminal_emulator.patch:
     + use x-terminal-emulator as terminal
  - debian/control
     + Add breaks on geany-plugins-common << 0.20
* Also fixes bugs:
  - Filter for MATLAB/Octave files filters everythign (LP: 885505)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 *      keybindings.c - this file is part of Geany, a fast and lightweight IDE
3
3
 *
4
 
 *      Copyright 2006-2010 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
5
 
 *      Copyright 2006-2010 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
 
4
 *      Copyright 2006-2011 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
 
5
 *      Copyright 2006-2011 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
6
6
 *
7
7
 *      This program is free software; you can redistribute it and/or modify
8
8
 *      it under the terms of the GNU General Public License as published by
18
18
 *      along with this program; if not, write to the Free Software
19
19
 *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
20
 *
21
 
 * $Id: keybindings.c 5498 2010-12-24 13:31:39Z ntrel $
 
21
 * $Id: keybindings.c 5895 2011-08-21 17:15:19Z colombanw $
22
22
 */
23
23
 
24
24
/**
86
86
static gboolean on_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data);
87
87
static gboolean on_key_release_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data);
88
88
 
89
 
static gboolean check_current_word(GeanyDocument *doc);
90
 
static gboolean read_current_word(GeanyDocument *doc);
91
 
static gchar *get_current_word_or_sel(GeanyDocument *doc);
 
89
static gboolean check_current_word(GeanyDocument *doc, gboolean sci_word);
 
90
static gboolean read_current_word(GeanyDocument *doc, gboolean sci_word);
 
91
static gchar *get_current_word_or_sel(GeanyDocument *doc, gboolean sci_word);
92
92
 
93
93
static gboolean cb_func_file_action(guint key_id);
94
94
static gboolean cb_func_project_action(guint key_id);
531
531
                0, 0, "remove_markers", _("Remove Markers"), LW(remove_markers1));
532
532
        keybindings_set_item(group, GEANY_KEYS_DOCUMENT_REMOVE_ERROR_INDICATORS, NULL,
533
533
                0, 0, "remove_error_indicators", _("Remove Error Indicators"), LW(menu_remove_indicators1));
 
534
        keybindings_set_item(group, GEANY_KEYS_DOCUMENT_REMOVE_MARKERS_INDICATORS, NULL,
 
535
                0, 0, "remove_markers_and_indicators", _("Remove Markers and Error Indicators"), NULL);
534
536
 
535
537
        group = ADD_KB_GROUP(BUILD, _("Build"), cb_func_build_action);
536
538
 
864
866
        gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
865
867
 
866
868
        text_renderer = gtk_cell_renderer_text_new();
867
 
    /* we can't use "weight-set", see http://bugzilla.gnome.org/show_bug.cgi?id=355214 */
 
869
        /* we can't use "weight-set", see http://bugzilla.gnome.org/show_bug.cgi?id=355214 */
868
870
        column = gtk_tree_view_column_new_with_attributes(
869
871
                NULL, text_renderer, "text", 0, "weight", 2, NULL);
870
872
        gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
1074
1076
        GeanyKeyGroup *group;
1075
1077
        GtkWidget *widget;
1076
1078
 
 
1079
        if (gtk_window_get_focus(GTK_WINDOW(main_widgets.window)) != vc->vte)
 
1080
                return FALSE;
 
1081
        /* let VTE copy/paste override any user keybinding */
 
1082
        if (state == (GDK_CONTROL_MASK | GDK_SHIFT_MASK) && (keyval == GDK_c || keyval == GDK_v))
 
1083
                return TRUE;
1077
1084
        if (! vc->enable_bash_keys)
1078
1085
                return FALSE;
1079
 
        if (gtk_window_get_focus(GTK_WINDOW(main_widgets.window)) != vc->vte)
1080
 
                return FALSE;
1081
1086
        /* prevent menubar flickering: */
1082
1087
        if (state == GDK_SHIFT_MASK && (keyval >= GDK_a && keyval <= GDK_z))
1083
1088
                return FALSE;
1410
1415
                case GEANY_KEYS_SEARCH_PREVIOUSMESSAGE:
1411
1416
                        on_previous_message1_activate(NULL, NULL); break;
1412
1417
                case GEANY_KEYS_SEARCH_FINDUSAGE:
1413
 
                        read_current_word(doc);
1414
 
                        on_find_usage1_activate(NULL, NULL);
1415
 
                        break;
 
1418
                        on_find_usage1_activate(NULL, NULL); break;
1416
1419
                case GEANY_KEYS_SEARCH_FINDDOCUMENTUSAGE:
1417
 
                        read_current_word(doc);
1418
 
                        on_find_document_usage1_activate(NULL, NULL);
1419
 
                        break;
 
1420
                        on_find_document_usage1_activate(NULL, NULL); break;
1420
1421
                case GEANY_KEYS_SEARCH_MARKALL:
1421
1422
                {
1422
 
                        gchar *text = get_current_word_or_sel(doc);
 
1423
                        gchar *text = get_current_word_or_sel(doc, TRUE);
1423
1424
 
1424
1425
                        if (sci_has_selection(sci))
1425
1426
                                search_mark_all(doc, text, SCFIND_MATCHCASE);
1541
1542
}
1542
1543
 
1543
1544
 
1544
 
static gboolean read_current_word(GeanyDocument *doc)
 
1545
static gboolean read_current_word(GeanyDocument *doc, gboolean sci_word)
1545
1546
{
1546
 
        gint pos;
1547
 
 
1548
1547
        if (doc == NULL)
1549
1548
                return FALSE;
1550
1549
 
1551
 
        pos = sci_get_current_position(doc->editor->sci);
1552
 
 
1553
 
        editor_find_current_word(doc->editor, pos,
1554
 
                editor_info.current_word, GEANY_MAX_WORD_LENGTH, NULL);
 
1550
        if (sci_word)
 
1551
        {
 
1552
                editor_find_current_word_sciwc(doc->editor, -1,
 
1553
                        editor_info.current_word, GEANY_MAX_WORD_LENGTH);
 
1554
        }
 
1555
        else
 
1556
        {
 
1557
                editor_find_current_word(doc->editor, -1,
 
1558
                        editor_info.current_word, GEANY_MAX_WORD_LENGTH, NULL);
 
1559
        }
1555
1560
 
1556
1561
        return (*editor_info.current_word != 0);
1557
1562
}
1558
1563
 
1559
1564
 
1560
 
static gboolean check_current_word(GeanyDocument *doc)
 
1565
static gboolean check_current_word(GeanyDocument *doc, gboolean sci_word)
1561
1566
{
1562
 
        if (!read_current_word(doc))
 
1567
        if (! read_current_word(doc, sci_word))
1563
1568
        {
1564
1569
                utils_beep();
1565
1570
                return FALSE;
1568
1573
}
1569
1574
 
1570
1575
 
1571
 
static gchar *get_current_word_or_sel(GeanyDocument *doc)
 
1576
static gchar *get_current_word_or_sel(GeanyDocument *doc, gboolean sci_word)
1572
1577
{
1573
1578
        ScintillaObject *sci = doc->editor->sci;
1574
1579
 
1575
1580
        if (sci_has_selection(sci))
1576
1581
                return sci_get_selection_contents(sci);
1577
1582
 
1578
 
        return read_current_word(doc) ? g_strdup(editor_info.current_word) : NULL;
 
1583
        return read_current_word(doc, sci_word) ? g_strdup(editor_info.current_word) : NULL;
1579
1584
}
1580
1585
 
1581
1586
 
1775
1780
}
1776
1781
 
1777
1782
 
1778
 
static void update_filename_label()
 
1783
static void update_filename_label(void)
1779
1784
{
1780
1785
        if (!switch_dialog)
1781
1786
        {
1783
1788
                gtk_widget_show_all(switch_dialog);
1784
1789
        }
1785
1790
 
1786
 
        geany_wrap_label_set_text(GTK_LABEL(switch_dialog_label),
1787
 
                DOC_FILENAME(document_get_current()));
 
1791
        gtk_label_set_text(GTK_LABEL(switch_dialog_label), DOC_FILENAME(document_get_current()));
1788
1792
}
1789
1793
 
1790
1794
 
1930
1934
 
1931
1935
static void goto_tag(GeanyDocument *doc, gboolean definition)
1932
1936
{
1933
 
        gchar *text = get_current_word_or_sel(doc);
 
1937
        gchar *text = get_current_word_or_sel(doc, FALSE);
1934
1938
 
1935
1939
        if (text)
1936
1940
                symbols_goto_tag(text, definition);
2144
2148
                        editor_show_macro_list(doc->editor);
2145
2149
                        break;
2146
2150
                case GEANY_KEYS_EDITOR_CONTEXTACTION:
2147
 
                        if (check_current_word(doc))
 
2151
                        if (check_current_word(doc, FALSE))
2148
2152
                                on_context_action1_activate(GTK_MENU_ITEM(ui_lookup_widget(main_widgets.editor_menu,
2149
2153
                                        "context_action1")), NULL);
2150
2154
                        break;
2540
2544
                case GEANY_KEYS_DOCUMENT_REMOVE_ERROR_INDICATORS:
2541
2545
                        on_menu_remove_indicators1_activate(NULL, NULL);
2542
2546
                        break;
 
2547
                case GEANY_KEYS_DOCUMENT_REMOVE_MARKERS_INDICATORS:
 
2548
                        on_remove_markers1_activate(NULL, NULL);
 
2549
                        on_menu_remove_indicators1_activate(NULL, NULL);
 
2550
                        break;
2543
2551
        }
2544
2552
        return TRUE;
2545
2553
}