Skip to content

Commit

Permalink
fix searching in terminal window
Browse files Browse the repository at this point in the history
  • Loading branch information
norbusan committed Mar 19, 2020
1 parent b171a43 commit 3727f7c
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 15 deletions.
29 changes: 18 additions & 11 deletions src/terminal-search-dialog.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
#include "terminal-search-dialog.h"
#include "terminal-util.h"

#define PCRE2_CODE_UNIT_WIDTH 0
#include <pcre2.h>

#define HISTORY_MIN_ITEM_LEN 3
#define HISTORY_LENGTH 10

Expand Down Expand Up @@ -60,8 +63,8 @@ typedef struct _TerminalSearchDialogPrivate
GtkEntryCompletion *completion;

/* Cached regex */
GRegex *regex;
GRegexCompileFlags regex_compile_flags;
VteRegex *regex;
guint32 regex_compile_flags;
} TerminalSearchDialogPrivate;


Expand Down Expand Up @@ -153,7 +156,7 @@ terminal_search_dialog_private_destroy (TerminalSearchDialogPrivate *priv)
{

if (priv->regex)
g_regex_unref (priv->regex);
vte_regex_unref (priv->regex);

g_object_unref (priv->store);
g_object_unref (priv->completion);
Expand All @@ -171,7 +174,7 @@ update_sensitivity (void *unused, GtkWidget *dialog)

if (priv->regex)
{
g_regex_unref (priv->regex);
vte_regex_unref (priv->regex);
priv->regex = NULL;
}

Expand Down Expand Up @@ -336,11 +339,11 @@ terminal_search_dialog_get_search_flags (GtkWidget *dialog)
return flags;
}

GRegex *
VteRegex *
terminal_search_dialog_get_regex (GtkWidget *dialog)
{
TerminalSearchDialogPrivate *priv;
GRegexCompileFlags compile_flags;
guint32 compile_flags;
const char *text, *pattern;

g_return_val_if_fail (GTK_IS_DIALOG (dialog), NULL);
Expand All @@ -350,13 +353,15 @@ terminal_search_dialog_get_regex (GtkWidget *dialog)

pattern = text = terminal_search_dialog_get_search_text (dialog);

compile_flags = G_REGEX_OPTIMIZE;
// What is the equivalent for this in PCRE?
// compile_flags = G_REGEX_OPTIMIZE;
compile_flags = 0;

if (!GET_FLAG (match_case_checkbutton))
compile_flags |= G_REGEX_CASELESS;
compile_flags |= PCRE2_CASELESS;

if (GET_FLAG (regex_checkbutton))
compile_flags |= G_REGEX_MULTILINE;
compile_flags |= PCRE2_MULTILINE;
else
pattern = g_regex_escape_string (text, -1);

Expand All @@ -372,10 +377,12 @@ terminal_search_dialog_get_regex (GtkWidget *dialog)
{
priv->regex_compile_flags = compile_flags;
if (priv->regex)
g_regex_unref (priv->regex);
vte_regex_unref (priv->regex);

/* TODO Error handling */
priv->regex = g_regex_new (pattern, compile_flags, 0, NULL);
priv->regex = vte_regex_new_for_search(pattern, -1,
compile_flags, NULL);

}

if (pattern != text)
Expand Down
3 changes: 2 additions & 1 deletion src/terminal-search-dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#define TERMINAL_SEARCH_DIALOG_H

#include <gtk/gtk.h>
#include <vte/vte.h>

G_BEGIN_DECLS

Expand All @@ -43,7 +44,7 @@ const gchar *terminal_search_dialog_get_search_text (GtkWidget *dialog);

TerminalSearchFlags
terminal_search_dialog_get_search_flags(GtkWidget *dialog);
GRegex *terminal_search_dialog_get_regex (GtkWidget *dialog);
VteRegex *terminal_search_dialog_get_regex (GtkWidget *dialog);

G_END_DECLS

Expand Down
6 changes: 3 additions & 3 deletions src/terminal-window.c
Original file line number Diff line number Diff line change
Expand Up @@ -4064,7 +4064,7 @@ search_find_response_callback (GtkWidget *dialog,
TerminalWindow *window = TERMINAL_WINDOW (user_data);
TerminalWindowPrivate *priv = window->priv;
TerminalSearchFlags flags;
GRegex *regex;
VteRegex *regex;

if (response != GTK_RESPONSE_ACCEPT)
return;
Expand All @@ -4077,7 +4077,7 @@ search_find_response_callback (GtkWidget *dialog,

flags = terminal_search_dialog_get_search_flags (dialog);

vte_terminal_search_set_gregex (VTE_TERMINAL (priv->active_screen), regex, 0);
vte_terminal_search_set_regex (VTE_TERMINAL (priv->active_screen), regex, 0);
vte_terminal_search_set_wrap_around (VTE_TERMINAL (priv->active_screen),
(flags & TERMINAL_SEARCH_FLAG_WRAP_AROUND));

Expand Down Expand Up @@ -4148,7 +4148,7 @@ search_clear_highlight_callback (GtkAction *action,
if (G_UNLIKELY (!window->priv->active_screen))
return;

vte_terminal_search_set_gregex (VTE_TERMINAL (window->priv->active_screen), NULL, 0);
vte_terminal_search_set_regex (VTE_TERMINAL (window->priv->active_screen), NULL, 0);
}

static void
Expand Down

0 comments on commit 3727f7c

Please sign in to comment.