Give the file name the row, and stop repeating the project

On a real project the name lost the width fight and the trailing text read
"MyGame.Runtime MyGame.Runtime" — the directory and the project were the
same string, printed twice.

- The detail text now has a shrink factor of 1000 against the name's 1, plus
  a 45% cap, so it gives up its width first and the name is the last thing to
  ellipsize.
- A directory that already begins with the project name says everything the
  project name would, so only one of the two is shown.
- verticalTabs.showDirectory became never / duplicates / always, defaulting
  to duplicates: width goes to a directory only when two open tabs share a
  file name, which is the usual reason to want it. Turning showProject off
  as well gives the name the whole row.
- The trailing text is composed in the extension now rather than the webview,
  so the deduplication is unit-testable and there is one implementation.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
max
2026-09-07 18:42:14 +02:00
co-authored by Claude Opus 5
parent 95799c6353
commit 925e55d619
6 changed files with 109 additions and 40 deletions
+14 -4
View File
@@ -111,12 +111,22 @@
"verticalTabs.showProject": {
"type": "boolean",
"default": true,
"description": "Show the containing project name beside the file."
"description": "Show the project name beside the file. The row's left border already encodes the project, so turning this off gives the file name the whole row."
},
"verticalTabs.showDirectory": {
"type": "boolean",
"default": true,
"description": "Show the containing directory beside the file, for files with the same name."
"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",