diff --git a/README.rst b/README.rst index c87e125..8fa2846 100644 --- a/README.rst +++ b/README.rst @@ -12,9 +12,13 @@ process. DEPENDENCIES ============ -A vte version >= ``0.38.0``. A `patch -`_ -is required to expose the functions needed for keyboard selection. +The `vte-ng `_ project is required until +VTE exposes the necessary functions for keyboard text selection and URL hints +(if ever). A simple patch `has been submitted upstream +`_ but they're unwilling +to expose functionality that's not required by GNOME Terminal even if there's +no extra maintenance (it already exists internally) and no additional backwards +compatibility hazards. BUILDING ======== diff --git a/expose_select_text.patch b/expose_select_text.patch deleted file mode 100644 index c18f1b7..0000000 --- a/expose_select_text.patch +++ /dev/null @@ -1,226 +0,0 @@ -Only in vte-0.40.0.new: .git -diff --unified -aur vte-0.40.0/src/vteaccess.c vte-0.40.0.new/src/vteaccess.c ---- vte-0.40.0/src/vteaccess.c 2015-03-16 06:34:37.000000000 -0400 -+++ vte-0.40.0.new/src/vteaccess.c 2015-04-10 00:08:53.146853382 -0400 -@@ -1444,7 +1444,7 @@ - *start_offset = offset_from_xy (priv, start_x, start_y); - _vte_terminal_get_end_selection (terminal, &end_x, &end_y); - *end_offset = offset_from_xy (priv, end_x, end_y); -- return _vte_terminal_get_selection (terminal); -+ return vte_terminal_get_selection (terminal); - } - - static gboolean -diff --unified -aur vte-0.40.0/src/vte.c vte-0.40.0.new/src/vte.c ---- vte-0.40.0/src/vte.c 2015-03-18 12:38:09.000000000 -0400 -+++ vte-0.40.0.new/src/vte.c 2015-04-10 00:08:53.150186722 -0400 -@@ -123,7 +123,6 @@ - gpointer data, - GArray *attributes, - gboolean include_trailing_spaces); --static void _vte_terminal_disconnect_pty_read(VteTerminal *terminal); - static void _vte_terminal_disconnect_pty_write(VteTerminal *terminal); - static void vte_terminal_stop_processing (VteTerminal *terminal); - -@@ -3344,9 +3343,10 @@ - _vte_debug_print (VTE_DEBUG_IO, "removed poll of vte_terminal_io_read\n"); - terminal->pvt->pty_input_source = 0; - } --static void --_vte_terminal_connect_pty_read(VteTerminal *terminal) -+void -+vte_terminal_connect_pty_read(VteTerminal *terminal) - { -+ g_return_if_fail(VTE_IS_TERMINAL(terminal)); - if (terminal->pvt->pty_channel == NULL) { - return; - } -@@ -3398,9 +3398,10 @@ - } - } - --static void --_vte_terminal_disconnect_pty_read(VteTerminal *terminal) -+void -+vte_terminal_disconnect_pty_read(VteTerminal *terminal) - { -+ g_return_if_fail(VTE_IS_TERMINAL(terminal)); - if (terminal->pvt->pty_input_source != 0) { - _vte_debug_print (VTE_DEBUG_IO, "disconnecting poll of vte_terminal_io_read\n"); - g_source_remove(terminal->pvt->pty_input_source); -@@ -6302,6 +6303,28 @@ - } - } - -+/** -+ * vte_terminal_set_cursor_position: -+ * @terminal: a #VteTerminal -+ * @column: the new cursor column -+ * @row: the new cursor row -+ * -+ * Set the location of the cursor. -+ */ -+void -+vte_terminal_set_cursor_position(VteTerminal *terminal, -+ long column, long row) -+{ -+ g_return_if_fail(VTE_IS_TERMINAL(terminal)); -+ -+ _vte_invalidate_cursor_once(terminal, FALSE); -+ terminal->pvt->cursor.col = column; -+ terminal->pvt->cursor.row = row; -+ _vte_invalidate_cursor_once(terminal, FALSE); -+ _vte_check_cursor_blink(terminal); -+ vte_terminal_queue_cursor_moved(terminal); -+} -+ - static GtkClipboard * - vte_terminal_clipboard_get(VteTerminal *terminal, GdkAtom board) - { -@@ -6465,7 +6488,7 @@ - vte_terminal_extend_selection(terminal, x, y, FALSE, TRUE); - - /* Temporarily stop caring about input from the child. */ -- _vte_terminal_disconnect_pty_read(terminal); -+ vte_terminal_disconnect_pty_read(terminal); - } - - static gboolean -@@ -6482,7 +6505,7 @@ - terminal->pvt->selecting = FALSE; - - /* Reconnect to input from the child if we paused it. */ -- _vte_terminal_connect_pty_read(terminal); -+ vte_terminal_connect_pty_read(terminal); - - return TRUE; - } -@@ -6982,6 +7005,50 @@ - vte_terminal_deselect_all (terminal); - } - -+/** -+ * vte_terminal_get_selection_block_mode: -+ * @terminal: a #VteTerminal -+ * -+ * Checks whether or not block selection is enabled. -+ * -+ * Returns: %TRUE if block selection is enabled, %FALSE if not -+ */ -+gboolean -+vte_terminal_get_selection_block_mode(VteTerminal *terminal) { -+ g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE); -+ return terminal->pvt->selection_block_mode; -+} -+ -+/** -+ * vte_terminal_set_selection_block_mode: -+ * @terminal: a #VteTerminal -+ * @block_mode: whether block selection is enabled -+ * -+ * Sets whether or not block selection is enabled. -+ */ -+void -+vte_terminal_set_selection_block_mode(VteTerminal *terminal, gboolean block_mode) { -+ g_return_if_fail(VTE_IS_TERMINAL(terminal)); -+ terminal->pvt->selection_block_mode = block_mode; -+} -+ -+/** -+ * vte_terminal_select_text: -+ * @terminal: a #VteTerminal -+ * @start_col: the starting column for the selection -+ * @start_row: the starting row for the selection -+ * @end_col: the end column for the selection -+ * @end_row: the end row for the selection -+ * -+ * Sets the current selection region. -+ */ -+void -+vte_terminal_select_text(VteTerminal *terminal, -+ long start_col, long start_row, -+ long end_col, long end_row) { -+ _vte_terminal_select_text(terminal, start_col, start_row, end_col, end_row, 0, 0); -+} -+ - /* Autoscroll a bit. */ - static gboolean - vte_terminal_autoscroll(VteTerminal *terminal) -@@ -8631,7 +8698,7 @@ - #endif - kill(terminal->pvt->pty_pid, SIGHUP); - } -- _vte_terminal_disconnect_pty_read(terminal); -+ vte_terminal_disconnect_pty_read(terminal); - _vte_terminal_disconnect_pty_write(terminal); - if (terminal->pvt->pty_channel != NULL) { - g_io_channel_unref (terminal->pvt->pty_channel); -@@ -12188,7 +12255,7 @@ - g_object_freeze_notify(object); - - if (pvt->pty != NULL) { -- _vte_terminal_disconnect_pty_read(terminal); -+ vte_terminal_disconnect_pty_read(terminal); - _vte_terminal_disconnect_pty_write(terminal); - - if (terminal->pvt->pty_channel != NULL) { -@@ -12243,7 +12310,7 @@ - _vte_terminal_setup_utf8 (terminal); - - /* Open channels to listen for input on. */ -- _vte_terminal_connect_pty_read (terminal); -+ vte_terminal_connect_pty_read (terminal); - - g_object_notify(object, "pty"); - -@@ -12276,7 +12343,7 @@ - } - - char * --_vte_terminal_get_selection(VteTerminal *terminal) -+vte_terminal_get_selection(VteTerminal *terminal) - { - g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL); - -diff --unified -aur vte-0.40.0/src/vteint.h vte-0.40.0.new/src/vteint.h ---- vte-0.40.0/src/vteint.h 2014-05-28 08:22:48.000000000 -0400 -+++ vte-0.40.0.new/src/vteint.h 2015-04-10 00:08:53.153520062 -0400 -@@ -25,7 +25,6 @@ - G_BEGIN_DECLS - - void _vte_terminal_accessible_ref(VteTerminal *terminal); --char* _vte_terminal_get_selection(VteTerminal *terminal); - void _vte_terminal_get_start_selection(VteTerminal *terminal, long *x, long *y); - void _vte_terminal_get_end_selection(VteTerminal *terminal, long *x, long *y); - void _vte_terminal_select_text(VteTerminal *terminal, long start_x, long start_y, long end_x, long end_y, int start_offset, int end_offset); -diff --unified -aur vte-0.40.0/src/vteterminal.h vte-0.40.0.new/src/vteterminal.h ---- vte-0.40.0/src/vteterminal.h 2015-03-18 12:38:09.000000000 -0400 -+++ vte-0.40.0.new/src/vteterminal.h 2015-04-10 00:08:53.150186722 -0400 -@@ -169,6 +169,18 @@ - - void vte_terminal_select_all(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); - void vte_terminal_unselect_all(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); -+gboolean vte_terminal_get_selection_block_mode(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); -+void vte_terminal_set_selection_block_mode(VteTerminal *terminal, -+ gboolean block_mode) _VTE_GNUC_NONNULL(1); -+void vte_terminal_select_text(VteTerminal *terminal, -+ long start_col, long start_row, -+ long end_col, long end_row) _VTE_GNUC_NONNULL(1); -+char * -+vte_terminal_get_selection(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); -+ -+/* pause and unpause output */ -+void vte_terminal_disconnect_pty_read(VteTerminal *vte); -+void vte_terminal_connect_pty_read(VteTerminal *vte); - - /* By-word selection */ - void vte_terminal_set_word_char_exceptions(VteTerminal *terminal, -@@ -280,6 +292,8 @@ - void vte_terminal_get_cursor_position(VteTerminal *terminal, - glong *column, - glong *row) _VTE_GNUC_NONNULL(1); -+void vte_terminal_set_cursor_position(VteTerminal *terminal, -+ long column, long row) _VTE_GNUC_NONNULL(1); - - /* Add a matching expression, returning the tag the widget assigns to that - * expression. */