[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54674] trunk/blender/source/blender: fix [#34275] Text autocomplete cuts words with accents or special characters
Campbell Barton
ideasman42 at gmail.com
Tue Feb 19 17:13:41 CET 2013
Revision: 54674
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54674
Author: campbellbarton
Date: 2013-02-19 16:13:41 +0000 (Tue, 19 Feb 2013)
Log Message:
-----------
fix [#34275] Text autocomplete cuts words with accents or special characters
autocomplete is now unicode aware, using python api's checks for now. eventually we should have our own.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_text.h
trunk/blender/source/blender/blenkernel/intern/text.c
trunk/blender/source/blender/editors/space_text/text_autocomplete.c
trunk/blender/source/blender/python/intern/bpy_interface.c
Modified: trunk/blender/source/blender/blenkernel/BKE_text.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_text.h 2013-02-19 15:58:38 UTC (rev 54673)
+++ trunk/blender/source/blender/blenkernel/BKE_text.h 2013-02-19 16:13:41 UTC (rev 54674)
@@ -109,6 +109,10 @@
int text_check_whitespace(const char ch);
int text_find_identifier_start(const char *str, int i);
+/* defined in bpy_interface.c */
+extern int text_check_identifier_unicode(const unsigned int ch);
+extern int text_check_identifier_nodigit_unicode(const unsigned int ch);
+
enum {
TXT_MOVE_LINE_UP = -1,
TXT_MOVE_LINE_DOWN = 1
Modified: trunk/blender/source/blender/blenkernel/intern/text.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/text.c 2013-02-19 15:58:38 UTC (rev 54673)
+++ trunk/blender/source/blender/blenkernel/intern/text.c 2013-02-19 16:13:41 UTC (rev 54674)
@@ -2938,6 +2938,18 @@
return 0;
}
+#ifndef WITH_PYTHON
+int text_check_identifier_unicode(const unsigned int ch)
+{
+ return (ch < 255 && text_check_identifier((char)ch));
+}
+
+int text_check_identifier_nodigit_unicode(const unsigned int ch)
+{
+ return (ch < 255 && text_check_identifier_nodigit((char)ch));
+}
+#endif /* WITH_PYTHON */
+
int text_check_whitespace(const char ch)
{
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n')
Modified: trunk/blender/source/blender/editors/space_text/text_autocomplete.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_autocomplete.c 2013-02-19 15:58:38 UTC (rev 54673)
+++ trunk/blender/source/blender/editors/space_text/text_autocomplete.c 2013-02-19 16:13:41 UTC (rev 54674)
@@ -170,13 +170,13 @@
/* seek identifier beginning */
i_pos = i_start;
while ((i_start < linep->len) &&
- (!text_check_identifier_nodigit(BLI_str_utf8_as_unicode_and_size_safe(&linep->line[i_start], &i_pos))))
+ (!text_check_identifier_nodigit_unicode(BLI_str_utf8_as_unicode_and_size_safe(&linep->line[i_start], &i_pos))))
{
i_start = i_pos;
}
i_pos = i_end = i_start;
while ((i_end < linep->len) &&
- (text_check_identifier(BLI_str_utf8_as_unicode_and_size_safe(&linep->line[i_end], &i_pos))))
+ (text_check_identifier_unicode(BLI_str_utf8_as_unicode_and_size_safe(&linep->line[i_end], &i_pos))))
{
i_end = i_pos;
}
@@ -184,7 +184,7 @@
if ((i_start != i_end) &&
/* check we're at the beginning of a line or that the previous char is not an identifier
* this prevents digits from being added */
- ((i_start < 1) || !text_check_identifier(BLI_str_utf8_as_unicode(&linep->line[i_start - 1]))))
+ ((i_start < 1) || !text_check_identifier_unicode(BLI_str_utf8_as_unicode(&linep->line[i_start - 1]))))
{
char *str_sub = &linep->line[i_start];
const int choice_len = i_end - i_start;
Modified: trunk/blender/source/blender/python/intern/bpy_interface.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_interface.c 2013-02-19 15:58:38 UTC (rev 54673)
+++ trunk/blender/source/blender/python/intern/bpy_interface.c 2013-02-19 16:13:41 UTC (rev 54674)
@@ -928,3 +928,20 @@
}
#endif
+
+
+/* EVIL, define text.c functions here... */
+extern int text_check_identifier_unicode(const unsigned int ch);
+extern int text_check_identifier_nodigit_unicode(const unsigned int ch);
+extern int text_check_identifier(const char ch);
+extern int text_check_identifier_nodigit(const char ch);
+
+int text_check_identifier_unicode(const unsigned int ch)
+{
+ return (ch < 255 && text_check_identifier((char)ch)) || Py_UNICODE_ISALNUM(ch);
+}
+
+int text_check_identifier_nodigit_unicode(const unsigned int ch)
+{
+ return (ch < 255 && text_check_identifier_nodigit((char)ch)) || Py_UNICODE_ISALPHA(ch);
+}
More information about the Bf-blender-cvs
mailing list