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