[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53473] trunk/blender/source/blender: code cleanup: autocomplete functions
Campbell Barton
ideasman42 at gmail.com
Mon Dec 31 18:20:00 CET 2012
Revision: 53473
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53473
Author: campbellbarton
Date: 2012-12-31 17:19:55 +0000 (Mon, 31 Dec 2012)
Log Message:
-----------
code cleanup: autocomplete functions
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/text.c
trunk/blender/source/blender/editors/space_text/text_autocomplete.c
Modified: trunk/blender/source/blender/blenkernel/intern/text.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/text.c 2012-12-31 16:40:14 UTC (rev 53472)
+++ trunk/blender/source/blender/blenkernel/intern/text.c 2012-12-31 17:19:55 UTC (rev 53473)
@@ -2939,6 +2939,10 @@
int text_find_identifier_start(const char *str, int i)
{
+ if (UNLIKELY(i <= 0)) {
+ return 0;
+ }
+
while (i--) {
if (!text_check_identifier(str[i])) {
break;
Modified: trunk/blender/source/blender/editors/space_text/text_autocomplete.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_autocomplete.c 2012-12-31 16:40:14 UTC (rev 53472)
+++ trunk/blender/source/blender/editors/space_text/text_autocomplete.c 2012-12-31 17:19:55 UTC (rev 53473)
@@ -223,32 +223,22 @@
static void get_suggest_prefix(Text *text, int offset)
{
int i, len;
- char *line, tmp[256];
+ char *line;
if (!text) return;
if (!texttool_text_is_active(text)) return;
line = text->curl->line;
- for (i = text->curc - 1 + offset; i >= 0; i--)
- if (!text_check_identifier(line[i]))
- break;
- i++;
+ i = text_find_identifier_start(line, text->curc + offset);
len = text->curc - i + offset;
- if (len > 255) {
- printf("Suggestion prefix too long\n");
- len = 255;
- }
- if (len != 0)
- BLI_strncpy(tmp, line + i, len);
- tmp[len] = '\0';
- texttool_suggest_prefix(tmp, len);
+ texttool_suggest_prefix(line + i, len);
}
-static void confirm_suggestion(Text *text, int skipleft)
+static void confirm_suggestion(Text *text)
{
SuggItem *sel;
int i, over = 0;
- char *line;
+ const char *line;
if (!text) return;
if (!texttool_text_is_active(text)) return;
@@ -257,23 +247,18 @@
if (!sel) return;
line = text->curl->line;
- i = text->curc - skipleft - 1;
- while (i >= 0) {
- if (!text_check_identifier(line[i]))
- break;
- over++;
- i--;
- }
+ i = text_find_identifier_start(line, text->curc /* - skipleft */);
+ over = text->curc - i;
- for (i = 0; i < skipleft; i++)
- txt_move_left(text, 0);
+// for (i = 0; i < skipleft; i++)
+// txt_move_left(text, 0);
for (i = 0; i < over; i++)
txt_move_left(text, 1);
txt_insert_buf(text, sel->name);
- for (i = 0; i < skipleft; i++)
- txt_move_right(text, 0);
+// for (i = 0; i < skipleft; i++)
+// txt_move_right(text, 0);
texttool_text_clear();
}
@@ -294,7 +279,7 @@
ED_area_tag_redraw(CTX_wm_area(C));
if (texttool_suggest_first() == texttool_suggest_last()) {
- confirm_suggestion(st->text, 0);
+ confirm_suggestion(st->text);
text_update_line_edited(st->text->curl);
text_autocomplete_free(C, op);
return OPERATOR_FINISHED;
@@ -345,7 +330,7 @@
case MIDDLEMOUSE:
if (event->val == KM_PRESS) {
if (text_do_suggest_select(st, ar)) {
- confirm_suggestion(st->text, 0);
+ confirm_suggestion(st->text);
text_update_line_edited(st->text->curl);
swallow = 1;
}
@@ -369,7 +354,7 @@
case RETKEY:
if (event->val == KM_PRESS) {
if (tools & TOOL_SUGG_LIST) {
- confirm_suggestion(st->text, 0);
+ confirm_suggestion(st->text);
text_update_line_edited(st->text->curl);
swallow = 1;
draw = 1;
More information about the Bf-blender-cvs
mailing list