From 63a24f6eb047530234297460a9b7ccd6af0b9858 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 2 Nov 2024 23:24:33 +0100 Subject: [PATCH] feat: initial commit --- README.md | 13 +++++++++++ lua/snacks/bigfile.lua | 49 ++++++++++++++++++++++++++++++++++++++++++ selene.toml | 4 ++++ stylua.toml | 6 ++++++ vim.toml | 21 ++++++++++++++++++ 5 files changed, 93 insertions(+) create mode 100644 README.md create mode 100644 lua/snacks/bigfile.lua create mode 100644 selene.toml create mode 100644 stylua.toml create mode 100644 vim.toml diff --git a/README.md b/README.md new file mode 100644 index 00000000..b3b2daa5 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# Snacks + +- bigfile +- bufremove +- lazygit +- lsp +- quickfile +- rename +- root +- statuscolumn +- terminal +- toggle +- words diff --git a/lua/snacks/bigfile.lua b/lua/snacks/bigfile.lua new file mode 100644 index 00000000..2feae4b5 --- /dev/null +++ b/lua/snacks/bigfile.lua @@ -0,0 +1,49 @@ +local M = {} + +---@class snacks.bigfile.Config +local defaults = { + size = 1.5 * 1024 * 1024, -- 1.5MB + ---@param opts {buf: number, ft:string} + behave = function(opts) + vim.b.minianimate_disable = true + vim.schedule(function() + vim.bo.syntax = opts.ft + end) + vim.notify("Big file detected, syntax highlighting disabled", "warn") + end, +} + +---@param opts snacks.bigfile.Config? +function M.setup(opts) + opts = vim.tbl_deep_extend("force", defaults, opts or {}) + + vim.filetype.add({ + pattern = { + [".*"] = { + function(path, buf) + return vim.bo[buf] + and vim.bo[buf].filetype ~= "bigfile" + and path + and vim.fn.getfsize(path) > opts.size + and "bigfile" + or nil + end, + }, + }, + }) + + vim.api.nvim_create_autocmd({ "FileType" }, { + group = vim.api.nvim_create_augroup("snacks_bigfile", { clear = true }), + pattern = "bigfile", + callback = function(ev) + vim.api.nvim_buf_call(ev.buf, function() + opts.behave({ + buf = ev.buf, + ft = vim.filetype.match({ buf = ev.buf }) or "", + }) + end) + end, + }) +end + +return M diff --git a/selene.toml b/selene.toml new file mode 100644 index 00000000..5867a2a2 --- /dev/null +++ b/selene.toml @@ -0,0 +1,4 @@ +std="vim" + +[lints] +mixed_table="allow" diff --git a/stylua.toml b/stylua.toml new file mode 100644 index 00000000..9732fe64 --- /dev/null +++ b/stylua.toml @@ -0,0 +1,6 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 120 +[sort_requires] +enabled = true + diff --git a/vim.toml b/vim.toml new file mode 100644 index 00000000..df7e67e6 --- /dev/null +++ b/vim.toml @@ -0,0 +1,21 @@ +[selene] +base = "lua51" +name = "vim" + +[vim] +any = true + +[jit] +any = true + +[assert] +any = true + +[describe] +any = true + +[it] +any = true + +[before_each.args] +any = true