mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-22 12:45:00 +00:00
feature: parse url in commit message (#1133)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
parent
63803c9b88
commit
b9dc5a8164
1 changed files with 33 additions and 3 deletions
|
@ -642,10 +642,37 @@ namespace SourceGit.ViewModels
|
|||
rule.Matches(inlines, message);
|
||||
}
|
||||
|
||||
var matches = REG_SHA_FORMAT().Matches(message);
|
||||
for (int i = 0; i < matches.Count; i++)
|
||||
var urlMatches = REG_URL_FORMAT().Matches(message);
|
||||
for (int i = 0; i < urlMatches.Count; i++)
|
||||
{
|
||||
var match = matches[i];
|
||||
var match = urlMatches[i];
|
||||
if (!match.Success)
|
||||
continue;
|
||||
|
||||
var start = match.Index;
|
||||
var len = match.Length;
|
||||
var intersect = false;
|
||||
foreach (var link in inlines)
|
||||
{
|
||||
if (link.Intersect(start, len))
|
||||
{
|
||||
intersect = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (intersect)
|
||||
continue;
|
||||
|
||||
var url = message.Substring(start, len);
|
||||
if (Uri.IsWellFormedUriString(url, UriKind.Absolute))
|
||||
inlines.Add(new Models.InlineElement(Models.InlineElementType.Link, start, len, url));
|
||||
}
|
||||
|
||||
var shaMatches = REG_SHA_FORMAT().Matches(message);
|
||||
for (int i = 0; i < shaMatches.Count; i++)
|
||||
{
|
||||
var match = shaMatches[i];
|
||||
if (!match.Success)
|
||||
continue;
|
||||
|
||||
|
@ -840,6 +867,9 @@ namespace SourceGit.ViewModels
|
|||
RevisionFileSearchSuggestion = suggestion;
|
||||
}
|
||||
|
||||
[GeneratedRegex(@"\b(https?://|ftp://)[\w\d\._/\-~%@()+:?&=#!]*[\w\d/]")]
|
||||
private static partial Regex REG_URL_FORMAT();
|
||||
|
||||
[GeneratedRegex(@"\b([0-9a-fA-F]{6,40})\b")]
|
||||
private static partial Regex REG_SHA_FORMAT();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue