fix: yazi opener

This commit is contained in:
danny 2025-12-30 16:24:54 +08:00
parent 27482b20d7
commit 53b83b3471
4 changed files with 58 additions and 41 deletions

View file

@ -1,5 +1,6 @@
{
osConfig,
config,
pkgs,
lib,
inputs,
@ -7,7 +8,7 @@
}:
let
inherit (lib.generators) mkLuaInline;
inherit (lib) concatStringsSep;
inherit (lib) concatStringsSep optionalString;
suda-nvim = pkgs.vimUtils.buildVimPlugin {
name = "vim-suda";
@ -23,6 +24,8 @@ let
name = "marks-nvim";
src = inputs.marks-nvim;
};
yaziOpenDir = config.programs.nvf.settings.vim.utility.yazi-nvim.setupOpts.open_for_directories;
in
{
imports = [
@ -44,6 +47,9 @@ in
vim = {
enableLuaLoader = true;
vimAlias = true;
luaConfigPre = ''
${optionalString yaziOpenDir "vim.g.loaded_netrwPlugin = 1"}
'';
extraPackages = with pkgs; [
nixfmt
];
@ -535,6 +541,7 @@ in
yazi-nvim = {
enable = true;
setupOpts.open_for_directories = true;
mappings.openYaziDir = "<leader>-";
mappings.openYazi = "<leader>e";
};

View file

@ -1,5 +1,6 @@
{
lib,
pkgs,
config,
osConfig,
...
@ -11,6 +12,17 @@ let
dataDir = "${config.home.homeDirectory}/${relativeDir}";
in
{
programs.nvf.settings.vim.extraPackages = with pkgs; [
imagemagick # for image.nvim
];
programs.nvf.settings.vim.utility.images.image-nvim = {
enable = true;
setupOpts = {
backend = "kitty";
};
};
programs.nvf.settings.vim.utility.leetcode-nvim = {
enable = true;
setupOpts = {
@ -18,7 +30,7 @@ in
lang = "rust";
plugins.non_standalone = true;
storage.home = mkLuaInline ''"${dataDir}"'';
injector = mkLuaInline ''
injector = mkLuaInline /* lua */ ''
{
['rust'] = {
before = { '#[allow(dead_code)]', 'fn main() {}', '#[allow(dead_code)]', 'struct Solution;' },
@ -26,42 +38,39 @@ in
}
'';
hooks."question_enter" = [
(mkLuaInline
# lua
''
function (question)
if question.lang ~= 'rust' then
return
end
local config = require("leetcode.config")
local problem_dir = config.user.storage.home .. "/Cargo.toml"
local content = [[
[package]
name = "leetcode"
edition = "2024"
[lib]
name = "%s"
path = "%s"
[dependencies]
rand = "0.8"
regex = "1"
itertools = "0.14.0"
]]
local file = io.open(problem_dir, "w")
if file then
local formatted = (content:gsub(" +", "")):format(question.q.frontend_id, question:path())
file:write(formatted)
file:close()
else
print("Failed to open file " .. problem_dir)
end
(mkLuaInline /* lua */ ''
function (question)
if question.lang ~= 'rust' then
return
end
''
)
local config = require("leetcode.config")
local problem_dir = config.user.storage.home .. "/Cargo.toml"
local content = [[
[package]
name = "leetcode"
edition = "2024"
[lib]
name = "%s"
path = "%s"
[dependencies]
rand = "0.8"
regex = "1"
itertools = "0.14.0"
]]
local file = io.open(problem_dir, "w")
if file then
local formatted = (content:gsub(" +", "")):format(question.q.frontend_id, question:path())
file:write(formatted)
file:close()
else
print("Failed to open file " .. problem_dir)
end
end
'')
];
};
};

View file

@ -66,7 +66,7 @@ in
opener = {
edit = [
{
run = ''''\${EDITOR:=nvim} "$0"'';
run = ''''\${EDITOR:=nvim} "$1"'';
desc = "$EDITOR";
block = true;
}
@ -77,12 +77,12 @@ in
];
player = [
{ run = ''mpv --force-window "$0"''; }
{ run = ''mpv --force-window "$1"''; }
];
open = [
{
run = ''xdg-open "$0"'';
run = ''xdg-open "$1"'';
desc = "Open";
}
];

View file

@ -171,8 +171,9 @@ in
"application/xhtml+xml"
"application/json"
"application/pdf"
"text/plain"
"text/html"
"image/png"
"image/jpeg"
]
);
in