# ProjectThis A Sublime Text 4 plugin that creates a `.sublime-project` file from the folders currently open in your sidebar — in one command. ## What it does Open the Command Palette and run **ProjectThis**. The plugin will: 1. Examine the root folders open in the sidebar. 2. If no folders are open, show an error dialog. 3. If multiple folders are open, ask which folder should contain the project file (with an option to enter a custom path). 4. If only one folder is open, use that folder automatically. 5. Validate the chosen folder path. 6. Derive the project name from the folder name (or prompt for one when a custom path is used). 7. Write a `.sublime-project` file that includes all open root folders. 8. If there is a single open root folder and it contains a `.gitignore`, append `*.sublime-project` and `*.sublime-workspace` to that file (if not already present). 9. Confirm success with a dialog. 10. Open the newly created project in Sublime Text (making it available in the project switcher via `Cmd+Ctrl+P` going forward). ## Installation ### Via symlink (recommended for development) Sublime Text loads plugins from its `Packages` directory. Symlink this repo there so edits are picked up immediately: ```sh # macOS ln -s /path/to/project-this \ "$HOME/Library/Application Support/Sublime Text/Packages/ProjectThis" # Linux ln -s /path/to/project-this \ "$HOME/.config/sublime-text/Packages/ProjectThis" # Windows (run as Administrator) mklink /D "%APPDATA%\Sublime Text\Packages\ProjectThis" "C:\path\to\project-this" ``` ### Manual copy Copy the repository folder into the Sublime Text `Packages` directory with the name `ProjectThis`. ## Usage 1. Open one or more folders in the Sublime Text sidebar (**File → Open Folder…**). 2. Open the Command Palette (`Cmd+Shift+P` on macOS, `Ctrl+Shift+P` on Linux/Windows). 3. Type **ProjectThis** and press `Enter`. 4. Follow any prompts (folder selection or project name, when applicable). 5. The `.sublime-project` file is created in the chosen folder. ## Generated project file format Folder paths are stored relative to the `.sublime-project` file. For a single open folder this is always `.`; for multiple folders they appear as relative paths (e.g. `../sibling-folder`). ```json { "folders": [ { "path": "." }, { "path": "../sibling-folder" } ] } ``` ## Development The project is managed with [uv](https://docs.astral.sh/uv/). ```sh # Clone and enter the directory git clone project-this cd project-this # Create a virtual environment (optional; no runtime deps required) uv sync ``` Sublime Text 4 bundles **Python 3.8**, so the plugin has no third-party dependencies and relies solely on the standard library plus the `sublime` / `sublime_plugin` modules provided by the editor at runtime. ### Files | File | Purpose | |---|---| | `ProjectThis.py` | Plugin entry point; defines `ProjectThisCommand` | | `Default.sublime-commands` | Registers the command in the Command Palette | | `pyproject.toml` | Project metadata and uv configuration | ## Requirements - Sublime Text 4 (build 4107 or later recommended) ## License MIT