nix-community.nixvim/tests/test-sources/plugins/by-name/cmp-git/default.nix
2024-12-18 23:35:23 +01:00

285 lines
8.9 KiB
Nix

{
defaults = {
plugins = {
cmp = {
enable = true;
settings.sources = [ { name = "git"; } ];
};
cmp-git.settings = {
filetypes = [
"gitcommit"
"octo"
];
remotes = [
"upstream"
"origin"
];
enableRemoteUrlRewrites = false;
git = {
commits = {
limit = 100;
sort_by = "require('cmp_git.sort').git.commits";
format = "require('cmp_git.format').git.commits";
};
};
github = {
hosts = [ ];
issues = {
fields = [
"title"
"number"
"body"
"updatedAt"
"state"
];
filter = "all";
limit = 100;
state = "open";
sort_by = "require('cmp_git.sort').github.issues";
format = "require('cmp_git.format').github.issues";
};
mentions = {
limit = 100;
sort_by = "require('cmp_git.sort').github.mentions";
format = "require('cmp_git.format').github.mentions";
};
pull_requests = {
fields = [
"title"
"number"
"body"
"updatedAt"
"state"
];
limit = 100;
state = "open";
sort_by = "require('cmp_git.sort').github.pull_requests";
format = "require('cmp_git.format').github.pull_requests";
};
};
gitlab = {
hosts = [ ];
issues = {
limit = 100;
state = "opened";
sort_by = "require('cmp_git.sort').gitlab.pull_requests";
format = "require('cmp_git.format').gitlab.pull_requests";
};
mentions = {
limit = 100;
sort_by = "require('cmp_git.sort').gitlab.mentions";
format = "require('cmp_git.format').gitlab.mentions";
};
merge_requests = {
limit = 100;
state = "opened";
sort_by = "require('cmp_git.sort').gitlab.merge_requests";
format = "require('cmp_git.format').gitlab.merge_requests";
};
};
trigger_actions = [
{
debug_name = "git_commits";
trigger_character = ":";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.git:get_commits(callback, params, trigger_char)
end
'';
}
{
debug_name = "gitlab_issues";
trigger_character = "#";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.gitlab:get_issues(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "gitlab_mentions";
trigger_character = "@";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.gitlab:get_mentions(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "gitlab_mrs";
trigger_character = "!";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.gitlab:get_merge_requests(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "github_issues_and_pr";
trigger_character = "#";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.github:get_issues_and_prs(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "github_mentions";
trigger_character = "@";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.github:get_mentions(callback, git_info, trigger_char)
end
'';
}
];
};
};
};
example = {
plugins = {
cmp = {
enable = true;
settings.sources = [ { name = "git"; } ];
};
cmp-git.settings = {
remotes = [
"upstream"
"origin"
"foo"
];
github = {
issues = {
filter = "all";
limit = 250;
state = "all";
format = ''
function(_, issue)
local icon = ({
open = '',
closed = '',
})[string.lower(issue.state)]
return string.format('%s #%d: %s', icon, issue.number, issue.title)
end
'';
sort_by = ''
function(issue)
local kind_rank = issue.pull_request and 1 or 0
local state_rank = issue.state == 'open' and 0 or 1
local age = os.difftime(os.time(), require('cmp_git.utils').parse_github_date(issue.updatedAt))
return string.format('%d%d%010d', kind_rank, state_rank, age)
end
'';
filter_fn.__raw = ''
function(trigger_char, issue)
return string.format('%s %s %s', trigger_char, issue.number, issue.title)
end
'';
};
mentions = {
limit = 250;
sort_by = null;
filter_fn.__raw = ''
function(trigger_char, mention)
return string.format('%s %s %s', trigger_char, mention.username)
end
'';
};
pull_requests = {
limit = 250;
state = "all";
format = ''
function(_, pr)
local icon = ({
open = '',
closed = '',
})[string.lower(pr.state)]
return string.format('%s #%d: %s', icon, pr.number, pr.title)
end
'';
sort_by = ''
function(pr)
local state_rank = pr.state == 'open' and 0 or 1
local age = os.difftime(os.time(), require('cmp_git.utils').parse_github_date(pr.updatedAt))
return string.format('%d%010d', state_rank, age)
end
'';
filter_fn.__raw = ''
function(trigger_char, pr)
return string.format('%s %s %s', trigger_char, pr.number, pr.title)
end
'';
};
};
trigger_actions = [
{
debug_name = "git_commits";
trigger_character = ":";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.git:get_commits(callback, params, trigger_char)
end
'';
}
{
debug_name = "github_issues";
trigger_character = "#";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.github:get_issues(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "github_pulls";
trigger_character = "!";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.github:get_pull_requests(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "github_mentions";
trigger_character = "@";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.github:get_mentions(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "gitlab_issues";
trigger_character = "#";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.gitlab:get_issues(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "gitlab_mentions";
trigger_character = "@";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.gitlab:get_mentions(callback, git_info, trigger_char)
end
'';
}
{
debug_name = "gitlab_mrs";
trigger_character = "!";
action = ''
function(sources, trigger_char, callback, params, git_info)
return sources.gitlab:get_merge_requests(callback, git_info, trigger_char)
end
'';
}
];
};
};
};
}