{ "name": "vertical-tabs", "displayName": "Vertical Tabs", "description": "Open editors as a flat vertical list, colour-coded by project, with pinning. For people who turn the tab bar off.", "version": "0.1.0", "publisher": "local", "license": "MIT", "engines": { "vscode": "^1.85.0" }, "categories": [ "Other" ], "keywords": [ "tabs", "vertical tabs", "open editors", "csharp", "visual studio" ], "activationEvents": [ "onStartupFinished" ], "main": "./out/extension.js", "contributes": { "views": { "explorer": [ { "id": "verticalTabs.tabs", "name": "Tabs", "type": "webview", "contextualTitle": "Tabs", "visibility": "visible" } ] }, "commands": [ { "command": "verticalTabs.close", "title": "Close Active Tab", "category": "Tabs" }, { "command": "verticalTabs.closeOthers", "title": "Close Other Tabs", "category": "Tabs" }, { "command": "verticalTabs.togglePin", "title": "Pin or Unpin Active Tab", "category": "Tabs" }, { "command": "verticalTabs.setOrderOpen", "title": "Sort Tabs by Open Order", "category": "Tabs" }, { "command": "verticalTabs.setOrderProject", "title": "Sort Tabs by Project", "category": "Tabs" }, { "command": "verticalTabs.setOrderName", "title": "Sort Tabs by File Name", "category": "Tabs" } ], "menus": { "view/title": [ { "command": "verticalTabs.setOrderOpen", "when": "view == verticalTabs.tabs", "group": "1_order@1" }, { "command": "verticalTabs.setOrderProject", "when": "view == verticalTabs.tabs", "group": "1_order@2" }, { "command": "verticalTabs.setOrderName", "when": "view == verticalTabs.tabs", "group": "1_order@3" } ] }, "configuration": { "title": "Vertical Tabs", "properties": { "verticalTabs.order": { "type": "string", "enum": [ "open", "project", "name" ], "enumDescriptions": [ "Keep the order the editors are open in, matching the tab bar.", "Group by project, so the colours run in blocks.", "Sort by file name." ], "default": "open", "description": "How the tab list is ordered. Pinned tabs always come first." }, "verticalTabs.pinnedFirst": { "type": "boolean", "default": true, "description": "List pinned tabs above the rest." }, "verticalTabs.showProject": { "type": "boolean", "default": false, "description": "Show the project name beside the file. Off by default: the row's left border already encodes the project, so the file name gets the whole row." }, "verticalTabs.showDirectory": { "type": "string", "enum": [ "never", "duplicates", "always" ], "enumDescriptions": [ "Never show the directory. The file name gets the whole row.", "Only when two open files share a name, which is the usual reason to need it.", "Always show the directory." ], "default": "duplicates", "description": "When to spend row width on the containing directory." }, "verticalTabs.colorByProject": { "type": "boolean", "default": true, "description": "Colour each row's left border by its containing project." }, "verticalTabs.allGroups": { "type": "boolean", "default": true, "description": "List the tabs of every editor group. When off, only the active group is listed." }, "verticalTabs.projectFiles": { "type": "array", "items": { "type": "string" }, "default": [ ".asmdef", ".csproj", ".fsproj", ".vbproj", "package.json", "Cargo.toml", "go.mod", "pyproject.toml", "pom.xml", "build.gradle" ], "description": "File names or extensions that mark a project root. The nearest match above a file names its project." }, "verticalTabs.rowSpacing": { "type": "number", "default": 3, "minimum": 0, "maximum": 10, "description": "Pixels of vertical space between rows." }, "verticalTabs.borderWidth": { "type": "number", "default": 3, "minimum": 0, "maximum": 8, "description": "Width in pixels of the project colour border on the left of each row." }, "verticalTabs.decorateFiles": { "type": "string", "enum": [ "off", "color", "colorAndBadge" ], "enumDescriptions": [ "Do not decorate files.", "Colour each file's name by its project.", "Colour the name and add a short project badge, such as AC for Acme.Shop.Client." ], "default": "color", "markdownDescription": "Colour files by project wherever VS Code shows file decorations: the Explorer, the built-in **Open Editors** view, and the editor tabs. This is what makes the built-in Open Editors view project-coloured without giving up its drag-and-drop.\n\nThere is no way to decorate only the Open Editors view, so the Explorer is coloured too. Git also decorates modified files and only one colour wins, so a dirty file may show Git's colour instead of its project's. Requires `explorer.decorations.colors`, which is on by default." } } }, "colors": [ { "id": "verticalTabs.project1", "description": "Project colour 1.", "defaults": { "dark": "#4ec9b0", "light": "#227d68", "highContrast": "#4ec9b0" } }, { "id": "verticalTabs.project2", "description": "Project colour 2.", "defaults": { "dark": "#dcdcaa", "light": "#7a6e17", "highContrast": "#dcdcaa" } }, { "id": "verticalTabs.project3", "description": "Project colour 3.", "defaults": { "dark": "#9cdcfe", "light": "#0b5f92", "highContrast": "#9cdcfe" } }, { "id": "verticalTabs.project4", "description": "Project colour 4.", "defaults": { "dark": "#c586c0", "light": "#8b338a", "highContrast": "#c586c0" } }, { "id": "verticalTabs.project5", "description": "Project colour 5.", "defaults": { "dark": "#ce9178", "light": "#a3441f", "highContrast": "#ce9178" } }, { "id": "verticalTabs.project6", "description": "Project colour 6.", "defaults": { "dark": "#b5cea8", "light": "#3c7a2e", "highContrast": "#b5cea8" } }, { "id": "verticalTabs.project7", "description": "Project colour 7.", "defaults": { "dark": "#569cd6", "light": "#1d4f91", "highContrast": "#569cd6" } }, { "id": "verticalTabs.project8", "description": "Project colour 8.", "defaults": { "dark": "#d7ba7d", "light": "#8a6512", "highContrast": "#d7ba7d" } }, { "id": "verticalTabs.project9", "description": "Project colour 9.", "defaults": { "dark": "#f28b82", "light": "#b3261e", "highContrast": "#f28b82" } }, { "id": "verticalTabs.project10", "description": "Project colour 10.", "defaults": { "dark": "#a5d6a7", "light": "#2e7d32", "highContrast": "#a5d6a7" } }, { "id": "verticalTabs.project11", "description": "Project colour 11.", "defaults": { "dark": "#b39ddb", "light": "#5e35b1", "highContrast": "#b39ddb" } }, { "id": "verticalTabs.project12", "description": "Project colour 12.", "defaults": { "dark": "#80cbc4", "light": "#00695c", "highContrast": "#80cbc4" } }, { "id": "verticalTabs.noProject", "description": "Colour for files that belong to no project.", "defaults": { "dark": "descriptionForeground", "light": "descriptionForeground", "highContrast": "descriptionForeground" } } ] }, "scripts": { "vscode:prepublish": "npm run compile", "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "pretest": "npm run compile", "test": "node ./out/test/runTest.js" }, "devDependencies": { "@types/mocha": "^10.0.6", "@types/node": "^20.11.0", "@types/vscode": "^1.85.0", "@vscode/test-electron": "^2.4.1", "mocha": "^10.4.0", "typescript": "^5.4.0" } }