Thanks for helping improve blink-cmp-bibtex! This document captures the project
expectations so every change stays consistent with the MIT-licensed, blink-first
vision outlined in docs/spec.md.
- Neovim 0.9+ with blink.cmp installed for manual testing.
- Lua 5.1+ toolchain for linting/formatting. We recommend stylua and luacheck, though they are not hard requirements.
- Fork the repository and create a branch for your change.
- Read the Development Guide for architecture details and coding conventions.
- Run any available linting/formatting tools (
stylua,luacheck, etc.) before committing. Even if they are not installed locally, please keep.editorconfigconventions (tabs vs spaces, trailing whitespace) intact. - Manually test in Neovim when touching the completion source:
Add citation commands in
nvim --headless -u NONE -c "set rtp+=." -c "lua require('blink-cmp-bibtex')" -c q
.tex/.mdbuffers and ensure completions and APA previews appear as described in the README. - Update documentation alongside behavior changes. In particular, keep:
README.md(user-facing instructions) synchronized with implemented behaviordocs/spec.md(feature specification) aligned with the designdocs/api.md(API documentation) updated for API changes- Note: Changelogs are maintained by humans, not automated agents
- Open a pull request that describes the motivation, implementation details, and any testing performed. Reference related issues when applicable.
- All Lua code lives under
lua/blink-cmp-bibtex/and follows the module layout in the spec (config.lua,parser.lua,scan.lua,cache.lua,init.lua). - Use JSDoc-style comments for all functions with
@param,@return, and description annotations. - Avoid copying GPL-licensed code. Implement features from scratch or cite a permissive source.
- Prefer small, composable helpers over large monolithic functions. Async work should schedule callbacks using blink.cmp's recommended patterns.
- Use
vim.uv or vim.loopfor backward compatibility with older Neovim versions. - Follow the patterns in
docs/development.mdfor error handling and API usage.
All documentation should be written in English. When adding or modifying features:
- Update inline code comments (JSDoc-style)
- Update
docs/api.mdfor API changes - Update
README.mdfor user-visible changes - Update
docs/development.mdif adding architectural patterns
Note: Changelogs are maintained by repository maintainers, not automated agents.
Please include Neovim version, blink.cmp version, the relevant snippet of your configuration, and (when possible) a minimal BibTeX file that reproduces the problem. This makes it easier to replicate issues across environments.
For bugs, include:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Any error messages from
:messages
For feature requests, include:
- Use case description
- Example of how you'd like it to work
- Whether you're willing to contribute the implementation
Happy hacking!