SF.net SVN: geany:[2860] branches/custom-tab-width

ntrel at users.sourceforge.net ntrel at xxxxx
Thu Aug 7 12:03:56 UTC 2008


Revision: 2860
          http://geany.svn.sourceforge.net/geany/?rev=2860&view=rev
Author:   ntrel
Date:     2008-08-07 12:03:56 +0000 (Thu, 07 Aug 2008)

Log Message:
-----------
Remove opening-brace indent code from get_indent() as it's now in
get_brace_indent().

Modified Paths:
--------------
    branches/custom-tab-width/ChangeLog
    branches/custom-tab-width/src/editor.c

Modified: branches/custom-tab-width/ChangeLog
===================================================================
--- branches/custom-tab-width/ChangeLog	2008-08-07 11:49:06 UTC (rev 2859)
+++ branches/custom-tab-width/ChangeLog	2008-08-07 12:03:56 UTC (rev 2860)
@@ -3,6 +3,9 @@
  * src/interface.c, src/callbacks.c, src/callbacks.h, geany.glade:
    Set 'Detect from file' indent type setting insensitive when Tabs &
    Spaces is set.
+ * src/editor.c:
+   Remove opening-brace indent code from get_indent() as it's now in
+   get_brace_indent().
 
 
 2008-08-05  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: branches/custom-tab-width/src/editor.c
===================================================================
--- branches/custom-tab-width/src/editor.c	2008-08-07 11:49:06 UTC (rev 2859)
+++ branches/custom-tab-width/src/editor.c	2008-08-07 12:03:56 UTC (rev 2860)
@@ -74,7 +74,7 @@
 
 static void on_new_line_added(GeanyEditor *editor);
 static gboolean handle_xml(GeanyEditor *editor, gchar ch);
-static void get_indent(GeanyEditor *editor, gint pos, gboolean use_this_line);
+static void get_indent(GeanyEditor *editor, gint pos);
 static void insert_indent_after_line(GeanyEditor *editor, gint line);
 static void auto_multiline(GeanyEditor *editor, gint pos);
 static gboolean is_comment(gint lexer, gint prev_style, gint style);
@@ -835,45 +835,20 @@
 }
 
 
-/* in place indentation of one tab or equivalent spaces.
- * idx is the index into buf. */
-static void do_indent(const GeanyIndentPrefs *iprefs, gchar *buf, gsize len, guint *idx)
+/* Read indent chars for the line that pos is on into indent global variable.
+ * Note: Use sci_get_line_indentation() and get_whitespace() instead in any new code.  */
+static void get_indent(GeanyEditor *editor, gint pos)
 {
-	guint j = *idx;
-
-	if (iprefs->type == GEANY_INDENT_TYPE_TABS)
-	{
-		if (j < len - 1)	/* leave room for a \0 terminator. */
-			buf[j++] = '\t';
-	}
-	else
-	{
-		/* insert as many spaces as an indent takes.
-		 * TODO: insert tabs for GEANY_INDENT_TYPE_BOTH */
-		guint k;
-		for (k = 0; k < (guint) iprefs->width && k < len - 1; k++)
-			buf[j++] = ' ';
-	}
-	*idx = j;
-}
-
-
-/* "use_this_line" to auto-indent only if it is a real new line
- * and ignore the case of close_block */
-static void get_indent(GeanyEditor *editor, gint pos, gboolean use_this_line)
-{
 	ScintillaObject *sci = editor->sci;
 	guint i, len, j = 0;
-	gint prev_line;
+	gint line;
 	gchar *linebuf;
 	const GeanyIndentPrefs *iprefs = editor_get_indent_prefs(editor);
 
-	prev_line = sci_get_line_from_position(sci, pos);
+	line = sci_get_line_from_position(sci, pos);
 
-	if (! use_this_line)
-		prev_line--;
-	len = sci_get_line_length(sci, prev_line);
-	linebuf = sci_get_line(sci, prev_line);
+	len = sci_get_line_length(sci, line);
+	linebuf = sci_get_line(sci, line);
 
 	for (i = 0; i < len && j <= (sizeof(indent) - 1); i++)
 	{
@@ -881,35 +856,6 @@
 			indent[j++] = linebuf[i];
 		else if (iprefs->auto_indent_mode <= GEANY_AUTOINDENT_BASIC)
 			break;
-		else if (use_this_line)
-			break;
-		else	/* close_block */
-		{
-			if (! lexer_has_braces(sci))
-				break;
-
-			/* i == (len - 1) prevents wrong indentation after lines like
-			 * "	{ return bless({}, shift); }" (Perl) */
-			if (linebuf[i] == '{' && i == (len - 1))
-			{
-				do_indent(iprefs, indent, sizeof(indent), &j);
-				break;
-			}
-			else
-			{
-				gint k = len - 1;
-
-				while (k > 0 && isspace(linebuf[k])) k--;
-
-				/* if last non-whitespace character is a { increase indentation by a tab
-				 * e.g. for (...) { */
-				if (linebuf[k] == '{')
-				{
-					do_indent(iprefs, indent, sizeof(indent), &j);
-				}
-				break;
-			}
-		}
 	}
 	indent[j] = '\0';
 	g_free(linebuf);
@@ -1596,7 +1542,7 @@
 
 			/* get the indentation */
 			if (editor->auto_indent)
-				get_indent(editor, pos, TRUE);
+				get_indent(editor, pos);
 			eol = g_strconcat(editor_get_eol_char(doc), indent, NULL);
 
 			construct = g_strdup_printf("%s\\end%s{%s}", eol, full_cmd, env);
@@ -1703,7 +1649,7 @@
 		return FALSE;
 	}
 
-	get_indent(editor, pos, TRUE);
+	get_indent(editor, pos);
 	lindent = g_strconcat(editor_get_eol_char(editor->document), indent, NULL);
 	whitespace = get_single_indent(editor);
 
@@ -1933,7 +1879,7 @@
 
 	if (SSM(sci, SCI_GETLEXER, 0, 0) != SCLEX_HTML) return;
 
-	get_indent(editor, pos, TRUE);
+	get_indent(editor, pos);
 	indent_pos = sci_get_line_indent_position(sci, sci_get_line_from_position(sci, pos));
 	if ((pos - 7) != indent_pos) /* 7 == strlen("<table>") */
 	{
@@ -2326,7 +2272,7 @@
 			gint a = (first_line_was_comment) ? - co_len : co_len;
 
 			/* don't modify sel_start when the selection starts within indentation */
-			get_indent(doc->editor, sel_start, TRUE);
+			get_indent(doc->editor, sel_start);
 			if ((sel_start - first_line_start) <= (gint) strlen(indent))
 				a = 0;
 
@@ -2833,7 +2779,7 @@
 	if (editor->auto_indent &&
 		! have_multiline_comment &&	doc->file_type->comment_use_indent)
 	{
-		get_indent(editor, editor_info.click_pos, TRUE);
+		get_indent(editor, editor_info.click_pos);
 		text = g_strdup_printf("%s\n%s\n%s\n", indent, indent, indent);
 		text_len = strlen(text);
 	}
@@ -3093,7 +3039,7 @@
 
 	/* get previous line and use it for get_indent to use that line
 	 * (otherwise it would fail on a line only containing "{" in advanced indentation mode) */
-	get_indent(doc->editor, sci_get_position_from_line(sci, first_line - 1), TRUE);
+	get_indent(doc->editor, sci_get_position_from_line(sci, first_line - 1));
 
 	smart_line_indentation(doc, first_line, last_line);
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list