SF.net SVN: geany: [2748] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Thu Jul 3 15:21:10 UTC 2008
Revision: 2748
http://geany.svn.sourceforge.net/geany/?rev=2748&view=rev
Author: eht16
Date: 2008-07-03 08:20:44 -0700 (Thu, 03 Jul 2008)
Log Message:
-----------
Move the checks for HTML entity completion into an own function to increase readability.
Remove workaround for a wrong styling on last character and replace it with proper style reading (patch by Jason Oster, thanks).
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/editor.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-07-03 14:39:49 UTC (rev 2747)
+++ trunk/ChangeLog 2008-07-03 15:20:44 UTC (rev 2748)
@@ -17,6 +17,11 @@
(closes #2007288).
* src/symbols.c:
Load "ignore_tags" file before generating global tags file.
+ * src/editor.c:
+ Move the checks for HTML entity completion into an own function
+ to increase readability.
+ Remove workaround for a wrong styling on last character and replace
+ it with proper style reading (patch by Jason Oster, thanks).
2008-07-02 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c 2008-07-03 14:39:49 UTC (rev 2747)
+++ trunk/src/editor.c 2008-07-03 15:20:44 UTC (rev 2748)
@@ -1257,7 +1257,7 @@
static gboolean
-autocomplete_tags(GeanyDocument *doc, gchar *root, gsize rootlen)
+autocomplete_tags(GeanyDocument *doc, const gchar *root, gsize rootlen)
{ /* PHP, LaTeX, C, C++, D and Java tag autocompletion */
TMTagAttrType attrs[] = { tm_tag_attr_name_t, 0 };
const GPtrArray *tags;
@@ -1285,6 +1285,27 @@
}
+/* Check whether to use entity autocompletion:
+ * - always in a HTML file except when inside embedded JavaScript, Python, ASP, ...
+ * - in a PHP file only when we are outside of <? ?> */
+static gboolean autocomplete_check_for_html(gint ft_id, gint style)
+{
+ /* use entity completion when style is not JavaScript, ASP, Python, PHP, ...
+ * (everything after SCE_HJ_START is for embedded scripting languages) */
+ if (ft_id == GEANY_FILETYPES_HTML && style < SCE_HJ_START)
+ return TRUE;
+
+ if (ft_id == GEANY_FILETYPES_PHP)
+ {
+ /* use entity completion when style is outside of PHP styles */
+ if (style < SCE_HPHP_DEFAULT || style > SCE_HPHP_OPERATOR)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
gboolean editor_start_auto_complete(GeanyDocument *doc, gint pos, gboolean force)
{
gint line, line_start, line_len, line_pos, current, rootlen, startword, lexer, style, prev_style;
@@ -1309,8 +1330,15 @@
startword = current;
lexer = SSM(sci, SCI_GETLEXER, 0, 0);
prev_style = SSM(sci, SCI_GETSTYLEAT, pos - 2, 0);
- style = SSM(sci, SCI_GETSTYLEAT, pos, 0);
+ /* If we are at the last character of the document, style is always 0 because it has not yet
+ * been styled (styling is first done in SCN_UPDATEUI, not yet in SCN_CHARADDED),
+ * so we use the style of the last character. */
+ if (pos >= SSM(sci, SCI_GETLENGTH, 0, 0))
+ style = prev_style;
+ else
+ style = SSM(sci, SCI_GETSTYLEAT, pos, 0);
+
/* don't autocomplete in comments and strings */
if (!force && is_comment(lexer, prev_style, style))
return FALSE;
@@ -1331,12 +1359,7 @@
root = linebuf + startword;
rootlen = current - startword;
- /* entity autocompletion always in a HTML file except when inside embedded JavaScript,
- * in a PHP file only when we are outside of <? ?> */
- if ((ft->id == GEANY_FILETYPES_HTML && (style < SCE_HJ_START || style > SCE_HJ_REGEX)) ||
- (ft->id == GEANY_FILETYPES_PHP && (style < SCE_HPHP_DEFAULT || style > SCE_HPHP_OPERATOR) &&
- line != (sci_get_line_count(sci) - 1))) /* this check is a workaround for a Scintilla bug:
- * the last line in a PHP gets wrong styling */
+ if (autocomplete_check_for_html(ft->id, style))
ret = autocomplete_html(sci, root, rootlen);
else
{
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