Branch: refs/heads/master Author: Nick Treleaven nick.treleaven@btinternet.com Committer: Nick Treleaven nick.treleaven@btinternet.com Date: Fri, 13 Apr 2012 16:41:52 Commit: 9ddeed5254dbb2b23a18c2685d4f2e2d2b224eed https://github.com/geany/geany/commit/9ddeed5254dbb2b23a18c2685d4f2e2d2b224e...
Log Message: ----------- Enable entity completion for XML documents
Modified Paths: -------------- src/editor.c src/highlighting.c
Modified: src/editor.c 21 files changed, 11 insertions(+), 10 deletions(-) =================================================================== @@ -2031,8 +2031,7 @@ gboolean editor_show_calltip(GeanyEditor *editor, gint pos) }
-static gboolean autocomplete_check_html(GeanyEditor *editor, gint style, - const gchar *root, gint rootlen) +static gboolean autocomplete_check_html(GeanyEditor *editor, gint style, gint pos) { GeanyFiletype *ft = editor->document->file_type; gboolean try = FALSE; @@ -2041,6 +2040,8 @@ static gboolean autocomplete_check_html(GeanyEditor *editor, gint style, * (everything after SCE_HJ_START is for embedded scripting languages) */ if (ft->id == GEANY_FILETYPES_HTML && style < SCE_HJ_START) try = TRUE; + else if (sci_get_lexer(editor->sci) == SCLEX_XML) + try = TRUE; else if (ft->id == GEANY_FILETYPES_PHP) { /* use entity completion when style is outside of PHP styles */ @@ -2049,15 +2050,17 @@ static gboolean autocomplete_check_html(GeanyEditor *editor, gint style, } if (try) { + gchar root[GEANY_MAX_WORD_LENGTH]; + gchar *tmp; + + read_current_word(editor, pos, root, sizeof(root), GEANY_WORDCHARS"&", TRUE); + /* Allow something like ""some text"". * for entity completion we want to have completion for '&' within words. */ - gchar *tmp = strchr(root, '&'); - + tmp = strchr(root, '&'); if (tmp != NULL) { - root = tmp; - rootlen = strlen(tmp); - return autocomplete_html(editor->sci, root, rootlen); + return autocomplete_html(editor->sci, tmp, strlen(tmp)); } } return FALSE; @@ -2188,8 +2191,6 @@ gboolean editor_start_auto_complete(GeanyEditor *editor, gint pos, gboolean forc
if (ft->id == GEANY_FILETYPES_LATEX) wordchars = GEANY_WORDCHARS"\"; /* add \ to word chars if we are in a LaTeX file */ - else if (ft->id == GEANY_FILETYPES_HTML || ft->id == GEANY_FILETYPES_PHP) - wordchars = GEANY_WORDCHARS"&"; /* add & to word chars if we are in a PHP or HTML file */ else wordchars = GEANY_WORDCHARS;
@@ -2199,7 +2200,7 @@ gboolean editor_start_auto_complete(GeanyEditor *editor, gint pos, gboolean forc
if (rootlen > 0) { - ret = autocomplete_check_html(editor, style, root, rootlen); + ret = autocomplete_check_html(editor, style, pos); if (ret || (ft->id == GEANY_FILETYPES_PHP && style == SCE_HPHP_DEFAULT && rootlen == 3 && strcmp(root, "php") == 0 && pos >= 5 && sci_get_char_at(sci, pos - 5) == '<' &&
Modified: src/highlighting.c 2 files changed, 2 insertions(+), 0 deletions(-) =================================================================== @@ -1479,6 +1479,7 @@ gboolean highlighting_is_string_style(gint lexer, gint style) return (style == SCE_MATLAB_STRING || style == SCE_MATLAB_DOUBLEQUOTESTRING);
+ case SCLEX_XML: case SCLEX_HTML: return ( style == SCE_HBA_STRING || @@ -1631,6 +1632,7 @@ gboolean highlighting_is_comment_style(gint lexer, gint style) case SCLEX_YAML: return (style == SCE_YAML_COMMENT);
+ case SCLEX_XML: case SCLEX_HTML: return ( style == SCE_HBA_COMMENTLINE ||
@@ Diff output truncated at 100000 characters. @@
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: TBD).