mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-17 06:52:18 +01:00
Clickable url are now searched with a good regexp and highlighted.
This commit is contained in:
parent
a6c8753a80
commit
d60c42e5ed
@ -169,6 +169,9 @@ public class PdeTextAreaDefaults extends TextAreaDefaults {
|
||||
// ??
|
||||
styles[Token.LABEL] = Theme.getStyle("label");
|
||||
|
||||
// http://arduino.cc/
|
||||
styles[Token.URL] = Theme.getStyle("url");
|
||||
|
||||
// + - = /
|
||||
styles[Token.OPERATOR] = Theme.getStyle("operator");
|
||||
|
||||
|
@ -104,6 +104,7 @@ public class SyntaxUtilities
|
||||
styles[Token.LITERAL2] = new SyntaxStyle(new Color(0x650099),false,true);
|
||||
styles[Token.LABEL] = new SyntaxStyle(new Color(0x990033),false,true);
|
||||
styles[Token.OPERATOR] = new SyntaxStyle(Color.black,false,true);
|
||||
styles[Token.URL] = new SyntaxStyle(Color.blue,true,false);
|
||||
styles[Token.INVALID] = new SyntaxStyle(Color.red,false,true);
|
||||
|
||||
return styles;
|
||||
@ -151,7 +152,7 @@ public class SyntaxUtilities
|
||||
|
||||
line.count = length;
|
||||
if (id == Token.COMMENT1 || id == Token.COMMENT2)
|
||||
x = drawTabbedCommentsText(line, x, y, gfx, expander);
|
||||
x = drawTabbedCommentsText(line, x, y, gfx, expander, styles, styles[id]);
|
||||
else
|
||||
x = Utilities.drawTabbedText(line, x, y, gfx, expander, 0);
|
||||
line.offset += length;
|
||||
@ -174,9 +175,7 @@ public class SyntaxUtilities
|
||||
* the remaining part of the string.
|
||||
*/
|
||||
public static String[] parseCommentUrls(String line) {
|
||||
// Try to find pattern
|
||||
Pattern schematics = Pattern.compile("@schematics\\s+([^\\s]+)");
|
||||
Matcher m = schematics.matcher(line.toString());
|
||||
Matcher m = urlPattern.matcher(line.toString());
|
||||
if (!m.find())
|
||||
return null;
|
||||
|
||||
@ -188,12 +187,21 @@ public class SyntaxUtilities
|
||||
return res;
|
||||
}
|
||||
|
||||
static private Pattern urlPattern = Pattern.compile(
|
||||
"((?:https?|ftp)://" + // ( Protocol
|
||||
"(?:(?:[\\w_\\-]+:)?[\\w_\\-]+@)?" + // Username and password
|
||||
"(?:[\\w_\\-]+\\.)+[\\w_\\-]+" + // Domain name
|
||||
"(?::[0-9]{1,5})?" + // Port
|
||||
"(?:/[\\w_\\-./?%&=+]*)?)" + // Path )
|
||||
"(?:\\s|$)"); // whitespace or EOL
|
||||
|
||||
public static Segment stringToSegment(String v) {
|
||||
return new Segment(v.toCharArray(), 0, v.length());
|
||||
}
|
||||
|
||||
private static int drawTabbedCommentsText(Segment line, int x, int y,
|
||||
Graphics gfx, TabExpander expander) {
|
||||
Graphics gfx, TabExpander expander, SyntaxStyle[] styles,
|
||||
SyntaxStyle commentStyle) {
|
||||
|
||||
String parse[] = parseCommentUrls(line.toString());
|
||||
if (parse == null)
|
||||
@ -203,14 +211,21 @@ public class SyntaxUtilities
|
||||
Segment tag = stringToSegment(parse[1]);
|
||||
Segment post = stringToSegment(parse[2]);
|
||||
|
||||
x = Utilities.drawTabbedText(pre, x, y, gfx, expander, 0);
|
||||
if (pre.length()>0)
|
||||
x = Utilities.drawTabbedText(pre, x, y, gfx, expander, 0);
|
||||
|
||||
Font f = gfx.getFont();
|
||||
styles[Token.URL].setGraphicsFlags(gfx, f);
|
||||
x = Utilities.drawTabbedText(tag, x, y, gfx, expander, 0);
|
||||
|
||||
// Draw arrow.
|
||||
FontMetrics metrics = gfx.getFontMetrics();
|
||||
int h = metrics.getHeight() - 2;
|
||||
drawArrow(gfx, x, y - h + metrics.getDescent() - 1, h, h);
|
||||
x = Utilities.drawTabbedText(post, x, y, gfx, expander, 0);
|
||||
|
||||
commentStyle.setGraphicsFlags(gfx, f);
|
||||
if (post.length()>0)
|
||||
x = Utilities.drawTabbedText(post, x, y, gfx, expander, 0);
|
||||
return x;
|
||||
}
|
||||
|
||||
|
@ -83,17 +83,22 @@ public class Token
|
||||
*/
|
||||
public static final byte OPERATOR = 9;
|
||||
|
||||
/**
|
||||
* URL token id.
|
||||
*/
|
||||
public static final byte URL = 10;
|
||||
|
||||
/**
|
||||
* Invalid token id. This can be used to mark invalid
|
||||
* or incomplete tokens, so the user can easily spot
|
||||
* syntax errors.
|
||||
*/
|
||||
public static final byte INVALID = 10;
|
||||
public static final byte INVALID = 11;
|
||||
|
||||
/**
|
||||
* The total number of defined token ids.
|
||||
*/
|
||||
public static final byte ID_COUNT = 11;
|
||||
public static final byte ID_COUNT = 12;
|
||||
|
||||
/**
|
||||
* The first id that can be used for internal state
|
||||
|
@ -83,6 +83,9 @@ editor.literal1.style = #006699,plain
|
||||
# p5 built in variables: e.g. mouseX, width, pixels
|
||||
editor.literal2.style = #006699,plain
|
||||
|
||||
# http://arduino.cc/
|
||||
editor.url.style = #0000ff,italic
|
||||
|
||||
# e.g. + - = /
|
||||
editor.operator.style = #000000,plain
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user