mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-20 16:15:43 +02:00
plugins/gx: init
Strip `lib` from `lib.types.` Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com> Fix settingsExample expression Co-authored-by: Matt Sturgeon <matt@sturgeon.me.uk> Use '-version of options for better examples Fix indentation in example lua code Remove trailing space Replace use of literalLua with strings Revert to use literalLua Use lib.mkDefault Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>
This commit is contained in:
parent
683e5ea4b5
commit
16f92ff8a6
2 changed files with 186 additions and 0 deletions
122
plugins/by-name/gx/default.nix
Normal file
122
plugins/by-name/gx/default.nix
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib.nixvim) defaultNullOpts;
|
||||||
|
inherit (lib) types;
|
||||||
|
in
|
||||||
|
lib.nixvim.plugins.mkNeovimPlugin {
|
||||||
|
name = "gx";
|
||||||
|
packPathName = "gx.nvim";
|
||||||
|
package = "gx-nvim";
|
||||||
|
description = ''
|
||||||
|
Implementation of gx without the need of netrw.
|
||||||
|
'';
|
||||||
|
|
||||||
|
maintainers = [ lib.maintainers.jolars ];
|
||||||
|
|
||||||
|
extraOptions = {
|
||||||
|
disableNetrwGx = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "Disable the `gx` mapping in netrw.";
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = cfg: {
|
||||||
|
globals = lib.mkIf cfg.disableNetrwGx {
|
||||||
|
netrw_nogx = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
settingsOptions = {
|
||||||
|
open_browser_app = defaultNullOpts.mkStr null ''
|
||||||
|
Specify your browser app; default for macOS is `"open"`, Linux `"xdg-open"`
|
||||||
|
and Windows `"powershell.exe"`.
|
||||||
|
'';
|
||||||
|
|
||||||
|
open_browser_args = defaultNullOpts.mkListOf types.str [ ] ''
|
||||||
|
Arguments provided to the browser app, such as `--background` for macOS's `open`.
|
||||||
|
'';
|
||||||
|
|
||||||
|
handlers = defaultNullOpts.mkAttrsOf types.anything { } ''
|
||||||
|
Enable built-in handlers and configure custom ones. By default, all
|
||||||
|
handlers are disabled. To enable a built-in handler, set it to `true`.
|
||||||
|
'';
|
||||||
|
|
||||||
|
handler_options = {
|
||||||
|
search_engine = defaultNullOpts.mkStr "google" ''
|
||||||
|
Search engine to use when searching for text. Built-in options are
|
||||||
|
`"google"`, `"duckduckgo"`, `"ecosia"`, `"yandex"`, and `"bing"`. You
|
||||||
|
can also pass a custom search engine, such as
|
||||||
|
`"https://search.brave.com/search?q="`.
|
||||||
|
'';
|
||||||
|
|
||||||
|
select_for_search = defaultNullOpts.mkBool false ''
|
||||||
|
If your cursor is e.g. on a link, the pattern for the link AND for the word
|
||||||
|
will always match. This disables this behaviour for default so that the link is
|
||||||
|
opened without the select option for the word AND link.
|
||||||
|
'';
|
||||||
|
|
||||||
|
git_remotes = defaultNullOpts.mkListOf' {
|
||||||
|
type = types.str;
|
||||||
|
pluginDefault = [
|
||||||
|
"upstream"
|
||||||
|
"origin"
|
||||||
|
];
|
||||||
|
description = ''
|
||||||
|
List of git remotes to search for git issue linking, in priority.
|
||||||
|
You can also pass a function.
|
||||||
|
'';
|
||||||
|
example = lib.nixvim.literalLua ''
|
||||||
|
function(fname)
|
||||||
|
if fname:match("myproject") then
|
||||||
|
return { "mygit" }
|
||||||
|
end
|
||||||
|
return { "upstream", "origin" }
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
git_remote_push = defaultNullOpts.mkBool' {
|
||||||
|
type = types.bool;
|
||||||
|
pluginDefault = false;
|
||||||
|
description = ''
|
||||||
|
Whether to use the push url for git issue linking.
|
||||||
|
You can also pass a function.
|
||||||
|
'';
|
||||||
|
example = lib.nixvim.literalLua ''
|
||||||
|
function(fname)
|
||||||
|
return fname:match("myproject")
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
settingsExample = lib.literalExpression ''
|
||||||
|
{
|
||||||
|
open_browser_args = [ "--background" ];
|
||||||
|
handlers = {
|
||||||
|
rust = {
|
||||||
|
name = "rust";
|
||||||
|
filetype = [ "toml" ];
|
||||||
|
filename = "Cargo.toml";
|
||||||
|
handle.__raw = '''
|
||||||
|
function(mode, line, _)
|
||||||
|
local crate = require("gx.helper").find(line, mode, "(%w+)%s-=%s")
|
||||||
|
|
||||||
|
if crate then
|
||||||
|
return "https://crates.io/crates/" .. crate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
''';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
handler_options = {
|
||||||
|
search_engine = "duckduckgo";
|
||||||
|
git_remotes = [
|
||||||
|
"origin"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
}
|
64
tests/test-sources/plugins/by-name/gx/default.nix
Normal file
64
tests/test-sources/plugins/by-name/gx/default.nix
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
{
|
||||||
|
empty = {
|
||||||
|
plugins.gx.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
default = {
|
||||||
|
plugins.gx = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
disableNetrwGx = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
open_browser_app = null;
|
||||||
|
open_browser_args = [ ];
|
||||||
|
handlers = { };
|
||||||
|
handler_options = {
|
||||||
|
search_engine = "google";
|
||||||
|
select_for_search = false;
|
||||||
|
git_remotes = [
|
||||||
|
"upstream"
|
||||||
|
"origin"
|
||||||
|
];
|
||||||
|
git_remote_push = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
example = {
|
||||||
|
plugins.gx = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
handlers = {
|
||||||
|
rust = {
|
||||||
|
name = "rust";
|
||||||
|
filetype = [ "toml" ];
|
||||||
|
filename = "Cargo.toml";
|
||||||
|
handle.__raw = ''
|
||||||
|
function(mode, line, _)
|
||||||
|
local crate = require("gx.helper").find(line, mode, "(%w+)%s-=%s")
|
||||||
|
|
||||||
|
if crate then
|
||||||
|
return "https://crates.io/crates/" .. crate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
handler_options = {
|
||||||
|
search_engine = "duckduckgo";
|
||||||
|
git_remotes.__raw = ''
|
||||||
|
function(fname)
|
||||||
|
if fname:match("myproject") then
|
||||||
|
return { "mygit" }
|
||||||
|
end
|
||||||
|
return { "upstream", "origin" }
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue