# Pijul for VS Code
Pijul for VS Code is an extension for Visual Studio Code which adds integration with Pijul as a source control management system.
Why develop my own extension instead of contributing to the existing one? It didn't even occur to me to check if one already existed
when I started, and when I did my own extension had enough distinct features to set it apart.
## Features
At present, this extension offers _most_ of the basic features necessary for local Pijul development on a single channel. It includes basic
commands for initializing a repository in a VS Code workspace.
- Add, Reset, or Record one, some, or all of the files in the Pijul Repository.
- Decorations in the file tree indicating the current state of each file.
- VS Code comparison integration for diffing files with their last recorded versions.
- Basic views for the change log and the channels
Everything else still needs to be done on the command line.
## Requirements
Requires an existing Pijul installation. [Instructions for installing Pijul can be found here](https://pijul.org/manual/installing.html).
The primary development environment for the extension is WSL2 and at this early stage I can't guarantee that it will work on other platforms.
If you are using or have tried using the extension on a different platform, please feel free to open a discussion with any issues you have encountered.
## Known Issues
- On the Source Control View, deleted files show up as their parent directory (This is the result of a Pijul CLI limitation).
## Installation
Pijul for VS Code hasn't been published on the extension marketplace yet, so it needs to be built and installed from the source.
To do so, follow these steps:
1. Clone the repository
2. Install Visual Studio Code Extensions (VSCE)
```
npm install --global @vscode/vsce
```
3. Package the extension
```bash
# Windows users might need to set env var NODE_OPTIONS=--openssl-legacy-provider vsce package
vsce package
```
4. In VS Code, open the Command Palette (Ctrl + Shift + P) and run the "Extensions: Install from VSIX..." to install the VSIX file you created in the last step
## Roadmap
With the eventual goal of releasing on the Extension Marketplace with the same level of quality as other source control extensions,
there are a number of areas which will require a great deal of further refinement:
- Proper handling of VS Code workspaces with multiple folders
- Automatic detection of Pijul installations
- More robust .ignore file handling
- Greater configurability
There are also a number of Pijul features which still need to be implemented to reach a publishable minimum viable product, suitable for local Pijul development:
- Amending changes
- Moving and removing files
- Ignore file management
- Signing changes
In the long term, I would like to offer more in-depth Pijul integration, with the goal of providing a better experience than can be offered on the command line:
- Remote management
- Inline `pijul credit` annotations
- IntelliJ style changeset system
- Splitting/Combining existing changes
- Conflict management
Each category probably could probably fit a couple more points that I haven't thought of.
## Contributing
Pijul for VS Code welcomes all contributions. Before contributing, please be sure to add the following hook to your Pijul config file:
```
[hooks]
record = ["yarn run lint"]
```