aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorSquibid <me@zacharyscheiman.com>2023-07-18 09:25:40 +0000
committerSquibid <me@zacharyscheiman.com>2023-07-18 09:25:40 +0000
commit20ef83bcaaf46b45571879915e6df957a15e2504 (patch)
tree19e4ea2642d23f2a5f485832555de251f605a12e /lua
downloadgit-yodel-20ef83bcaaf46b45571879915e6df957a15e2504.tar.gz
git-yodel-20ef83bcaaf46b45571879915e6df957a15e2504.tar.bz2
git-yodel-20ef83bcaaf46b45571879915e6df957a15e2504.zip
aaa
Diffstat (limited to '')
-rw-r--r--lua/git-yodel.lua21
-rw-r--r--lua/modules/buf.lua15
-rw-r--r--lua/utils/simple.lua22
3 files changed, 58 insertions, 0 deletions
diff --git a/lua/git-yodel.lua b/lua/git-yodel.lua
new file mode 100644
index 0000000..5f9a711
--- /dev/null
+++ b/lua/git-yodel.lua
@@ -0,0 +1,21 @@
+local buf = require('modules.buf')
+local sim = require('utils.simple')
+
+local M = {}
+
+local function commitdiff()
+ local bufa = buf.create(true, false, 'Commit Diff')
+ local conta = sim.cmdcontent('git diff --cached')
+ if conta == nil then return end -- make sure we're setting from nothing
+ vim.api.nvim_buf_set_option(bufa, 'ft', 'diff')
+ vim.api.nvim_buf_set_lines(bufa, 0, -1, false, conta)
+ buf.lock(bufa)
+end
+
+vim.api.nvim_create_autocmd('FileType', {
+ group = 'bufcheck',
+ papttern = { 'gitcommit', 'gitrebase' },
+ callback = commitdiff()
+})
+
+return M
diff --git a/lua/modules/buf.lua b/lua/modules/buf.lua
new file mode 100644
index 0000000..458e202
--- /dev/null
+++ b/lua/modules/buf.lua
@@ -0,0 +1,15 @@
+local M = {}
+
+function M.create(a, b, n)
+ local buf = vim.api.nvim_create_buf(a, b)
+ vim.api.nvim_buf_set_name(buf, n)
+ return buf
+end
+
+function M.lock(a)
+ a.nvim_buf_set_option(a, 'readonly', true)
+ a.nvim_buf_set_option(a, 'modifiable', false)
+ a.nvim_buf_set_option(a, 'modified', false)
+end
+
+return M
diff --git a/lua/utils/simple.lua b/lua/utils/simple.lua
new file mode 100644
index 0000000..637dcde
--- /dev/null
+++ b/lua/utils/simple.lua
@@ -0,0 +1,22 @@
+local M = {}
+
+function M.lower(a, b)
+ if a > b then return b else return a end
+end
+
+function M.tablelength(T)
+ local c = 0
+ for _ in pairs(T) do c = c + 1 end
+ return c
+end
+
+function M.cmdcontent(cmd)
+ local b = {}
+ local a = io.popen(cmd, 'r')
+ if a == nil then return end
+ for _ in a:lines() do table.insert(b, _) end
+ a:close()
+ return b
+end
+
+return M