[gtksourceview/wip/chergert/vim] improve some odd paragraph text-object cases
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/chergert/vim] improve some odd paragraph text-object cases
- Date: Fri, 5 Nov 2021 22:18:16 +0000 (UTC)
commit 83bb5915f165fac5eba5b5f053f82783144b0fa6
Author: Christian Hergert <chergert redhat com>
Date: Fri Nov 5 15:18:12 2021 -0700
improve some odd paragraph text-object cases
gtksourceview/vim/gtk-source-vim-text-object.c | 11 +++++++++++
testsuite/test-vim-text-object.c | 8 +++++---
2 files changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/gtksourceview/vim/gtk-source-vim-text-object.c b/gtksourceview/vim/gtk-source-vim-text-object.c
index 1ccb6093..1f1aaf39 100644
--- a/gtksourceview/vim/gtk-source-vim-text-object.c
+++ b/gtksourceview/vim/gtk-source-vim-text-object.c
@@ -360,6 +360,17 @@ text_object_extend_paragraph (const GtkTextIter *origin,
*a_end = next;
}
+ /* If we didn't actually advance, then we failed to find
+ * a paragraph and we should fail the extension to match
+ * what VIM does. (Test with `cap` at position 0 w/ "\n\n").
+ */
+ if (mode == TEXT_OBJECT_A &&
+ started_on_empty &&
+ gtk_text_iter_equal (a_end, inner_end))
+ {
+ return FALSE;
+ }
+
return TRUE;
}
diff --git a/testsuite/test-vim-text-object.c b/testsuite/test-vim-text-object.c
index 17d55539..0196434d 100644
--- a/testsuite/test-vim-text-object.c
+++ b/testsuite/test-vim-text-object.c
@@ -204,12 +204,14 @@ test_paragraph (void)
run_test (gtk_source_vim_text_object_new_inner_paragraph (), "\tword;\n\n\tanother;\n\n\tthird;\n",
9, "\tanother;");
run_test (gtk_source_vim_text_object_new_inner_paragraph (), "\tword;\n\n\tanother;\n", 7, "");
run_test (gtk_source_vim_text_object_new_inner_paragraph (), "\t1\n\n\t2\n\n\t3", 8, "");
+ run_test (gtk_source_vim_text_object_new_inner_paragraph (), "\n", 0, "\n");
run_test (gtk_source_vim_text_object_new_a_paragraph (), "testing this.\n\n\n", 0, "testing
this.\n\n\n");
run_test (gtk_source_vim_text_object_new_a_paragraph (), "testing this.\n", 5, "testing this.\n");
- run_test (gtk_source_vim_text_object_new_a_paragraph (), "\n\n", 0, "\n\n");
- run_test (gtk_source_vim_text_object_new_a_paragraph (), "\n\n", 1, "\n\n");
- run_test (gtk_source_vim_text_object_new_a_paragraph (), "\n\n\n", 1, "\n\n\n");
+ run_test (gtk_source_vim_text_object_new_a_paragraph (), "\n", 0, NULL);
+ run_test (gtk_source_vim_text_object_new_a_paragraph (), "\n\n", 0, NULL);
+ run_test (gtk_source_vim_text_object_new_a_paragraph (), "\n\n", 1, NULL);
+ run_test (gtk_source_vim_text_object_new_a_paragraph (), "\n\n\n", 1, NULL);
run_test (gtk_source_vim_text_object_new_a_paragraph (), "what\nwill\n we\n\nfind\nhere.", 1,
"what\nwill\n we\n");
run_test (gtk_source_vim_text_object_new_a_paragraph (), "\tword;\n\n\tanother;\n\n\tthird;\n", 9,
"\tanother;\n");
run_test (gtk_source_vim_text_object_new_a_paragraph (), "\tword;\n\n\tanother;\n", 7,
"\n\tanother;");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]