devbox run test- Run all tests using Busteddevbox run test:watch- Run tests in watch mode- Tests use Busted test framework with luassert assertions
- Use tabs for indentation
- Module pattern:
local M = {}andreturn M - Import style:
local module = require("neoment.module") - Function docs: Use
---comments with@paramand@returnannotations - Type annotations: Use
--- @typeand--- @classfor LSP support - Error handling: Use custom error monad pattern from
neoment.error - Async patterns: Use
vim.schedule()for UI updates from async contexts - Naming: snake_case for variables/functions, PascalCase for classes
- File organization: One module per file, grouped by functionality
- Tests: Use
describe()andit()with descriptive names - Vim API: Prefer
vim.api.*over legacyvim.fn.*where possible
- Matrix client implementation for Neovim
- Modular design with separate concerns (sync, rooms, storage, etc.)
- Custom error handling with Result-like pattern
- Async operation handling with proper scheduling