[gtksourceview/wip/chergert/vim] allow failing from extend callback
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/chergert/vim] allow failing from extend callback
- Date: Fri, 5 Nov 2021 22:18:16 +0000 (UTC)
commit 720cfc0a5083bfc0d01bdfe110a0b8b5b0502f2e
Author: Christian Hergert <chergert redhat com>
Date: Fri Nov 5 15:17:33 2021 -0700
allow failing from extend callback
this way we can look at specific requests and fail them just like VIM does
gtksourceview/vim/gtk-source-vim-text-object.c | 39 ++++++++++++++++++--------
1 file changed, 28 insertions(+), 11 deletions(-)
---
diff --git a/gtksourceview/vim/gtk-source-vim-text-object.c b/gtksourceview/vim/gtk-source-vim-text-object.c
index 49e26972..1ccb6093 100644
--- a/gtksourceview/vim/gtk-source-vim-text-object.c
+++ b/gtksourceview/vim/gtk-source-vim-text-object.c
@@ -26,11 +26,12 @@
typedef gboolean (*TextObjectCheck) (const GtkTextIter *iter);
typedef gboolean (*TextObjectMotion) (GtkTextIter *iter);
-typedef void (*TextObjectExtend) (const GtkTextIter *origin,
+typedef gboolean (*TextObjectExtend) (const GtkTextIter *origin,
GtkTextIter *inner_begin,
GtkTextIter *inner_end,
GtkTextIter *a_begin,
- GtkTextIter *a_end);
+ GtkTextIter *a_end,
+ guint mode);
enum {
TEXT_OBJECT_INNER,
@@ -245,12 +246,13 @@ forward_to_nonspace (GtkTextIter *iter)
}
}
-static void
+static gboolean
text_object_extend_word (const GtkTextIter *origin,
GtkTextIter *inner_begin,
GtkTextIter *inner_end,
GtkTextIter *a_begin,
- GtkTextIter *a_end)
+ GtkTextIter *a_end,
+ guint mode)
{
if (!gtk_text_iter_ends_line (inner_end))
{
@@ -271,27 +273,34 @@ text_object_extend_word (const GtkTextIter *origin,
*a_end = *inner_end;
forward_to_nonspace (a_end);
}
+
+ return TRUE;
}
-static void
+static gboolean
text_object_extend_one (const GtkTextIter *origin,
GtkTextIter *inner_begin,
GtkTextIter *inner_end,
GtkTextIter *a_begin,
- GtkTextIter *a_end)
+ GtkTextIter *a_end,
+ guint mode)
{
*a_begin = *inner_begin;
gtk_text_iter_forward_char (inner_begin);
+
*a_end = *inner_end;
gtk_text_iter_forward_char (a_end);
+
+ return TRUE;
}
-static void
+static gboolean
text_object_extend_paragraph (const GtkTextIter *origin,
GtkTextIter *inner_begin,
GtkTextIter *inner_end,
GtkTextIter *a_begin,
- GtkTextIter *a_end)
+ GtkTextIter *a_end,
+ guint mode)
{
GtkTextIter next;
gboolean started_on_empty;
@@ -350,14 +359,17 @@ text_object_extend_paragraph (const GtkTextIter *origin,
gtk_text_iter_backward_char (&next);
*a_end = next;
}
+
+ return TRUE;
}
-static void
+static gboolean
text_object_extend_sentence (const GtkTextIter *origin,
GtkTextIter *inner_begin,
GtkTextIter *inner_end,
GtkTextIter *a_begin,
- GtkTextIter *a_end)
+ GtkTextIter *a_end,
+ guint mode)
{
if (gtk_text_iter_starts_line (inner_begin) &&
gtk_text_iter_ends_line (inner_begin))
@@ -379,6 +391,8 @@ text_object_extend_sentence (const GtkTextIter *origin,
gtk_text_iter_forward_char (a_end);
}
}
+
+ return TRUE;
}
static GtkSourceVimState *
@@ -488,7 +502,10 @@ gtk_source_vim_text_object_select (GtkSourceVimTextObject *self,
a_begin = inner_begin;
a_end = inner_end;
- self->extend (begin, &inner_begin, &inner_end, &a_begin, &a_end);
+ if (!self->extend (begin, &inner_begin, &inner_end, &a_begin, &a_end, self->inner_or_a))
+ {
+ return FALSE;
+ }
if (self->inner_or_a == TEXT_OBJECT_INNER)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]