diff --git a/editor/src/org/netbeans/modules/editor/url/Parser.java b/editor/src/org/netbeans/modules/editor/url/Parser.java --- a/editor/src/org/netbeans/modules/editor/url/Parser.java +++ b/editor/src/org/netbeans/modules/editor/url/Parser.java @@ -60,6 +60,9 @@ HTTPS, HTTPC, // // (ht|f)tp(s?) HTTPCS, // (ht|f)tp(s?):/ + FI, + FIL, + FILE, END // (ht|f)tp(s?):// } @@ -121,6 +124,21 @@ continue OUTER; } break; + case 'i': //NOI18N + if (state == STATE.F) { + state = STATE.FI; + continue OUTER; + } + case 'l': //NOI18N + if (state == STATE.FI) { + state = STATE.FIL; + continue OUTER; + } + case 'e': //NOI18N + if (state == STATE.FIL) { + state = STATE.FILE; + continue OUTER; + } case 'p': //NOI18N if (state == STATE.HTT_FT) { state = STATE.HTTP_FTP; @@ -134,7 +152,7 @@ } break; case ':': //NOI18N - if (state == STATE.HTTP_FTP || state == STATE.HTTPS) { + if (state == STATE.HTTP_FTP || state == STATE.HTTPS || state == STATE.FILE) { state = STATE.HTTPC; continue OUTER; } @@ -161,7 +179,7 @@ return result; } - private static final Pattern URL_PATTERN = Pattern.compile("(ht|f)tp(s?)://[0-9a-zA-Z/.?%+_~=\\\\&$\\-#,:]*"); //NOI18N + private static final Pattern URL_PATTERN = Pattern.compile("(ht|f)(tp(s?)|ile)://[0-9a-zA-Z/.?%+_~=\\\\&$\\-#,:]*"); //NOI18N public static Iterable recognizeURLsREBased(CharSequence text) { Matcher m = URL_PATTERN.matcher(text); diff --git a/editor/test/unit/src/org/netbeans/modules/editor/url/ParserTest.java b/editor/test/unit/src/org/netbeans/modules/editor/url/ParserTest.java --- a/editor/test/unit/src/org/netbeans/modules/editor/url/ParserTest.java +++ b/editor/test/unit/src/org/netbeans/modules/editor/url/ParserTest.java @@ -98,6 +98,7 @@ performTest(" http://hudson.gotdns.com/wiki/display/HUDSON/Structured+Form+Submission\n", 4, 75); performTest(" https://hudson.gotdns.com/wiki/display/HUDSON/Structured+Form+Submission\n", 4, 76); performTest(" ht+tp://hudson.gotdns.com/wiki/display/HUDSON/Structured+Form+Submission\n", null); + performTest(" file:///C:/CodeSourceryG++Lite/share/doc/arm-arm-none-eabi/html/getting-started/sec-cs3-startup.html", 4, 104); } @Test