1
0
Fork 0
mirror of https://github.com/nix-community/nixvim.git synced 2025-12-12 12:01:10 +01:00

plugins/tv: init

This commit is contained in:
Heitor Augusto 2025-12-05 18:09:15 -03:00 committed by Gaétan Lepage
parent 0671df0b57
commit 264ff4c5e6
3 changed files with 140 additions and 0 deletions

View file

@ -0,0 +1,18 @@
{ lib, ... }:
lib.nixvim.plugins.mkNeovimPlugin {
name = "tv";
package = "tv-nvim";
dependencies = [
"fd"
"television"
];
maintainers = [ lib.maintainers.HeitorAugustoLN ];
settingsExample = {
global_keybindings.channels = "<leader>tv";
quickfix.auto_open = false;
tv_binary = "tv";
};
}

View file

@ -0,0 +1,121 @@
{ lib }:
{
empty = {
plugins.tv.enable = true;
};
defaults = {
plugins.tv = {
enable = true;
settings = {
window = {
width = 0.8;
height = 0.8;
border = "none";
title = " tv.nvim ";
title_pos = "center";
};
channels = {
files = {
keybinding = "<C-p>";
handlers = {
"<CR>" = lib.nixvim.mkRaw "require('tv').handlers.open_as_files";
"<C-q>" = lib.nixvim.mkRaw "require('tv').handlers.send_to_quickfix";
"<C-s>" = lib.nixvim.mkRaw "require('tv').handlers.open_in_split";
"<C-v>" = lib.nixvim.mkRaw "require('tv').handlers.open_in_vsplit";
"<C-y>" = lib.nixvim.mkRaw "require('tv').handlers.copy_to_clipboard";
};
};
text = {
keybinding = "<leader><leader>";
handlers = {
"<CR>" = lib.nixvim.mkRaw "require('tv').handlers.open_at_line";
"<C-q>" = lib.nixvim.mkRaw "require('tv').handlers.send_to_quickfix";
"<C-s>" = lib.nixvim.mkRaw "require('tv').handlers.open_in_split";
"<C-v>" = lib.nixvim.mkRaw "require('tv').handlers.open_in_vsplit";
"<C-y>" = lib.nixvim.mkRaw "require('tv').handlers.copy_to_clipboard";
};
};
git-log = {
keybinding = "<leader>gl";
handlers = {
"<CR>" = lib.nixvim.mkRaw ''
function(entries, config)
if #entries > 0 then
vim.cmd('enew | setlocal buftype=nofile bufhidden=wipe')
vim.cmd('silent 0read !git show ' .. vim.fn.shellescape(entries[1]))
vim.cmd('1delete _ | setlocal filetype=git nomodifiable')
vim.cmd('normal! gg')
end
end
'';
"<C-y>" = lib.nixvim.mkRaw "require('tv').handlers.copy_to_clipboard";
};
};
git-branch = {
keybinding = "<leader>gb";
handlers = {
"<CR>" = lib.nixvim.mkRaw "require('tv').handlers.execute_shell_command('git checkout {}')";
"<C-y>" = lib.nixvim.mkRaw "require('tv').handlers.copy_to_clipboard";
};
};
docker-images = {
keybinding = "<leader>di";
window = {
title = " Docker Images ";
};
handlers = {
"<CR>" = lib.nixvim.mkRaw ''
function(entries, config)
if #entries > 0 then
vim.ui.input({
prompt = 'Container name: ',
default = 'my-container',
}, function(name)
if name and name ~= "" then
local cmd = string.format('docker run -it --name %s %s', name, entries[1])
vim.cmd('!' .. cmd)
end
end)
end
end
'';
"<C-y>" = lib.nixvim.mkRaw "require('tv').handlers.copy_to_clipboard";
};
};
env = {
keybinding = "<leader>ev";
handlers = {
"<CR>" = lib.nixvim.mkRaw "require('tv').handlers.insert_at_cursor";
"<C-l>" = lib.nixvim.mkRaw "require('tv').handlers.insert_on_new_line";
"<C-y>" = lib.nixvim.mkRaw "require('tv').handlers.copy_to_clipboard";
};
};
alias = {
keybinding = "<leader>al";
handlers = {
"<CR>" = lib.nixvim.mkRaw "require('tv').handlers.insert_at_cursor";
"<C-y>" = lib.nixvim.mkRaw "require('tv').handlers.copy_to_clipboard";
};
};
};
global_keybindings.channels = "<leader>tv";
quickfix.auto_open = false;
tv_binary = "tv";
};
};
};
example = {
plugins.tv = {
enable = true;
settings = {
global_keybindings.channels = "<leader>tv";
quickfix.auto_open = false;
tv_binary = "tv";
};
};
};
}

View file

@ -16,6 +16,7 @@ tro = "tro" # ./plugins/utils/spectre.nix
protols = "protols" # ./plugins/lsp/lsp-packages.nix
compatibilty = "compatibilty" # ./plugins/by-name/visual-multi/default.nix
Maco = "Maco" # ./plugins/by-name/femaco
enew = "enew" # ./tests/test-sources/plugins/by-name/tv/default.nix
[type.patch]
extend-glob = ["*.patch"]