From 2ea0877394abac1c418d8a790ab82c19a60560ca Mon Sep 17 00:00:00 2001 From: Michel Date: Fri, 3 Jan 2025 00:15:46 +0100 Subject: [PATCH] Adds neotree support for optolith setup --- .config/nvim-notes/lua/addons/optolith.lua | 32 +++++++++++++++---- .../xfconf/xfce-perchannel-xml/thunar.xml | 2 +- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/.config/nvim-notes/lua/addons/optolith.lua b/.config/nvim-notes/lua/addons/optolith.lua index af909be..3dca6d3 100644 --- a/.config/nvim-notes/lua/addons/optolith.lua +++ b/.config/nvim-notes/lua/addons/optolith.lua @@ -1,13 +1,25 @@ local nio = require("nio") +local function startswith(string, start) + return string:sub(1, #start) == start +end + +local function get_current_path() + local currentBuffer = vim.fn.expand("%") + if not startswith(currentBuffer, "neo-tree") then + return currentBuffer + end + + local filesystemState = require("neo-tree.sources.manager").get_state("filesystem") + local currentLine = vim.fn.getpos(".")[2] + return filesystemState.tree:get_node(currentLine).path +end + vim.api.nvim_create_user_command("Optolith", function() local LAUNCH_COMMAND = vim.fs.normalize("~/.local/share/appimages/OptolithInsider.AppImage") local OPTOLITH_DIRECTORY = "~/.config/Optolith Insider" - local absOptolithDirectory = vim.fs.normalize(OPTOLITH_DIRECTORY) - local directoryExists = vim.fn.isdirectory(absOptolithDirectory) - - local currentHeroFile = vim.fn.expand("%") + local currentHeroFile = get_current_path() if currentHeroFile:find(".json$") == nil then vim.notify("Invalid hero", "error", { @@ -16,6 +28,8 @@ vim.api.nvim_create_user_command("Optolith", function() return end + local absOptolithDirectory = vim.fs.normalize(OPTOLITH_DIRECTORY) + local directoryExists = vim.fn.isdirectory(absOptolithDirectory) if directoryExists == 0 then vim.notify("Can't find folder. Please start the application once.\nFolder: " .. OPTOLITH_DIRECTORY, "error", { title = "Optolith", @@ -33,6 +47,12 @@ vim.api.nvim_create_user_command("Optolith", function() return end + local swapFileExists = vim.fn.empty(vim.fn.glob(heroesPath .. ".swp")) == 0 + if swapFileExists then + vim.notify("Swap file already exists. To prevent data loss, please restore the swap file.", "error", { + title = "Optolith", + }) + end if heroesFileExists then local mvCommand = os.execute(string.format('mv "%s" "%s.swp"', heroesPath, heroesPath)) if mvCommand ~= 0 then @@ -41,6 +61,7 @@ vim.api.nvim_create_user_command("Optolith", function() }) return end + swapFileExists = true end local linkCommand = os.execute(string.format('ln -s "%s" "%s"', currentHeroFile, heroesPath)) @@ -59,8 +80,6 @@ vim.api.nvim_create_user_command("Optolith", function() vim.fn.writefile({ vim.fn.json_encode(newData) }, currentHeroFile) end - local swapFileExists = vim.fn.empty(vim.fn.glob(heroesPath .. ".swp")) == 0 - local task = nio.run(function() local process = nio.process.run({ cmd = LAUNCH_COMMAND, @@ -68,7 +87,6 @@ vim.api.nvim_create_user_command("Optolith", function() process.result() end, function() - print("Execute") os.remove(heroesPath) if swapFileExists then os.execute(string.format('mv "%s.swp" "%s"', heroesPath, heroesPath)) diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml index 0636819..f31f680 100644 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml +++ b/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml @@ -11,7 +11,7 @@ - +