From 8564daf4b553993a68f3e87f41e215629a58ca95 Mon Sep 17 00:00:00 2001 From: yannickreiss Date: Thu, 17 Jul 2025 16:42:07 +0200 Subject: [PATCH] Create nix interpreter output --- lua/plugconfig.lua | 5 ++++ lua/plugins.lua | 7 +++--- lua/vanilla.lua | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/lua/plugconfig.lua b/lua/plugconfig.lua index d9e5c27..fcff2fe 100644 --- a/lua/plugconfig.lua +++ b/lua/plugconfig.lua @@ -25,6 +25,11 @@ require("pascal_mode") -- Ada mode (supported by plugins) require("ada_mode") +-- Markdown Preview +vim.g.mkdp_auto_start = 0 +vim.g.mkdp_browser = "epiphany" +vim.g.mkdp_echo_preview_url = 1 + -- Misc configuration if vim == nil then vim = {} diff --git a/lua/plugins.lua b/lua/plugins.lua index 3428124..5abec0b 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -61,10 +61,11 @@ return { { "iamcco/markdown-preview.nvim", cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, - ft = { "markdown" }, - build = function() - vim.fn["mkdp#util#install"]() + build = "cd app && npm install", + init = function() + vim.g.mkdp_filetypes = { "markdown" } end, + ft = { "markdown" }, }, -- Themes diff --git a/lua/vanilla.lua b/lua/vanilla.lua index fb2823e..5fc5d78 100644 --- a/lua/vanilla.lua +++ b/lua/vanilla.lua @@ -45,3 +45,61 @@ vim.keymap.set("n", "lm", ":set number") -- switch mode vim.keymap.set("n", "na", ":set norelativenumber") vim.keymap.set("n", "nr", ":set relativenumber") + +-- Nix mode +local nix_interpreter_buffer = -1 +local nix_interpreter_window = -1 + +-- @name run_nix_interpreter +-- @param +-- @short Run nix and output to a buffer on the right +local function run_nix_interpreter() + local original_win = vim.api.nvim_get_current_win() + vim.cmd("vsplit") + nix_interpreter_buffer = vim.api.nvim_create_buf(false, true) + vim.api.nvim_win_set_buf(0, nix_interpreter_buffer) + nix_interpreter_window = vim.api.nvim_get_current_win() + vim.api.nvim_set_current_win(original_win) +end + +-- @name update_nix_interpreter +-- @param +-- @short Run nix enterpreter on that file. +local function update_nix_interpreter() + local filename = vim.api.nvim_buf_get_name(0) + if filename == "" then + vim.api.nvim_buf_set_lines(nix_interpreter_buffer, 0, -1, false, { + "Error: Current buffer has no file name.", + }) + return + end + local cmd = { "nix-instantiate", "--eval", filename } + local output = vim.fn.systemlist(cmd) + if vim.v.shell_error ~= 0 then + table.insert(output, 1, "Error running nix-instantiate:") + end + vim.api.nvim_buf_set_lines(nix_interpreter_buffer, 0, -1, false, output) +end + +-- @name close_nix_interpreter +-- @param +-- @short Closes the window and buffer of the interpreter +local function close_nix_interpreter() + vim.api.nvim_buf_delete(nix_interpreter_buffer) + vim.api.nvim_win_close(nix_interpreter_window) +end + +vim.api.nvim_create_autocmd({ "BufEnter" }, { + pattern = { "*.nix" }, + callback = run_nix_interpreter, +}) + +vim.api.nvim_create_autocmd({ "BufWritePost" }, { + pattern = { "*.nix" }, + callback = update_nix_interpreter, +}) + +vim.api.nvim_create_autocmd({ "BufLeave" }, { + pattern = { "*.nix" }, + callback = close_nix_interpreter, +})