diff --git a/.idx/dev.nix b/.idx/dev.nix
new file mode 100644
index 00000000..83eb293f
--- /dev/null
+++ b/.idx/dev.nix
@@ -0,0 +1,48 @@
+# Created for Void
+# To learn more about how to use Nix to configure your environment
+# see: https://developers.google.com/idx/guides/customize-idx-env
+{pkgs}: {
+ # Which nixpkgs channel to use.
+ channel = "stable-23.11"; # or "unstable"
+ # Use https://search.nixos.org/packages to find packages
+ packages = [
+ pkgs.nodejs_20
+ pkgs.yarn
+ pkgs.nodePackages.pnpm
+ pkgs.bun
+ pkgs.gh
+ ];
+ # Sets environment variables in the workspace
+ env = {};
+ idx = {
+ # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
+ extensions = [
+ # "vscodevim.vim"
+ ];
+ workspace = {
+ # Runs when a workspace is first created with this `dev.nix` file
+ onCreate = {
+ npm-install = "npm ci --no-audit --prefer-offline --no-progress --timing";
+ # Open editors for the following files by default, if they exist:
+ default.openFiles = [
+ # Cover all the variations of language, src-dir, router (app/pages)
+ "pages/index.tsx" "pages/index.jsx"
+ "src/pages/index.tsx" "src/pages/index.jsx"
+ "app/page.tsx" "app/page.jsx"
+ "src/app/page.tsx" "src/app/page.jsx"
+ ];
+ };
+ # To run something each time the workspace is (re)started, use the `onStart` hook
+ };
+ # Enable previews and customize configuration
+ previews = {
+ enable = true;
+ previews = {
+ web = {
+ command = ["npm" "run" "dev" "--" "--port" "$PORT" "--hostname" "0.0.0.0"];
+ manager = "web";
+ };
+ };
+ };
+ };
+}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0125ac46..0bd47caf 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -9,39 +9,10 @@ There are a few ways to contribute:
- Submit Issues/Docs/Bugs ([Issues](https://github.com/voideditor/void/issues))
-## 1. Building the Extension
+## Building the full IDE
-Here's how you can start contributing to the Void extension. This is where you should get started if you're new.
+Please follow the steps below to build the IDE. If you have any questions, feel free to [submit an issue](https://github.com/voideditor/void/issues/new) with any build errors, or refer to VSCode's full [How to Contribute](https://github.com/microsoft/vscode/wiki/How-to-Contribute) page.
-1. Clone the repository:
-
-```
-git clone https://github.com/voideditor/void
-```
-
-2. Open the folder `/extensions/void` in VSCode (open it in a new workspace, _don't_ just cd into it).
-
-3. Install dependencies:
-
-```
-npm install
-```
-
-1. Compile the React files by running `npm run build`. This build command converts all the Tailwind/React entrypoint files into raw .css and .js files in `dist/`.
-
-```
-npm run build
-```
-
-5. Run the extension in a new window by pressing F5.
-
-This will start a new instance of VSCode with the extension enabled. If this doesn't work, you can press Ctrl+Shift+P, select "Debug: Start Debugging", and select "VSCode Extension Development".
-
-## 2. Building the full IDE
-
-If you want to work on the full IDE, please follow the steps below. If you have any questions/issues, you can refer to VSCode's full [How to Contribute](https://github.com/microsoft/vscode/wiki/How-to-Contribute) page. Also feel free to submit an issue or get in touch with us with any build errors.
-
-
### a. Build Prerequisites - Mac
@@ -51,8 +22,6 @@ If you're using a Mac, make sure you have Python and XCode installed (you probab
If you're using a Windows computer, first get [Visual Studio 2022](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community) (recommended) or [VS Build Tools](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools) (not recommended). If you already have both, you might need to run the next few steps on both of them.
-Open the installer for Visual Studio 2022 (or VS Build Tools). This is often automatic.
-
Go to the "Workloads" tab and select:
- `Desktop development with C++`
- `Node.js build tools`
@@ -66,13 +35,14 @@ Finally, click Install.
### c. Build Prerequisites - Linux
-We haven't created prerequisite steps for building on Linux yet, but you can follow [How to Contribute](https://github.com/microsoft/vscode/wiki/How-to-Contribute).
+First, make sure you've installed NodeJS and run `npm install -g node-gyp`. Then:
+- Debian (Ubuntu, etc) - `sudo apt-get install build-essential g++ libx11-dev libxkbfile-dev libsecret-1-dev libkrb5-dev python-is-python3`.
+- Red Hat (Fedora, etc) - `sudo dnf install @development-tools gcc gcc-c++ make libsecret-devel krb5-devel libX11-devel libxkbfile-devel`.
+- Others - see [How to Contribute](https://github.com/microsoft/vscode/wiki/How-to-Contribute).
### Build instructions
-Before building Void, please follow the prerequisite steps above for your operating system. Also, make sure you've already built and compiled the Void extension (or just run `cd ./extensions/void && npm install && npm run build && npm run compile && cd ../..`).
-
-To build Void, first open `void/` in VSCode. Then:
+To build Void, first follow the prerequisite steps above for your operating system and open `void/` inside VSCode. Then:
1. Install all dependencies.
@@ -80,7 +50,9 @@ To build Void, first open `void/` in VSCode. Then:
npm install
```
-2. Press Ctrl+Shift+B, or if you prefer using the terminal run `npm run watch`.
+2. Run `cd ./src/vs/workbench/contrib/void/browser/react/` and then `node ./build.js` to build Void's external dependencies (our React components, etc).
+
+3. Press Ctrl+Shift+B, or if you prefer using the terminal run `npm run watch`.
This can take ~5 min.
@@ -97,11 +69,10 @@ If you ran `npm run watch`, the build is done when you see something like this:
-1. In a new terminal, run `./scripts/code.sh` (Mac/Linux) or `/.scripts/code.bat` (Windows). This should open up the built IDE!
+4. In a new terminal, run `./scripts/code.sh` (Mac/Linux) or `./scripts/code.bat` (Windows). This should open up the built IDE!
You can always press Ctrl+Shift+P and run "Reload Window" inside the new window to see changes without re-building.
-Now that you're set up, feel free to check out our [Issues](https://github.com/voideditor/void/issues) page!
-
+Now that you're set up, feel free to check out our [Issues](https://github.com/voideditor/void/issues) page.
### Common Fixes
@@ -147,7 +118,7 @@ We're always glad to talk about new ideas, help you get set up, and make sure yo
## Submitting a Pull Request
-Please submit a pull request once you've made a change. You don't need to submit an issue.
+Please submit a pull request once you've made a change. You don't need to submit an issue.
Please don't use AI to write your PR 🙂.
diff --git a/VOID_USEFUL_LINKS.md b/VOID_USEFUL_LINKS.md
index f2c58d55..ef7cbc16 100644
--- a/VOID_USEFUL_LINKS.md
+++ b/VOID_USEFUL_LINKS.md
@@ -18,7 +18,7 @@ The Void team put together this list of links to get up and running with VSCode'
## VSCode's Extension API
-Void is mainly an extension right now, and these links were very useful for us to get set up.
+Void is no longer an extension, so these links are no longer required, but they might be useful if we ever build an extension again.
- [Files you need in an extension](https://code.visualstudio.com/api/get-started/extension-anatomy).
diff --git a/build/npm/dirs.js b/build/npm/dirs.js
index bd332502..7b11bde9 100644
--- a/build/npm/dirs.js
+++ b/build/npm/dirs.js
@@ -7,8 +7,6 @@ const fs = require('fs');
// Complete list of directories where npm should be executed to install node modules
const dirs = [
- 'extensions/void', // <-- Void
-
'',
'build',
'extensions',
@@ -55,6 +53,11 @@ const dirs = [
'test/smoke',
'.vscode/extensions/vscode-selfhost-import-aid',
'.vscode/extensions/vscode-selfhost-test-provider',
+
+ // Void added these:
+ // 'extensions/void',
+ // 'void-imports',
+
];
if (fs.existsSync(`${__dirname}/../../.build/distro/npm`)) {
diff --git a/build/npm/postinstall.js b/build/npm/postinstall.js
index e38c2cb0..10d5d95b 100644
--- a/build/npm/postinstall.js
+++ b/build/npm/postinstall.js
@@ -139,3 +139,21 @@ for (let dir of dirs) {
cp.execSync('git config pull.rebase merges');
cp.execSync('git config blame.ignoreRevsFile .git-blame-ignore-revs');
+
+
+// // Void added this (inject void-imports into project):
+// const buildVoidImports = () => {
+// console.log('\n\nVoid is injecting void-imports...')
+// cp.execSync(`npm install`, { // this goes here, not in postinstall, because we need to
+// env: process.env,
+// cwd: path.join(__dirname, '..', '..', '/void-imports'),
+// stdio: 'inherit'
+// });
+// cp.execSync(`node build-index.mjs`, {
+// env: process.env,
+// cwd: path.join(__dirname, '..', '..', '/void-imports'),
+// stdio: 'inherit'
+// });
+// console.log('Done injecting void-imports.')
+// }
+// buildVoidImports()
diff --git a/extensions/void/.eslintrc b/extensions/void/.eslintrc
deleted file mode 100644
index f47a9afd..00000000
--- a/extensions/void/.eslintrc
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "root": true,
- "parser": "@typescript-eslint/parser",
- "parserOptions": {
- "ecmaVersion": 6,
- "sourceType": "module",
- "ecmaFeatures": {
- "jsx": true
- }
- },
- "plugins": [
- "@typescript-eslint",
- "react",
- "react-hooks"
- ],
- "extends": [
- "eslint:recommended",
- "plugin:react/recommended",
- "plugin:react-hooks/recommended"
- ],
- "rules": {
- "@typescript-eslint/naming-convention": [
- "warn",
- {
- "selector": "import",
- "format": [
- "camelCase",
- "PascalCase"
- ]
- }
- ],
- "curly": "off",
- "eqeqeq": "warn",
- "no-empty": "off",
- "no-throw-literal": "warn",
- "semi": "off",
- "no-unused-vars": "off",
- "react-hooks/exhaustive-deps": "warn"
- },
- "ignorePatterns": [
- "out",
- "dist",
- "**/*.d.ts"
- ],
- "settings": {
- "react": {
- "version": "detect"
- }
- },
- "env": {
- "browser": true, // enable browser globals linting (window, document, console, etc)
- "es6": true, // enable ES6 linting
- "node": true, // enable Node linting (things like Buffer which is used in file reading, etc)
- "mocha": true // enable Mocha linting
- }
-}
\ No newline at end of file
diff --git a/extensions/void/.gitignore b/extensions/void/.gitignore
deleted file mode 100644
index 0b60dfa1..00000000
--- a/extensions/void/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-out
-dist
-node_modules
-.vscode-test/
-*.vsix
diff --git a/extensions/void/.vscode-test.mjs b/extensions/void/.vscode-test.mjs
deleted file mode 100644
index b62ba25f..00000000
--- a/extensions/void/.vscode-test.mjs
+++ /dev/null
@@ -1,5 +0,0 @@
-import { defineConfig } from '@vscode/test-cli';
-
-export default defineConfig({
- files: 'out/test/**/*.test.js',
-});
diff --git a/extensions/void/.vscode/extensions.json b/extensions/void/.vscode/extensions.json
deleted file mode 100644
index 186459d5..00000000
--- a/extensions/void/.vscode/extensions.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- // See http://go.microsoft.com/fwlink/?LinkId=827846
- // for the documentation about the extensions.json format
- "recommendations": [
- "dbaeumer.vscode-eslint",
- "ms-vscode.extension-test-runner"
- ]
-}
diff --git a/extensions/void/.vscode/launch.json b/extensions/void/.vscode/launch.json
deleted file mode 100644
index 17ab1d57..00000000
--- a/extensions/void/.vscode/launch.json
+++ /dev/null
@@ -1,22 +0,0 @@
-// A launch configuration that compiles the extension and then opens it inside a new window
-// Use IntelliSense to learn about possible attributes.
-// Hover to view descriptions of existing attributes.
-// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Run Extension",
- "type": "extensionHost",
- "request": "launch",
- "args": [
- "--extensionDevelopmentPath=${workspaceFolder}",
- "--enable-proposed-api=void.void",
- ],
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
- "preLaunchTask": "${defaultBuildTask}"
- }
- ]
-}
\ No newline at end of file
diff --git a/extensions/void/.vscode/settings.json b/extensions/void/.vscode/settings.json
deleted file mode 100644
index 3100dfe2..00000000
--- a/extensions/void/.vscode/settings.json
+++ /dev/null
@@ -1,18 +0,0 @@
-// Place your settings in this file to overwrite default and user settings.
-{
- "files.exclude": {
- "**/.git": true,
- "**/.svn": true,
- "**/.hg": true,
- "**/CVS": true,
- "**/.DS_Store": true,
- "**/Thumbs.db": true,
- "out": false,
- "**/node_modules": true
- },
- "search.exclude": {
- "out": true // set this to false to include "out" folder in search results
- },
- // Turn off tsc task auto detection since we have the necessary tasks as npm scripts
- "typescript.tsc.autoDetect": "off",
-}
diff --git a/extensions/void/.vscode/tasks.json b/extensions/void/.vscode/tasks.json
deleted file mode 100644
index 3b17e53b..00000000
--- a/extensions/void/.vscode/tasks.json
+++ /dev/null
@@ -1,20 +0,0 @@
-// See https://go.microsoft.com/fwlink/?LinkId=733558
-// for the documentation about the tasks.json format
-{
- "version": "2.0.0",
- "tasks": [
- {
- "type": "npm",
- "script": "watch",
- "problemMatcher": "$tsc-watch",
- "isBackground": true,
- "presentation": {
- "reveal": "never"
- },
- "group": {
- "kind": "build",
- "isDefault": true
- }
- }
- ]
-}
diff --git a/extensions/void/.vscodeignore b/extensions/void/.vscodeignore
deleted file mode 100644
index 72aa0fe2..00000000
--- a/extensions/void/.vscodeignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.vscode/**
-.vscode-test/**
-src/**
-.gitignore
-.yarnrc
-vsc-extension-quickstart.md
-**/tsconfig.json
-**/.eslintrc.json
-**/*.map
-**/*.ts
-**/.vscode-test.*
diff --git a/extensions/void/README.md b/extensions/void/README.md
deleted file mode 100644
index d455ba30..00000000
--- a/extensions/void/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Please see the `CONTRIBUTING.md` for information on how to contribute :)!
-
-
-Here's an overview on how the extension works:
-
-- The extension mounts in `extension.ts`.
-
-- The Sidebar's HTML (everything in `sidebar/`) is built in React, and it's rendered by mounting a `
-