nix-community.nixvim/plugins/by-name/gx/default.nix
Johan Larsson 16f92ff8a6 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>
2025-01-24 13:51:02 +00:00

122 lines
3.4 KiB
Nix

{ 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"
];
};
};
'';
}