[gtksourceview/wip/chergert/vim: 292/363] add some quote end checks
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/chergert/vim: 292/363] add some quote end checks
- Date: Mon, 8 Nov 2021 19:53:54 +0000 (UTC)
commit 8a55cf19f986c0ba5d8dd4dee8444da556428d8f
Author: Christian Hergert <chergert redhat com>
Date: Thu Nov 4 22:44:51 2021 -0700
add some quote end checks
gtksourceview/vim/gtk-source-vim-motion.c | 45 ++++++++++++++++++++-----------
gtksourceview/vim/gtk-source-vim-motion.h | 3 +++
2 files changed, 33 insertions(+), 15 deletions(-)
---
diff --git a/gtksourceview/vim/gtk-source-vim-motion.c b/gtksourceview/vim/gtk-source-vim-motion.c
index 8a57c19b..c8a986c5 100644
--- a/gtksourceview/vim/gtk-source-vim-motion.c
+++ b/gtksourceview/vim/gtk-source-vim-motion.c
@@ -2221,32 +2221,29 @@ gtk_source_vim_iter_backward_quote_start (GtkTextIter *iter,
}
static gboolean
-gtk_source_vim_iter_forward_quote_end (GtkTextIter *iter,
- gunichar ch)
+gtk_source_vim_iter_ends_quote (const GtkTextIter *iter,
+ gunichar ch)
{
- GtkTextIter limit;
-
- /* The way this seems to work in VIM is that we match
- * to backwards if we have a preference, then forwards.
- * So if we find @ch before us and we are currently on
- * @ch, then that is preferred over scanning forward.
- */
if (ch == gtk_text_iter_get_char (iter) &&
- !gtk_text_iter_is_start (iter))
+ !gtk_text_iter_starts_line (iter))
{
GtkTextIter alt = *iter;
- gtk_text_iter_backward_char (&alt);
-
if (gtk_source_vim_iter_backward_quote_start (&alt, ch))
{
return TRUE;
}
-
- gtk_text_iter_forward_char (iter);
}
- limit = *iter;
+ return FALSE;
+}
+
+static gboolean
+gtk_source_vim_iter_forward_quote_end (GtkTextIter *iter,
+ gunichar ch)
+{
+ GtkTextIter limit = *iter;
+
if (!gtk_text_iter_ends_line (&limit))
gtk_text_iter_forward_to_line_end (&limit);
@@ -2259,6 +2256,24 @@ gtk_source_vim_iter_forward_quote_double (GtkTextIter *iter)
return gtk_source_vim_iter_forward_quote_end (iter, '"');
}
+gboolean
+gtk_source_vim_iter_ends_quote_double (const GtkTextIter *iter)
+{
+ return gtk_source_vim_iter_ends_quote (iter, '"');
+}
+
+gboolean
+gtk_source_vim_iter_ends_quote_single (const GtkTextIter *iter)
+{
+ return gtk_source_vim_iter_ends_quote (iter, '\'');
+}
+
+gboolean
+gtk_source_vim_iter_ends_quote_grave (const GtkTextIter *iter)
+{
+ return gtk_source_vim_iter_ends_quote (iter, '\'');
+}
+
gboolean
gtk_source_vim_iter_backward_quote_double (GtkTextIter *iter)
{
diff --git a/gtksourceview/vim/gtk-source-vim-motion.h b/gtksourceview/vim/gtk-source-vim-motion.h
index fa25daa4..1eb8eb11 100644
--- a/gtksourceview/vim/gtk-source-vim-motion.h
+++ b/gtksourceview/vim/gtk-source-vim-motion.h
@@ -79,6 +79,9 @@ gboolean gtk_source_vim_iter_forward_word_end (GtkTextIter *it
gboolean gtk_source_vim_iter_forward_WORD_end (GtkTextIter *iter);
gboolean gtk_source_vim_iter_ends_word (const GtkTextIter *iter);
gboolean gtk_source_vim_iter_ends_WORD (const GtkTextIter *iter);
+gboolean gtk_source_vim_iter_ends_quote_double (const GtkTextIter *iter);
+gboolean gtk_source_vim_iter_ends_quote_single (const GtkTextIter *iter);
+gboolean gtk_source_vim_iter_ends_quote_grave (const GtkTextIter *iter);
gboolean gtk_source_vim_iter_starts_word (const GtkTextIter *iter);
gboolean gtk_source_vim_iter_starts_WORD (const GtkTextIter *iter);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]