[gnome-builder] vim: fix [count] when used with a movement
- From: Sébastien Lafargue <slafargue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] vim: fix [count] when used with a movement
- Date: Tue, 17 Nov 2015 20:51:05 +0000 (UTC)
commit fdf8e8b49a5aac4a59e46ee354616c356fff78bf
Author: Sebastien Lafargue <slafargue gnome org>
Date: Tue Nov 17 21:45:27 2015 +0100
vim: fix [count] when used with a movement
As some motions use [count] as a line number, we need
a better way to differentiate cases:
-1 : [count] don't apply
0 : [count] apply but we don't set one
> 0 : [count] value
libide/ide-internal.h | 2 +-
libide/ide-source-view-movements.c | 30 +++++++++++++++++++++++----
libide/ide-source-view-movements.h | 6 ++--
libide/ide-source-view.c | 38 ++++++++++++++++++------------------
libide/ide-source-view.h | 4 +-
5 files changed, 50 insertions(+), 30 deletions(-)
---
diff --git a/libide/ide-internal.h b/libide/ide-internal.h
index 814d8d9..54e9d89 100644
--- a/libide/ide-internal.h
+++ b/libide/ide-internal.h
@@ -93,7 +93,7 @@ IdeSourceViewMode *_ide_source_view_mode_new (GtkWidget
const char *mode,
IdeSourceViewModeType type);
void _ide_source_view_set_count (IdeSourceView *self,
- guint count);
+ gint count);
void _ide_source_view_set_modifier (IdeSourceView *self,
gunichar modifier);
void _ide_thread_pool_init (void);
diff --git a/libide/ide-source-view-movements.c b/libide/ide-source-view-movements.c
index bce4b96..d080c7f 100644
--- a/libide/ide-source-view-movements.c
+++ b/libide/ide-source-view-movements.c
@@ -1956,7 +1956,7 @@ _ide_source_view_apply_movement (IdeSourceView *self,
IdeSourceViewMovement movement,
gboolean extend_selection,
gboolean exclusive,
- guint count,
+ gint count,
GString *command_str,
gunichar command,
gunichar modifier,
@@ -1991,10 +1991,13 @@ _ide_source_view_apply_movement (IdeSourceView *self,
insert = gtk_text_buffer_get_insert (buffer);
/* specific processing for underscore motion */
- if (g_str_has_suffix (command_str->str, "_") && count > 0)
+ if (g_str_has_suffix (command_str->str, "_"))
{
min_count = 0;
- --count;
+ if (count > 0)
+ --count;
+ else
+ count = 0;
}
mv.self = self;
@@ -2021,30 +2024,37 @@ _ide_source_view_apply_movement (IdeSourceView *self,
break;
case IDE_SOURCE_VIEW_MOVEMENT_NTH_CHAR:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_nth_char (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_PREVIOUS_CHAR:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_previous_char (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_NEXT_CHAR:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_next_char (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_FIRST_CHAR:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_first_char (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_FIRST_NONSPACE_CHAR:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_first_nonspace_char (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_MIDDLE_CHAR:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_middle_char (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_LAST_CHAR:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_last_char (&mv);
break;
@@ -2138,26 +2148,32 @@ _ide_source_view_apply_movement (IdeSourceView *self,
break;
case IDE_SOURCE_VIEW_MOVEMENT_FIRST_LINE:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_first_line (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_NTH_LINE:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_nth_line (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_LAST_LINE:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_last_line (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_LINE_PERCENTAGE:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_line_percentage (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_LINE_CHARS:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_line_chars (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_LINE_END:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_line_end (&mv);
break;
@@ -2176,18 +2192,22 @@ _ide_source_view_apply_movement (IdeSourceView *self,
break;
case IDE_SOURCE_VIEW_MOVEMENT_SCREEN_TOP:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_screen_top (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_SCREEN_MIDDLE:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_screen_middle (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_SCREEN_BOTTOM:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_screen_bottom (&mv);
break;
case IDE_SOURCE_VIEW_MOVEMENT_MATCH_SPECIAL:
+ mv.count = MAX (1, mv.count);
ide_source_view_movements_match_special (&mv);
break;
@@ -2257,7 +2277,7 @@ void
_ide_source_view_select_inner (IdeSourceView *self,
gunichar inner_left,
gunichar inner_right,
- guint count,
+ gint count,
gboolean exclusive,
gboolean string_mode)
{
@@ -2683,7 +2703,7 @@ get_html_element_parent (HtmlElement *element)
void
_ide_source_view_select_tag (IdeSourceView *self,
- guint count,
+ gint count,
gboolean exclusive)
{
GtkTextBuffer *buffer;
diff --git a/libide/ide-source-view-movements.h b/libide/ide-source-view-movements.h
index 6f9f086..c867e4f 100644
--- a/libide/ide-source-view-movements.h
+++ b/libide/ide-source-view-movements.h
@@ -27,7 +27,7 @@ void _ide_source_view_apply_movement (IdeSourceView *source_view,
IdeSourceViewMovement movement,
gboolean extend_selection,
gboolean exclusive,
- guint count,
+ gint count,
GString *command_str,
gunichar command,
gunichar modifier,
@@ -37,12 +37,12 @@ void _ide_source_view_apply_movement (IdeSourceView *source_view,
void _ide_source_view_select_inner (IdeSourceView *self,
gunichar inner_left,
gunichar inner_right,
- guint count,
+ gint count,
gboolean exclusive,
gboolean string_mode);
void _ide_source_view_select_tag (IdeSourceView *self,
- guint count,
+ gint count,
gboolean exclusive);
G_END_DECLS
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index da8648d..cace971 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -122,7 +122,7 @@ typedef struct
gunichar command;
gunichar modifier;
gunichar search_char;
- guint count;
+ gint count;
gunichar inner_left;
gunichar inner_right;
@@ -168,7 +168,7 @@ typedef struct
typedef struct
{
gint ref_count;
- guint count;
+ gint count;
IdeSourceView *self;
guint is_forward : 1;
guint extend_selection : 1;
@@ -391,7 +391,7 @@ ide_source_view_sync_rubberband_mark (IdeSourceView *self)
void
_ide_source_view_set_count (IdeSourceView *self,
- guint count)
+ gint count)
{
IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
@@ -2732,7 +2732,7 @@ ide_source_view_real_insert_modifier (IdeSourceView *self,
GtkTextBuffer *buffer;
gchar str[8] = { 0 };
gsize i;
- guint count = 1;
+ gint count = 1;
gint len;
g_assert (IDE_IS_SOURCE_VIEW (self));
@@ -3129,12 +3129,12 @@ ide_source_view_real_movement (IdeSourceView *self,
gboolean apply_count)
{
IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
- guint count = 0;
+ gint count = -1;
g_assert (IDE_IS_SOURCE_VIEW (self));
if (apply_count)
- count = MAX(1, priv->count);
+ count = priv->count;
if (priv->scrolling_to_scroll_mark)
priv->scrolling_to_scroll_mark = FALSE;
@@ -4487,7 +4487,7 @@ ide_source_view_real_begin_macro (IdeSourceView *self)
GdkEvent *event;
const gchar *mode_name;
gunichar modifier;
- guint count;
+ gint count;
IDE_ENTRY;
@@ -4613,7 +4613,7 @@ ide_source_view_real_replay_macro (IdeSourceView *self,
{
IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
IdeSourceViewCapture *capture;
- guint count = 1;
+ gint count = 1;
gsize i;
IDE_ENTRY;
@@ -5286,7 +5286,7 @@ ide_source_view_get_property (GObject *object,
break;
case PROP_COUNT:
- g_value_set_uint (value, ide_source_view_get_count (self));
+ g_value_set_int (value, ide_source_view_get_count (self));
break;
case PROP_ENABLE_WORD_COMPLETION:
@@ -5391,7 +5391,7 @@ ide_source_view_set_property (GObject *object,
break;
case PROP_COUNT:
- ide_source_view_set_count (self, g_value_get_uint (value));
+ ide_source_view_set_count (self, g_value_get_int (value));
break;
case PROP_ENABLE_WORD_COMPLETION:
@@ -5548,13 +5548,13 @@ ide_source_view_class_init (IdeSourceViewClass *klass)
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
properties [PROP_COUNT] =
- g_param_spec_uint ("count",
- "Count",
- "The count for movements.",
- 0,
- G_MAXINT,
- 0,
- (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_param_spec_int ("count",
+ "Count",
+ "The count for movements.",
+ -1,
+ G_MAXINT,
+ 0,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
properties [PROP_FILE_SETTINGS] =
g_param_spec_object ("file-settings",
@@ -7645,7 +7645,7 @@ ide_source_view_clear_search (IdeSourceView *self)
gtk_source_search_settings_set_search_text (search_settings, "");
}
-guint
+gint
ide_source_view_get_count (IdeSourceView *self)
{
IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
@@ -7657,7 +7657,7 @@ ide_source_view_get_count (IdeSourceView *self)
void
ide_source_view_set_count (IdeSourceView *self,
- guint count)
+ gint count)
{
IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
diff --git a/libide/ide-source-view.h b/libide/ide-source-view.h
index b9ccf3b..4eb1e2f 100644
--- a/libide/ide-source-view.h
+++ b/libide/ide-source-view.h
@@ -291,7 +291,7 @@ IdeBackForwardList *ide_source_view_get_back_forward_list (IdeSource
void ide_source_view_get_visual_position (IdeSourceView *self,
guint *line,
guint
*line_offset);
-guint ide_source_view_get_count (IdeSourceView *self);
+gint ide_source_view_get_count (IdeSourceView *self);
gboolean ide_source_view_get_enable_word_completion(IdeSourceView *self);
IdeFileSettings *ide_source_view_get_file_settings (IdeSourceView *self);
const PangoFontDescription *ide_source_view_get_font_desc (IdeSourceView *self);
@@ -321,7 +321,7 @@ void ide_source_view_push_snippet (IdeSource
const GtkTextIter *location);
void ide_source_view_rollback_search (IdeSourceView *self);
void ide_source_view_set_count (IdeSourceView *self,
- guint count);
+ gint count);
void ide_source_view_set_enable_word_completion(IdeSourceView *self,
gboolean
enable_word_copletion);
void ide_source_view_set_font_desc (IdeSourceView *self,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]