0Pricing
Lua Academy · Pelajaran

Mengemas Plugin

Susun dan bagikan plugin.

Mengemas Plugin adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Tata Letak Direktori Pengaya

Pengaya Neovim hanyalah sebuah direktori pada runtimepath. Tata letak konvensionalnya memiliki folder tingkat atas yang diperlakukan secara khusus oleh Neovim.

Direktori utama: lua/ untuk modul, plugin/ untuk penyiapan yang dimuat otomatis, ftplugin/ untuk skrip jenis berkas, doc/ untuk bantuan, dan after/ untuk penggantian yang dijalankan belakangan.

-- myplugin/
--   lua/myplugin/init.lua
--   plugin/myplugin.lua
--   doc/myplugin.txt

Direktori lua/

Berkas di bawah lua/ dapat diakses dengan require. Modul di lua/myplugin/init.lua dimuat sebagai require('myplugin').

Penyusunan bertingkat dipetakan ke jalur bertitik: lua/myplugin/config.lua menjadi require('myplugin.config'). Dengan cara inilah pengaya menyediakan ruang nama publik yang rapi.

-- in lua/myplugin/init.lua
local M = {}
function M.hello() print('hi') end
return M

Mengembalikan Tabel Modul

Pola modul yang lazim mendeklarasikan tabel lokal M, menambahkan fungsi ke dalamnya, lalu mengembalikannya. Pemanggil kemudian mengakses require('myplugin').hello().

Pertahankan fungsi pembantu internal sebagai lokal biasa agar hanya bagian antarmuka yang dimaksudkan yang bersifat publik. Pola ini mencerminkan enkapsulasi modul dalam ekosistem lain.

local M = {}
local function private() end
function M.run() private() end
return M

Konvensi setup()

Sebagian besar pengaya menyediakan fungsi setup(opts). Fungsi ini menggabungkan opsi pengguna dengan nilai bawaan dan melakukan inisialisasi seperti membuat perintah serta perintah otomatis.

Gunakan vim.tbl_deep_extend('force', defaults, opts or {}) agar konfigurasi pengguna yang hanya sebagian tetap mendapatkan semua nilai bawaan.

local M = {}
local defaults = { width = 40 }
function M.setup(opts)
  M.config = vim.tbl_deep_extend('force', defaults, opts or {})
end
return M

Direktori plugin/

Skrip di dalam plugin/ berjalan otomatis saat Neovim dimulai, setelah runtimepath dibangun. Buat skrip tersebut sesingkat mungkin.

Tugas yang umum adalah mendaftarkan perintah atau penjaga agar modul berat dimuat secara malas. Hindari pekerjaan yang mahal di sini; tunda ke setup atau perintah otomatis agar proses awal tetap cepat.

-- in plugin/myplugin.lua
if vim.g.loaded_myplugin then return end
vim.g.loaded_myplugin = true

Penjaga Pemuatan

Penjaga pemuatan mencegah inisialisasi ganda jika berkas dimuat ulang. Tetapkan penanda vim.g.loaded_* dan hentikan proses lebih awal saat pemuatan ulang.

Hal ini penting karena pengelola pengaya dan :runtime dapat memuat ulang berkas, sedangkan perintah atau perintah otomatis yang didaftarkan dua kali dapat menyebabkan masalah yang sulit terlihat.

if vim.g.loaded_myplugin == 1 then return end
vim.g.loaded_myplugin = 1

Pemuatan Malas

Proses awal yang cepat berarti kode hanya dimuat saat diperlukan. Daftarkan perintah ringan di plugin/ yang memerlukan modul berat saat pertama kali digunakan.

Pengelola pengaya seperti lazy.nvim memformalkan hal ini dengan pemicu cmd, ft, dan keys, sehingga modul Anda tidak diakses sampai dipanggil.

vim.api.nvim_create_user_command('MyStart', function()
  require('myplugin').run()
end, {})

Jalur Runtime dan Jalur Paket

Neovim menemukan pengaya dengan memindai runtimepath. Sistem paket bawaan memuat direktori di bawah pack/*/start/ secara otomatis dan pack/*/opt/ sesuai kebutuhan melalui :packadd.

Sebagian besar pengguna mengandalkan pengelola, tetapi memahami runtimepath menjelaskan cara direktori Anda ditemukan.

print(vim.o.runtimepath:sub(1, 60))
-- :packadd loads an opt plugin manually

Pemeriksaan Kesehatan

Sediakan lua/myplugin/health.lua dengan fungsi check agar pengguna dapat menjalankan :checkhealth myplugin. Laporkan status menggunakan API vim.health.

Gunakan vim.health.start, vim.health.ok, vim.health.warn, dan vim.health.error untuk menampilkan dependensi yang hilang dengan jelas.

local M = {}
function M.check()
  vim.health.start('myplugin')
  vim.health.ok('all good')
end
return M

Dokumentasi dan Tag

Sertakan berkas bantuan doc/myplugin.txt. Jalankan :helptags doc/ (atau biarkan pengelola yang menjalankannya) untuk membuat indeks tag agar :help myplugin berfungsi.

Dokumentasi yang baik mencantumkan perintah, opsi setup, dan pemetaan tombol bawaan, sehingga pengaya Anda mudah ditemukan dari dalam Neovim.

-- generate tags from the doc directory
vim.cmd('helptags ' .. vim.fn.expand('%:p:h'))

Pemberian Versi dan Penerbitan

Simpan pengaya di repositori git; pengguna memasangnya melalui jalur owner/repo. Beri tag pada rilis secara semantik agar pengelola dapat mengunci versi.

Sertakan README dengan cuplikan pemasangan untuk pengelola populer, lisensi, dan contoh konfigurasi minimal untuk mengurangi hambatan penggunaan.

-- lazy.nvim spec
-- { 'owner/myplugin', config = function()
--     require('myplugin').setup({})
--   end }

Pemeriksaan Singkat

Pastikan pemahaman Anda tentang pengemasan pengaya.

Ringkasan: Mengemas Pengaya

Pengaya adalah direktori runtimepath dengan modul lua/, skrip plugin/ yang berjalan otomatis, serta berkas opsional doc/, ftplugin/, dan berkas pemeriksaan kesehatan.

Kembalikan tabel modul, sediakan setup yang menggabungkan nilai bawaan, cegah pemuatan ganda, muat kode berat secara malas, dokumentasikan dengan indeks bantuan, lalu terbitkan melalui git dengan tag versi semantik.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengemas Plugin” gratis?

Ya — teks lengkap “Mengemas Plugin” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengemas Plugin”?

Susun dan bagikan plugin. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Mengemas Plugin” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. API Lua Neovim
  2. Perintah dan Pemetaan Tombol
  3. Buffer dan Jendela
  4. Mengemas Plugin
← Kembali ke Lua Academy