Skip to main content

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

  1. Edit → 2. Reload (:Lazy reload) → 3. Test → 4. Commit