Thank you for your interest in contributing to EnScript IDE! This document provides guidelines and instructions for contributing.
- Node.js 22.x
- npm (comes with Node.js)
- VS Code (for testing the extension)
-
Clone the repository:
git clone https://github.com/koncord/enscript-ide-extension.git cd enscript-ide-extension -
Install dependencies:
npm install
-
Build the extension:
npm run compile
-
Run tests:
npm test -
Start watch mode (for development):
npm run watch
- Open the project in VS Code
- Press
F5to launch the Extension Development Host - The extension will be loaded in a new VS Code window
- Open a
.cfile to test EnScript features
- We use ESLint for code linting
- TypeScript strict mode is enabled
- Run
npm run lintto check for issues - Run
npm run lint:fixto automatically fix issues
- Write tests for new features and bug fixes
- Place tests in the
test/directory - Run tests with
npm test - Ensure all tests pass before submitting a PR
Use descriptive branch names:
feature/add-something- for new featuresfix/resolve-issue- for bug fixesdocs/update-readme- for documentationrefactor/improve-code- for refactoring
Follow conventional commit format:
feat: add new completion providerfix: resolve hover information errordocs: update installation instructionschore: update dependenciestest: add tests for symbol lookuprefactor: improve diagnostics performance
-
Create a branch:
git checkout -b feature/your-feature-name
-
Make your changes:
- Write code
- Add/update tests
- Update documentation
-
Verify your changes:
npm run lint npm run check-types npm test npm run compile:prod -
Commit your changes:
git add . git commit -m "feat: your feature description"
-
Push to GitHub:
git push origin feature/your-feature-name
-
Create a Pull Request:
- Go to the repository on GitHub
- Click "New Pull Request"
- Fill out the PR template
- Link any related issues
Before your PR can be merged:
- ✅ All CI checks must pass
- ✅ Code must be reviewed by a maintainer
- ✅ Tests must be included (if applicable)
- ✅ Documentation must be updated (if applicable)
- ✅ No merge conflicts
enscript-ide-extension/
├── src/ # Client-side extension code
├── server/ # Language server implementation
│ └── src/
│ ├── lsp/ # LSP handlers and services
│ └── server/ # Core language server logic
├── syntaxes/ # TextMate grammars
├── test/ # Test files
└── .github/ # CI/CD and GitHub configurations
Use the Bug Report template and include:
- Clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Extension and VS Code versions
- Operating system
Use the Feature Request template and include:
- Problem you're trying to solve
- Proposed solution
- Alternative approaches considered
- Use cases and examples
- 💬 GitHub Discussions - Ask questions
- 🐛 Issues - Report bugs
- 📖 Documentation - Read the docs
- Be respectful and inclusive
- Welcome newcomers
- Give constructive feedback
- Focus on what's best for the community
This project is currently licensed under the GNU General Public License v3.0 (GPL-3.0).
See the LICENSE file for full terms.
All contributions to this repository are governed by the Contributor License Agreement (CLA) below, which grants the project owner the right to relicense the project under different or additional terms in the future.
By submitting a pull request, issue, patch, or any other contribution to this repository, you agree to be bound by this Contributor License Agreement.
You grant to Stanislav "Koncord" Zhukov (the "Project Owner") a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable license to:
- reproduce,
- prepare derivative works of,
- publicly display,
- publicly perform,
- sublicense, and
- distribute
your contributions and derivative works thereof, in source or binary form.
You grant to the Project Owner a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer your contribution, where such license applies only to those patent claims licensable by you that are necessarily infringed by your contribution or its combination with the project.
You acknowledge and agree that the Project Owner has the exclusive right to relicense the project, including your contributions, under any license terms — including but not limited to future versions of the GPL or proprietary/commercial licenses — at their sole discretion.
This right applies without any obligation to notify or seek further consent from contributors.
You retain ownership of the copyright in your contributions.
This agreement does not transfer ownership to the Project Owner, but grants them all necessary rights to use, distribute, and relicense your contributions as described above.
You further represent that:
- each of your contributions is your original creation, and
- you have the legal right to grant the above licenses.
If your contribution includes third-party code, you agree to clearly identify it and confirm that it is compatible with GPL-3.0 or a license that permits its inclusion under these terms.
You provide your contributions on an “AS IS” basis, without warranties or conditions of any kind, either express or implied, including without limitation any warranties or conditions of title, non-infringement, merchantability, or fitness for a particular purpose.
You retain the right to use, copy, modify, and distribute your contributions independently of this project for any purpose, without restriction.
By contributing to this project, you confirm that you have read and agree to the terms of this Contributor License Agreement.
Thank you for contributing! 🎉