fixed a small bug by auto closing }-brackets
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@29 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
parent
e9569abf85
commit
623ab0957a
23
src/sci_cb.c
23
src/sci_cb.c
@ -17,6 +17,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
|
* $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ on_editor_notification(GtkWidget* editor, gint scn, gpointer lscn, gpointer user
|
|||||||
}
|
}
|
||||||
case SCN_KEY:
|
case SCN_KEY:
|
||||||
{
|
{
|
||||||
//g_message("key notification triggered with %c", nt->ch);
|
//geany_debug("key notification triggered with %c", nt->ch);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SCN_MODIFIED:
|
case SCN_MODIFIED:
|
||||||
@ -237,9 +238,8 @@ void sci_cb_get_indent(ScintillaObject *sci, gint pos, gboolean use_this_line)
|
|||||||
|
|
||||||
void sci_cb_close_block(ScintillaObject *sci, gint pos)
|
void sci_cb_close_block(ScintillaObject *sci, gint pos)
|
||||||
{
|
{
|
||||||
// the good way
|
gint x = 0, cnt = 0;
|
||||||
#if 1
|
gint start_brace = utils_brace_match(sci, pos);
|
||||||
gint x = 0, cnt = 0, start_brace = utils_brace_match(sci, pos);
|
|
||||||
gint line = sci_get_line_from_position(sci, pos);
|
gint line = sci_get_line_from_position(sci, pos);
|
||||||
gint line_start = sci_get_position_from_line(sci, line);
|
gint line_start = sci_get_position_from_line(sci, line);
|
||||||
gint line_len = sci_get_line_length(sci, line);
|
gint line_len = sci_get_line_length(sci, line);
|
||||||
@ -257,24 +257,19 @@ void sci_cb_close_block(ScintillaObject *sci, gint pos)
|
|||||||
if (isspace(line_buf[x])) cnt++;
|
if (isspace(line_buf[x])) cnt++;
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
//geany_debug("%d == %d (%s)", line_len - eol_char_len, cnt, line_buf);
|
//if ((line_len - eol_char_len - 1) != cnt) return; // old code, buggy
|
||||||
if ((line_len - eol_char_len) != cnt) return;
|
//geany_debug("%d == %d (%s)", line_len, cnt, line_buf);
|
||||||
|
if ((line_len - 2) != cnt) return;
|
||||||
|
|
||||||
if (start_brace >= 0) sci_cb_get_indent(sci, start_brace, TRUE);
|
if (start_brace >= 0) sci_cb_get_indent(sci, start_brace, TRUE);
|
||||||
/* geany_debug("pos: %d, start: %d char: %c start_line: %d", pos, start_brace,
|
/* geany_debug("pos: %d, start: %d char: %c start_line: %d", pos, start_brace,
|
||||||
sci_get_char_at(sci, pos), sci_get_line_from_position(sci, start_brace));
|
sci_get_char_at(sci, pos), sci_get_line_from_position(sci, start_brace));
|
||||||
*/
|
*/
|
||||||
|
|
||||||
text = g_strconcat(indent, "}", NULL);
|
text = g_strconcat(indent, "}", NULL);
|
||||||
sci_set_anchor(sci, line_start);
|
sci_set_anchor(sci, line_start);
|
||||||
SSM(sci, SCI_REPLACESEL, 0, (sptr_t) text);
|
SSM(sci, SCI_REPLACESEL, 0, (sptr_t) text);
|
||||||
|
|
||||||
g_free(text);
|
g_free(text);
|
||||||
#else
|
|
||||||
// the easy way, but fails if indention contains something else than tabs
|
|
||||||
SSM(sci, SCI_GOTOPOS, pos - 1, 0);
|
|
||||||
SSM(sci, SCI_BACKTAB, 0, 0);
|
|
||||||
SSM(sci, SCI_GOTOPOS, pos, 0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -417,7 +412,7 @@ void sci_cb_auto_forif(ScintillaObject *sci, gint idx)
|
|||||||
style == SCE_HPHP_COMMENT)) return;
|
style == SCE_HPHP_COMMENT)) return;
|
||||||
|
|
||||||
// gets the indention
|
// gets the indention
|
||||||
if (app->use_auto_indention) sci_cb_get_indent(sci, pos, TRUE);
|
if (app->use_auto_indention) sci_cb_get_indent(sci, pos, TRUE);
|
||||||
eol = g_strconcat(utils_get_eol_char(idx), indent, NULL);
|
eol = g_strconcat(utils_get_eol_char(idx), indent, NULL);
|
||||||
sci_get_text_range(sci, pos - 7, pos - 1, buf);
|
sci_get_text_range(sci, pos - 7, pos - 1, buf);
|
||||||
if (! strncmp("if", buf + 4, 2))
|
if (! strncmp("if", buf + 4, 2))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user