Plugin
plugin dilazyvim bisa diinstall dari local ataupun lewat github
Local
lazyvim bisa load dari local komputer yang sudah kita buat sendiri plugin lazyvim terdiri dari file berikut
myplugin/
├── .git
├── lua/
│ ├── myplugin/ # nama ini akan digunakan sebagai pemanggilan di neovim
│ │ ├── init.lua # Main module
│ │ ├── commands.lua # Custom commands
│ │ ├── autocmds.lua # Auto-commands
│ │ └── utils/ # Submodules
│ │ ├── logger.lua
│ │ └── validator.lua
├── doc/
│ └── myplugin.txt # Dokumentasi Vim help
└── tests/
├── spec/
│ └── main_spec.lua # Test suite
└── fixtures/ # Test data
init.lua
file ini akan dipanggil pertama kalai ketika plugin diload didalam file ini terdapa kode seperti ini
myplugin/lua/myplugin/init.lua
local M = {}
-- Default configuration
M.config = {
enabled = true,
message = "Hello from my plugin!"
}
function M.setup(user_config)
-- other code
end
-- create command
function M._setup_commands()
vim.api.nvim_create_user_command("MyPluginHello", function()
print(M.config.message)
end, {})
end
return M
kemudian setelah membuat file init.luanya, langkah selanjutnya yaitu melakukan register ke config lazyvimnya
buat file di folder ~/.config/nvim/lua/plugins/my-plugin.lua
tambahkan kode ini
return {
{
dir = "~/Downloads/lua/plugins/alert",
config = function()
vim.notify("test plugin", vim.log.levels.INFO)
local alert = require("alert")
alert.setup()
alert._setup_commands()
end,
},
}
reload lazyvim
mode:normal
:Lazy reload alert
Test
untuk melakukan uji coba pluginnya, perlu terlebih dahulu untuk refresh pluginnya agar perubahan yang dilakukan dapat diload oleh nvim
mode:normal
:Lazy reload <plugin-name>
<!-- example -->
:Lazy reload my-plugin
4. Debugging
-- Print debugging
print("Nilai variabel:", vim.inspect(data))
-- Notifikasi popup
vim.notify("Status: " .. status, vim.log.levels.WARN)
-- Log ke file
local log = io.open("/tmp/plugin.log", "a")
log:write(os.date() .. " - Log message\n")
log:close()
6. Best Practices
- Gunakan
vim.validate()untuk validasi config - Dokumentasi fungsi dengan annotation:
--- Setup function
-- @param config table: Konfigurasi plugin - Handle error dengan
pcall() - Gunakan
vim.schedule()untuk operasi async
Workflow Development
- Edit → 2. Reload (
:Lazy reload) → 3. Test → 4. Commit