[geany/geany-plugins] e327c7: Merge pull request #127 from vmkononenko/master
Frank Lanitz
git-noreply at xxxxx
Thu Nov 21 12:18:06 UTC 2013
Branch: refs/heads/master
Author: Frank Lanitz <frank at frank.uvena.de>
Committer: Frank Lanitz <frank at frank.uvena.de>
Date: Thu, 21 Nov 2013 12:18:06 UTC
Commit: e327c76188a738f5c3d2bdaccb3fb06a99eccb39
https://github.com/geany/geany-plugins/commit/e327c76188a738f5c3d2bdaccb3fb06a99eccb39
Log Message:
-----------
Merge pull request #127 from vmkononenko/master
Update PairTagHighlighter to version 1.1
Modified Paths:
--------------
pairtaghighlighter/ChangeLog
pairtaghighlighter/src/pair_tag_highlighter.c
Modified: pairtaghighlighter/ChangeLog
9 files changed, 9 insertions(+), 0 deletions(-)
===================================================================
@@ -1,3 +1,12 @@
+Changes in v1.1 Nov 19, 2013
+
+ * Add HTML empty tags support according to HTML5 standard.
+ * Add red and yellow colors to define if pair is found or tag is
+ empty.
+ * Enable XML support.
+ * Improved brackets search by ignoring php tags (<? <?php ?>) and
+ object operators (->). Thanks Peter Donin for bugreport!
+
Changes in v1.0 Apr 5, 2013
* The first public version.
Modified: pairtaghighlighter/src/pair_tag_highlighter.c
65 files changed, 44 insertions(+), 21 deletions(-)
===================================================================
@@ -34,7 +34,7 @@
PLUGIN_SET_TRANSLATABLE_INFO(LOCALEDIR, GETTEXT_PACKAGE, _("Pair Tag Highlighter"),
_("Finds and highlights matching opening/closing HTML tag"),
- "1.0", "Volodymyr Kononenko <vm at kononenko.ws>")
+ "1.1", "Volodymyr Kononenko <vm at kononenko.ws>")
/* Searches tag brackets.
@@ -55,13 +55,26 @@ static gint findBracket(ScintillaObject *sci, gint position, gint endOfSearchPos
for(pos=position; pos<=endOfSearchPos; pos++)
{
gchar charAtCurPosition = sci_get_char_at(sci, pos);
- if(charAtCurPosition == searchedBracket)
- {
+ gchar charAtPrevPosition = sci_get_char_at(sci, pos-1);
+ gchar charAtNextPosition = sci_get_char_at(sci, pos+1);
+
+ if(charAtCurPosition == searchedBracket) {
+ if ('>' == searchedBracket) {
+ if (('-' == charAtPrevPosition) || ('?' == charAtPrevPosition))
+ continue;
+ } else if ('<' == searchedBracket) {
+ if ('?' == charAtNextPosition)
+ continue;
+ }
foundBracket = pos;
break;
- }
- if(charAtCurPosition == breakBracket)
+ } else if(charAtCurPosition == breakBracket) {
+ if ('<' == breakBracket) {
+ if ('?' == charAtNextPosition)
+ continue;
+ }
break;
+ }
}
}
else
@@ -70,13 +83,27 @@ static gint findBracket(ScintillaObject *sci, gint position, gint endOfSearchPos
for(pos=position-1; pos>=endOfSearchPos; pos--)
{
gchar charAtCurPosition = sci_get_char_at(sci, pos);
+ gchar charAtPrevPosition = sci_get_char_at(sci, pos+1);
+ gchar charAtNextPosition = sci_get_char_at(sci, pos-1);
+
if(charAtCurPosition == searchedBracket)
{
+ if ('<' == searchedBracket) {
+ if ('?' == charAtPrevPosition)
+ continue;
+ } else if ('>' == searchedBracket) {
+ if (('-' == charAtNextPosition) || ('?' == charAtNextPosition))
+ continue;
+ }
foundBracket = pos;
break;
- }
- if(charAtCurPosition == breakBracket)
+ } else if(charAtCurPosition == breakBracket) {
+ if ('>' == breakBracket) {
+ if (('-' == charAtNextPosition) || ('?' == charAtNextPosition))
+ continue;
+ }
break;
+ }
}
}
@@ -251,8 +278,8 @@ static void findMatchingClosingTag(ScintillaObject *sci, gchar *tagName, gint cl
/* are we inside tag? */
gint lineNumber = sci_get_line_from_position(sci, pos);
gint lineEnd = sci_get_line_end_position(sci, lineNumber);
- gint matchingOpeningBracket = findBracket(sci, pos, endOfDocument, '<', '\0', TRUE);
- gint matchingClosingBracket = findBracket(sci, pos, endOfDocument, '>', '\0', TRUE);
+ gint matchingOpeningBracket = findBracket(sci, pos, lineEnd, '<', '\0', TRUE);
+ gint matchingClosingBracket = findBracket(sci, pos, lineEnd, '>', '\0', TRUE);
if(-1 != matchingOpeningBracket && -1 != matchingClosingBracket
&& (matchingClosingBracket > matchingOpeningBracket))
@@ -271,14 +298,7 @@ static void findMatchingClosingTag(ScintillaObject *sci, gchar *tagName, gint cl
}
pos = matchingClosingBracket;
}
- /* Speed up search: if findBracket returns -1, that means end of line
- * is reached. There is no need to go through the same positions again.
- * Jump to the end of line */
- else if(-1 == matchingOpeningBracket || -1 == matchingClosingBracket)
- {
- pos = lineEnd;
- continue;
- }
+
if(openingTagsCount == closingTagsCount)
{
/* matching tag is found */
@@ -339,10 +359,13 @@ static void run_tag_highlighter(ScintillaObject *sci)
clear_previous_highlighting(sci, highlightedBrackets[2], highlightedBrackets[3]);
}
- highlightedBrackets[0] = openingBracket;
- highlightedBrackets[1] = closingBracket;
+ /* Don't run search on empty brackets <> */
+ if (closingBracket - openingBracket > 1) {
+ highlightedBrackets[0] = openingBracket;
+ highlightedBrackets[1] = closingBracket;
- findMatchingTag(sci, openingBracket, closingBracket);
+ findMatchingTag(sci, openingBracket, closingBracket);
+ }
}
@@ -353,7 +376,7 @@ static gboolean on_editor_notify(GObject *obj, GeanyEditor *editor,
gint lexer;
lexer = sci_get_lexer(editor->sci);
- if(lexer != SCLEX_HTML)
+ if((lexer != SCLEX_HTML) && (lexer != SCLEX_XML))
{
return FALSE;
}
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list