From cd6efe97c41be6ec5ccda57b53a835968acfdd79 Mon Sep 17 00:00:00 2001 From: HampusM Date: Wed, 17 Jan 2024 01:02:10 +0100 Subject: octo --- lua/autocommands/buffer.lua | 4 +++ lua/functions.lua | 72 +++++++++++++++++++++++++++++++++++++++++++++ lua/plugins.lua | 18 +++++++++++- 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/lua/autocommands/buffer.lua b/lua/autocommands/buffer.lua index da330c8..798baa6 100644 --- a/lua/autocommands/buffer.lua +++ b/lua/autocommands/buffer.lua @@ -2,3 +2,7 @@ require("utility.autocmd") -- autocmd("BufEnter", "*", "lua remove_hidden_windowless_buffers()") +autocmd("BufEnter", "octo://*/*/review*", "lua prepare_pr_review_curr_buf()") + +autocmd("BufLeave", "octo://*/*/review*", "lua unprepare_pr_review_curr_buf()") + diff --git a/lua/functions.lua b/lua/functions.lua index 12eca3a..8278ff0 100644 --- a/lua/functions.lua +++ b/lua/functions.lua @@ -12,6 +12,23 @@ function table.filter(list, predicate) return filtered_list end +local function split(inputstr, sep) + if sep == nil then + sep = "%s" + end + local t={} + for str in string.gmatch(inputstr, "([^"..sep.."]+)") do + table.insert(t, str) + end + return t +end + +local function file_exists(name) + local f=io.open(name,"r") + + if f~=nil then io.close(f) return true else return false end +end + function _G.check_back_space() local col = vim.api.nvim_win_get_cursor(0)[2] @@ -122,3 +139,58 @@ function _G.close_current_buffer() end end +num = vim.fn.system("od -A n -t d -N 3 /dev/random") + +num = num:gsub("%s+", "") +num = num:gsub("%s+", "") + +function _G.prepare_pr_review_curr_buf() + local buf_name = vim.fn.bufname() + + local buf_name_parts = split(buf_name, "/") + + local buf_file = buf_name_parts[#buf_name_parts] + local side = buf_name_parts[#buf_name_parts - 1] + + local tmp_file = "/tmp/nvim-pr-review-" .. num .. "-" + .. side .. "-" .. buf_file + + if file_exists(tmp_file) then + return + end + + local lines = vim.api.nvim_buf_get_lines(0, 0, -1, true) + + local file = io.open(tmp_file, "a") + + if file == nil then + error("Temporary file not created") + return + end + + for _, line in next, lines, nil do + file:write(line) + end + + file:close() + + vim.api.nvim_buf_set_name(0, tmp_file) +end + +function _G.unprepare_pr_review_curr_buf() + local buf_name = vim.fn.bufname() + + local buf_name_parts = split(buf_name, "/") + + local buf_file = buf_name_parts[#buf_name_parts] + local side = buf_name_parts[#buf_name_parts - 1] + + local tmp_file = "/tmp/nvim-pr-review-" .. num .. "-" + .. side .. "-" .. buf_file + + if file_exists(tmp_file) == false then + return + end + + os.remove(tmp_file) +end diff --git a/lua/plugins.lua b/lua/plugins.lua index 481bc87..e0a4122 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -14,7 +14,8 @@ return require("packer").startup(function(use) use "lukas-reineke/indent-blankline.nvim" -- Coc - use {"neoclide/coc.nvim", branch = "release"} + -- use {"neoclide/coc.nvim", branch = "release"} + use { "/home/hampus/Projects/coc.nvim", run = "yarn install --frozen-lockfile" } -- Syntax use "tikhomirov/vim-glsl" @@ -35,4 +36,19 @@ return require("packer").startup(function(use) -- Formatting use "alx741/vim-rustfmt" + + use { + "pwntester/octo.nvim", + commit = "c6b008434d684e746a40e443876b646b521cebbf", + requires = { + "nvim-lua/plenary.nvim", + "nvim-telescope/telescope.nvim", + "nvim-tree/nvim-web-devicons", + }, + config = function () + require "octo".setup() + end + } + + use "PhilRunninger/nerdtree-visual-selection" end) -- cgit v1.2.3-18-g5258