# 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.
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.
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).
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 -g vsce
3. Package the extension
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
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.
Pijul for VS Code welcomes all contributions. Before contributing, please be sure to add the following hook to your Pijul config file:
record = ["yarn run lint"]