summaryrefslogtreecommitdiffstatshomepage
path: root/nvim
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2022-12-29 21:26:43 -0600
committerToby Vincent <tobyv13@gmail.com>2022-12-29 21:26:43 -0600
commitfe49a507184b0bb6fd877a6d97723eb5fd4811c9 (patch)
tree8d52c5b418621e5f21c95107fefa9705892e6069 /nvim
parent228ec7b653a79a13e8dc8ebf6fc4d5588dd98373 (diff)
feat(nvim): add start buffer
Diffstat (limited to 'nvim')
-rw-r--r--nvim/.config/nvim/lua/tobyvin.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils/start.lua97
2 files changed, 98 insertions, 1 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin.lua b/nvim/.config/nvim/lua/tobyvin.lua
index 755d403..8a93bfa 100644
--- a/nvim/.config/nvim/lua/tobyvin.lua
+++ b/nvim/.config/nvim/lua/tobyvin.lua
@@ -1,7 +1,7 @@
require("tobyvin.options")
require("tobyvin.keymaps")
require("tobyvin.lazy")
-
+require("tobyvin.utils.start")
vim.cmd([[colorscheme gruvbox]])
vim.api.nvim_create_autocmd("User", {
diff --git a/nvim/.config/nvim/lua/tobyvin/utils/start.lua b/nvim/.config/nvim/lua/tobyvin/utils/start.lua
new file mode 100644
index 0000000..ae3cd52
--- /dev/null
+++ b/nvim/.config/nvim/lua/tobyvin/utils/start.lua
@@ -0,0 +1,97 @@
+local header = {
+ " ",
+ " ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ",
+ " ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ",
+ " ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ",
+ " ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ",
+ " ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ",
+ " ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ",
+ " ",
+}
+
+local function should_skip()
+ -- don't start when opening a file
+ if vim.fn.argc() > 0 then
+ return true
+ end
+
+ -- skip stdin
+ if vim.fn.line2byte(vim.fn.line("$")) ~= -1 then
+ return true
+ end
+
+ -- Handle nvim -M
+ if not vim.o.modifiable then
+ return true
+ end
+
+ for _, arg in pairs(vim.v.argv) do
+ -- whitelisted arguments
+ -- always open
+ if arg == "--startuptime" then
+ return false
+ end
+
+ -- blacklisted arguments
+ -- always skip
+ if
+ arg == "-b"
+ -- commands, typically used for scripting
+ or arg == "-c"
+ or vim.startswith(arg, "+")
+ or arg == "-S"
+ then
+ return true
+ end
+ end
+
+ -- base case: don't skip
+ return false
+end
+
+local function pad_string(str, pad, count)
+ for _ = 1, count do
+ str = pad .. str
+ end
+ return str
+end
+
+if should_skip() then
+ return
+end
+
+local buf = vim.api.nvim_create_buf(true, true)
+
+local width = vim.api.nvim_win_get_width(0)
+local pad_width = math.floor((width / 2) - (#header[1] / 2))
+
+for i, _ in ipairs(header) do
+ header[i] = pad_string(header[i], " ", pad_width)
+end
+
+vim.api.nvim_buf_set_lines(buf, 0, -1, false, header)
+
+vim.bo[buf].modifiable = false
+vim.bo[buf].buflisted = false
+
+vim.api.nvim_set_current_buf(buf)
+
+vim.opt_local.textwidth = 0
+vim.opt_local.bufhidden = "wipe"
+vim.opt_local.buflisted = false
+vim.opt_local.matchpairs = ""
+vim.opt_local.swapfile = false
+vim.opt_local.buftype = "nofile"
+vim.opt_local.filetype = "alpha"
+vim.opt_local.synmaxcol = 0
+vim.opt_local.wrap = false
+vim.opt_local.colorcolumn = ""
+vim.opt_local.foldlevel = 999
+vim.opt_local.foldcolumn = "0"
+vim.opt_local.cursorcolumn = false
+vim.opt_local.cursorline = false
+vim.opt_local.number = false
+vim.opt_local.relativenumber = false
+vim.opt_local.list = false
+vim.opt_local.spell = false
+vim.opt_local.signcolumn = "no"