gtksourceview r2196 - in branches/indenters: . gtksourceview
- From: icq svn gnome org
- To: svn-commits-list gnome org
- Subject: gtksourceview r2196 - in branches/indenters: . gtksourceview
- Date: Mon, 2 Mar 2009 12:31:29 +0000 (UTC)
Author: icq
Date: Mon Mar 2 12:31:29 2009
New Revision: 2196
URL: http://svn.gnome.org/viewvc/gtksourceview?rev=2196&view=rev
Log:
2009-03-02 Ignacio Casal Quinteiro <nacho resa gmail com>
* gtksourceview/c-indenter.c:
* gtksourceview/gtksourceindenter-utils.c:
* gtksourceview/gtksourceindenter.c:
* gtksourceview/gtksourceview.c:
* gtksourceview/gtksourceindenter-utils.h:
* gtksourceview/gtksourceindenter.h:
Clean up the source code and change from the gfloat approach
to a gint approach when getting the indent level.
Modified:
branches/indenters/ChangeLog
branches/indenters/gtksourceview/c-indenter.c
branches/indenters/gtksourceview/gtksourceindenter-utils.c
branches/indenters/gtksourceview/gtksourceindenter-utils.h
branches/indenters/gtksourceview/gtksourceindenter.c
branches/indenters/gtksourceview/gtksourceindenter.h
branches/indenters/gtksourceview/gtksourceview.c
Modified: branches/indenters/gtksourceview/c-indenter.c
==============================================================================
--- branches/indenters/gtksourceview/c-indenter.c (original)
+++ branches/indenters/gtksourceview/c-indenter.c Mon Mar 2 12:31:29 2009
@@ -137,7 +137,7 @@
return found;
}
-static gfloat
+static gint
c_indenter_get_indentation_level (GtkSourceIndenter *indenter,
GtkTextView *view,
GtkTextIter *cur,
@@ -149,18 +149,18 @@
*/
GtkTextIter iter;
gunichar c;
- gfloat amount = 0.;
+ gint amount = 0;
iter = *cur;
if (!gtk_source_indenter_move_to_no_space (&iter, -1))
- return 0.;
+ return 0;
/*
* Check for comments
*/
if (!gtk_source_indenter_move_to_no_comments (&iter))
- return 0.;
+ return 0;
c = gtk_text_iter_get_char (&iter);
g_warning ("char %c", c);
@@ -181,7 +181,7 @@
if (ch == '/')
{
- amount = gtk_source_indenter_add_space (view, amount);
+ amount++;
}
}
else if (c == ';')
@@ -282,7 +282,7 @@
}
else
{
- amount++;
+ amount = gtk_source_indenter_add_indent (view, amount);
}
}
else if (c == ',' || c == '&' || c == '|')
@@ -296,7 +296,7 @@
if (gtk_source_indenter_find_open_char (&s, '(', ')', TRUE))
{
amount = gtk_source_indenter_get_amount_indents_from_position (view, &s);
- amount = gtk_source_indenter_add_space (view, amount);
+ amount++;
}
}
else if (c == ')' && relocating)
@@ -324,7 +324,7 @@
if (!is_caselabel (label))
{
- amount = 0.;
+ amount = 0;
}
else
{
@@ -335,19 +335,23 @@
}
else
{
- amount = 1.;
+ /*
+ * FIXME: Is this OK with amount = 1 indent ??
+ */
+ amount = gtk_source_indenter_add_indent (view, 0);
}
}
else if (c == '=')
{
- amount = gtk_source_indenter_get_amount_indents (view, &iter) + 1;
+ amount = gtk_source_indenter_get_amount_indents (view, &iter);
+ amount = gtk_source_indenter_add_indent (view, amount);
}
else if (match_regexes (&iter))
{
gtk_source_indenter_find_open_char (&iter, '(', ')', FALSE);
- amount = gtk_source_indenter_get_amount_indents (view,
- &iter) + 1;
+ amount = gtk_source_indenter_get_amount_indents (view, &iter);
+ amount = gtk_source_indenter_add_indent (view, amount);
}
else
{
Modified: branches/indenters/gtksourceview/gtksourceindenter-utils.c
==============================================================================
--- branches/indenters/gtksourceview/gtksourceindenter-utils.c (original)
+++ branches/indenters/gtksourceview/gtksourceindenter-utils.c Mon Mar 2 12:31:29 2009
@@ -27,59 +27,36 @@
#include "gtksourceindenter-utils.h"
#include "gtksourceview-utils.h"
#include "gtksourceview.h"
-#include <math.h>
-gfloat
+gint
gtk_source_indenter_get_amount_indents (GtkTextView *view,
GtkTextIter *cur)
{
- gint indent_width;
GtkTextIter start;
gunichar c;
- gint amount = 0;
- gint rest = 0;
+
+ g_return_val_if_fail (GTK_IS_TEXT_VIEW (view), 0);
+ g_return_val_if_fail (cur != NULL, 0);
start = *cur;
gtk_text_iter_set_line_offset (&start, 0);
c = gtk_text_iter_get_char (&start);
- if (!g_unichar_isspace (c))
- return 0;
-
- indent_width = _gtk_source_view_get_real_indent_width (GTK_SOURCE_VIEW (view));
while (g_unichar_isspace (c) &&
c != '\n' &&
- c != '\r' &&
- gtk_text_iter_compare (&start, cur) < 0)
+ c != '\r')
{
- if (c == '\t')
- {
- if (rest != 0)
- rest = 0;
- amount++;
- }
- else
- {
- rest++;
- }
-
- if (rest == indent_width)
- {
- amount++;
- rest = 0;
- }
-
if (!gtk_text_iter_forward_char (&start))
break;
c = gtk_text_iter_get_char (&start);
}
- return (gfloat)amount + (gfloat)(0.1 * rest);
+ return gtk_source_indenter_get_amount_indents_from_position (view, &start);
}
-gfloat
+gint
gtk_source_indenter_get_amount_indents_from_position (GtkTextView *view,
GtkTextIter *cur)
{
@@ -89,6 +66,9 @@
gint amount = 0;
gint rest = 0;
+ g_return_val_if_fail (GTK_IS_TEXT_VIEW (view), 0);
+ g_return_val_if_fail (cur != NULL, 0);
+
indent_width = _gtk_source_view_get_real_indent_width (GTK_SOURCE_VIEW (view));
start = *cur;
@@ -102,7 +82,7 @@
{
if (rest != 0)
rest = 0;
- amount++;
+ amount += indent_width;
}
else
{
@@ -111,7 +91,7 @@
if (rest == indent_width)
{
- amount++;
+ amount += indent_width;
rest = 0;
}
@@ -121,7 +101,7 @@
c = gtk_text_iter_get_char (&start);
}
- return (gfloat)amount + (gfloat)(0.1 * rest);
+ return amount + rest;
}
gboolean
@@ -131,6 +111,8 @@
gunichar c;
gboolean moved = TRUE;
+ g_return_val_if_fail (iter != NULL, FALSE);
+
c = gtk_text_iter_get_char (iter);
while (g_unichar_isspace (c))
@@ -151,6 +133,8 @@
{
gunichar c;
+ g_return_val_if_fail (iter != NULL, FALSE);
+
c = gtk_text_iter_get_char (iter);
if (c == '/' && gtk_text_iter_backward_char (iter))
@@ -210,6 +194,8 @@
gboolean moved = FALSE;
gint counter = 0;
+ g_return_val_if_fail (iter != NULL, FALSE);
+
copy = *iter;
/*
@@ -245,28 +231,15 @@
return moved;
}
-gfloat
-gtk_source_indenter_add_space (GtkTextView *view,
- gfloat current_level)
+gint
+gtk_source_indenter_add_indent (GtkTextView *view,
+ gint current_level)
{
gint indent_width;
- gint spaces;
- gint tabs;
-
- indent_width = _gtk_source_view_get_real_indent_width (GTK_SOURCE_VIEW (view));
- tabs = (gint)current_level;
- spaces = rint (10 * (gfloat)(current_level - tabs));
- /*
- * We add the new space
- */
- spaces++;
+ g_return_val_if_fail (GTK_IS_TEXT_VIEW (view), 0);
- if (spaces == indent_width)
- {
- spaces = 0;
- tabs++;
- }
+ indent_width = _gtk_source_view_get_real_indent_width (GTK_SOURCE_VIEW (view));
- return (gfloat)tabs + (gfloat)(0.1 * spaces);
+ return current_level + indent_width;
}
Modified: branches/indenters/gtksourceview/gtksourceindenter-utils.h
==============================================================================
--- branches/indenters/gtksourceview/gtksourceindenter-utils.h (original)
+++ branches/indenters/gtksourceview/gtksourceindenter-utils.h Mon Mar 2 12:31:29 2009
@@ -28,10 +28,10 @@
G_BEGIN_DECLS
-gfloat gtk_source_indenter_get_amount_indents (GtkTextView *view,
+gint gtk_source_indenter_get_amount_indents (GtkTextView *view,
GtkTextIter *cur);
-gfloat gtk_source_indenter_get_amount_indents_from_position
+gint gtk_source_indenter_get_amount_indents_from_position
(GtkTextView *view,
GtkTextIter *cur);
@@ -45,8 +45,8 @@
gchar close,
gboolean skip_first);
-gfloat gtk_source_indenter_add_space (GtkTextView *view,
- gfloat current_level);
+gint gtk_source_indenter_add_indent (GtkTextView *view,
+ gint current_level);
G_END_DECLS
Modified: branches/indenters/gtksourceview/gtksourceindenter.c
==============================================================================
--- branches/indenters/gtksourceview/gtksourceindenter.c (original)
+++ branches/indenters/gtksourceview/gtksourceindenter.c Mon Mar 2 12:31:29 2009
@@ -35,17 +35,6 @@
NULL
};
-static const gchar * extra_indent_words[] =
-{
- "if",
- "else",
- "while",
- "do",
- "for",
- "switch",
- NULL
-};
-
/* Default implementation */
static const gchar * const *
gtk_source_indenter_get_relocatables_default (GtkSourceIndenter *self)
@@ -54,14 +43,7 @@
}
/* Default implementation */
-static const gchar * const *
-gtk_source_indenter_get_extra_indent_words_default (GtkSourceIndenter *self)
-{
- return extra_indent_words;
-}
-
-/* Default implementation */
-static gfloat
+static gint
gtk_source_indenter_get_indentation_level_default (GtkSourceIndenter *self,
GtkTextView *view,
GtkTextIter *iter,
@@ -82,7 +64,6 @@
GObjectClass *object_class = G_OBJECT_CLASS (klass);
klass->get_relocatables = gtk_source_indenter_get_relocatables_default;
- klass->get_extra_indent_words = gtk_source_indenter_get_extra_indent_words_default;
klass->get_indentation_level = gtk_source_indenter_get_indentation_level_default;
object_class->finalize = gtk_source_indenter_finalize;
@@ -109,7 +90,7 @@
*
* Returns: the indentation level for a line determined by @iter.
*/
-gfloat
+gint
gtk_source_indenter_get_indentation_level (GtkSourceIndenter *self,
GtkTextView *view,
GtkTextIter *iter,
@@ -121,23 +102,6 @@
}
/**
- * gtk_source_indenter_get_extra_indent_words:
- * @self: a #GtkSourceIndenter
- *
- * Gets the words that start an extra indent in the next line.
- * This will not change the indentation level.
- *
- * Returns: the words that start an extra indent in the next line.
- */
-const gchar * const *
-gtk_source_indenter_get_extra_indent_words (GtkSourceIndenter *self)
-{
- g_return_val_if_fail (GTK_IS_SOURCE_INDENTER (self), NULL);
-
- return GTK_SOURCE_INDENTER_GET_CLASS (self)->get_extra_indent_words (self);
-}
-
-/**
* gtk_source_indenter_get_relocatables:
* @self: a #GtkSourceIndenter
*
Modified: branches/indenters/gtksourceview/gtksourceindenter.h
==============================================================================
--- branches/indenters/gtksourceview/gtksourceindenter.h (original)
+++ branches/indenters/gtksourceview/gtksourceindenter.h Mon Mar 2 12:31:29 2009
@@ -56,9 +56,7 @@
const gchar * const * (*get_relocatables) (GtkSourceIndenter *self);
- const gchar * const * (*get_extra_indent_words) (GtkSourceIndenter *self);
-
- gfloat (*get_indentation_level) (GtkSourceIndenter *self,
+ gint (*get_indentation_level) (GtkSourceIndenter *self,
GtkTextView *view,
GtkTextIter *iter,
gboolean relocating);
@@ -69,23 +67,12 @@
const gchar * const *
gtk_source_indenter_get_relocatables (GtkSourceIndenter *self);
-const gchar * const *
- gtk_source_indenter_get_extra_indent_words
- (GtkSourceIndenter *self);
-
-gfloat gtk_source_indenter_get_indentation_level
+gint gtk_source_indenter_get_indentation_level
(GtkSourceIndenter *self,
GtkTextView *buf,
GtkTextIter *iter,
gboolean relocating);
-gfloat gtk_source_indenter_get_amount_indents (GtkTextView *view,
- GtkTextIter *cur);
-
-gfloat gtk_source_indenter_get_amount_indents_from_position
- (GtkTextView *view,
- GtkTextIter *cur);
-
G_END_DECLS
#endif
Modified: branches/indenters/gtksourceview/gtksourceview.c
==============================================================================
--- branches/indenters/gtksourceview/gtksourceview.c (original)
+++ branches/indenters/gtksourceview/gtksourceview.c Mon Mar 2 12:31:29 2009
@@ -32,7 +32,6 @@
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <pango/pango-tabs.h>
-#include <math.h>
#include "gtksourceview-i18n.h"
@@ -2783,16 +2782,16 @@
static gchar *
get_indent_string_from_indent_level (GtkSourceView *view,
- gfloat level)
+ gint level)
{
gint tabs;
gint spaces;
gchar *indent = NULL;
gint indent_width;
- tabs = (gint)level;
- spaces = rint (10 * (gfloat)(level - tabs));
indent_width = _gtk_source_view_get_real_indent_width (view);
+ tabs = level / indent_width;
+ spaces = level % indent_width;
if (view->priv->insert_spaces)
{
@@ -3252,7 +3251,7 @@
GtkSourceIndenter *indenter;
GtkTextIter copy;
const gchar * const *relocatables;
- gfloat level;
+ gint level;
gint m = 0;
if (event->type != GDK_KEY_PRESS ||
@@ -3400,7 +3399,7 @@
* level as the previous line.
* SHIFT+ENTER allows to avoid autoindentation.
*/
- gfloat indent_level;
+ gint indent_level;
gchar *indent = NULL;
/* Calculate line indentation and create indent string. */
@@ -3409,7 +3408,7 @@
&cur, FALSE);
indent = get_indent_string_from_indent_level (view, indent_level);
- g_warning ("%f", indent_level);
+ g_warning ("%d", indent_level);
if (indent != NULL)
{
@@ -4009,7 +4008,7 @@
while (gtk_text_iter_get_line (start) <=
gtk_text_iter_get_line (end))
{
- gfloat level;
+ gint level;
gchar *str;
/*
@@ -4022,7 +4021,7 @@
GTK_TEXT_VIEW (view),
start,
FALSE);
- g_warning ("reindent level: %f", level);
+ g_warning ("reindent level: %d", level);
str = get_indent_string_from_indent_level (view, level);
if (str != NULL)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]