diff --git a/README.md b/README.md
index a080403d..b6c110f8 100644
--- a/README.md
+++ b/README.md
@@ -75,56 +75,56 @@ All you need to do is install Hotpot and call `require("hotpot")` before you
try to run any Fennel code.
-
Installing via Lazy.nvim or similar
-First lets setup our `init.lua` file. In this example we use the lazy.nvim
-plugin manager, but other plugin manager will follow the same pattern -- likely
-without the runtimepath alterations.
-
```lua
-- ~/.config/nvim/init.lua
-
--- As per lazy's install instructions
-local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
-if not vim.loop.fs_stat(lazypath) then
- vim.fn.system({
- "git",
- "clone",
- "--filter=blob:none",
- "https://github.com/folke/lazy.nvim.git",
- "--branch=stable", -- latest stable release
- lazypath,
- })
-end
-
--- Bootstap hotpot into lazy plugin dir if it does not exist yet.
-local hotpotpath = vim.fn.stdpath("data") .. "/lazy/hotpot.nvim"
-if not vim.loop.fs_stat(hotpotpath) then
- vim.notify("Bootstrapping hotpot.nvim...", vim.log.levels.INFO)
- vim.fn.system({
- "git",
- "clone",
- "--filter=blob:none",
- "--single-branch",
- "--branch=v0.13.1",
- "https://github.com/rktjmp/hotpot.nvim.git",
- hotpotpath,
- })
+local function ensure_installed(plugin, branch)
+ local user, repo = string.match(plugin, "(.+)/(.+)")
+ local repo_path = vim.fn.stdpath("data") .. "/lazy/" .. repo
+ if not (vim.uv or vim.loop).fs_stat(repo_path) then
+ vim.notify("Installing " .. plugin .. " " .. branch)
+ local repo_url = "https://github.com/" .. plugin .. ".git"
+ local out = vim.fn.system({
+ "git",
+ "clone",
+ "--filter=blob:none",
+ "--branch=" .. branch,
+ repo_url,
+ repo_path
+ })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone " .. plugin .. ":\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
+ end
+ return repo_path
end
+local lazy_path = ensure_installed("folke/lazy.nvim", "stable")
+local hotpot_path = ensure_installed("rktjmp/hotpot.nvim", "v0.13.1")
-- As per lazy's install instructions, but insert hotpots path at the front
-vim.opt.runtimepath:prepend({hotpotpath, lazypath})
+vim.opt.runtimepath:prepend({hotpot_path, lazy_path})
-require("hotpot") -- optionally you may call require("hotpot").setup(...) here
+require("hotpot") -- Optionally you may call require("hotpot").setup(...) here
--- include hotpot as a plugin so lazy will update it
+-- If you want to use lazy's "structured" style, you will need
+-- a `.hotpot.lua` file containing `return {build=true,clean=true}`
+-- so a `lua/` dir is generated for lazy to scan.
+-- See further down in the readme for details.
+
+-- Include hotpot as a plugin so lazy will update it
local plugins = {"rktjmp/hotpot.nvim"}
require("lazy").setup(plugins)
--- include the rest of your config
+-- Include the rest of your config
require("say-hello")
-````
+```
The `say-hello` module would be put in `~/.config/nvim/fnl/say-hello.fnl`:
@@ -135,8 +135,64 @@ The `say-hello` module would be put in `~/.config/nvim/fnl/say-hello.fnl`:
+
+Installing via MiniDeps
+
+```lua
+-- ~/.config/nvim/init.lua
+local path_package = vim.fn.stdpath('data') .. '/site/'
+local function ensure_installed(plugin, branch)
+ local user, repo = string.match(plugin, "(.+)/(.+)")
+ local repo_path = path_package .. 'pack/deps/start/' .. repo
+ if not (vim.uv or vim.loop).fs_stat(repo_path) then
+ vim.notify("Installing " .. plugin .. " " .. branch)
+ local repo_url = "https://github.com/" .. plugin
+ local out = vim.fn.system({
+ "git",
+ "clone",
+ "--filter=blob:none",
+ "--branch=" .. branch,
+ repo_url,
+ repo_path
+ })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone " .. plugin .. ":\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
+ vim.cmd('packadd ' .. repo .. ' | helptags ALL')
+ vim.cmd('echo "Installed `' .. repo ..'`" | redraw')
+ end
+end
+
+ensure_installed("echasnovski/mini.nvim", "stable")
+ensure_installed("rktjmp/hotpot.nvim", "v0.13.1")
+
+require("hotpot") -- Optionally you may call require("hotpot").setup(...) here
+require("mini.deps").setup({path = {package = path_package}})
+MiniDeps.add({source = "echasnovski/mini.nvim", checkout = "stable"})
+MiniDeps.add({source = "rktjmp/hotpot.nvim", checkout = "v0.13.1"})
+
+-- Include the rest of your config
+require("say-hello")
+```
+
+The `say-hello` module would be put in `~/.config/nvim/fnl/say-hello.fnl`:
+
+```fennel
+;; ~/.config/nvim/fnl/say-hello.fnl
+(print :hello!)
+```
+
+
+
+
Installing via Rocks.nvim
Install via the `Rocks` command or editing `rocks.toml`.
@@ -150,13 +206,12 @@ rest of your config.
```lua
-- ~/.config/nvim/init.lua
-
-- Likely you will have some code to ensure Rocks.nvim is installed here
-- ...
require("hotpot") -- optionally you may call require("hotpot").setup(...) here
--- include the rest of your config
+-- Include the rest of your config
require("say-hello")
````