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);
|
rule.Matches(inlines, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
var matches = REG_SHA_FORMAT().Matches(message);
|
var urlMatches = REG_URL_FORMAT().Matches(message);
|
||||||
for (int i = 0; i < matches.Count; i++)
|
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)
|
if (!match.Success)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -840,6 +867,9 @@ namespace SourceGit.ViewModels
|
||||||
RevisionFileSearchSuggestion = suggestion;
|
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")]
|
[GeneratedRegex(@"\b([0-9a-fA-F]{6,40})\b")]
|
||||||
private static partial Regex REG_SHA_FORMAT();
|
private static partial Regex REG_SHA_FORMAT();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue