@codingame/monaco-vscode-timeline-service-override 9.0.2 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistory.contribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistory.js +2 -2
- package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryCommands.js +36 -36
- package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryFileSystemProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryTimeline.js +1 -1
- package/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution.js +0 -1
- package/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.js +27 -29
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-timeline-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"vscode": "npm:@codingame/monaco-vscode-api@
|
|
29
|
+
"vscode": "npm:@codingame/monaco-vscode-api@10.0.0"
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import './localHistoryCommands.js';
|
|
2
|
-
import { registerWorkbenchContribution2
|
|
2
|
+
import { registerWorkbenchContribution2 } from 'vscode/vscode/vs/workbench/common/contributions';
|
|
3
3
|
import { LocalHistoryTimeline } from './localHistoryTimeline.js';
|
|
4
4
|
|
|
5
|
-
registerWorkbenchContribution2(LocalHistoryTimeline.ID, LocalHistoryTimeline,
|
|
5
|
+
registerWorkbenchContribution2(LocalHistoryTimeline.ID, LocalHistoryTimeline, 2 );
|
|
@@ -23,7 +23,7 @@ function getLocalHistoryDateFormatter() {
|
|
|
23
23
|
}
|
|
24
24
|
const LOCAL_HISTORY_MENU_CONTEXT_VALUE = 'localHistory:item';
|
|
25
25
|
const LOCAL_HISTORY_MENU_CONTEXT_KEY = ( (ContextKeyExpr.equals('timelineItem', LOCAL_HISTORY_MENU_CONTEXT_VALUE)));
|
|
26
|
-
const LOCAL_HISTORY_ICON_ENTRY = registerIcon('localHistory-icon', Codicon.circleOutline, ( localize(
|
|
27
|
-
const LOCAL_HISTORY_ICON_RESTORE = registerIcon('localHistory-restore', Codicon.check, ( localize(
|
|
26
|
+
const LOCAL_HISTORY_ICON_ENTRY = registerIcon('localHistory-icon', Codicon.circleOutline, ( localize(10661, "Icon for a local history entry in the timeline view.")));
|
|
27
|
+
const LOCAL_HISTORY_ICON_RESTORE = registerIcon('localHistory-restore', Codicon.check, ( localize(10662, "Icon for restoring contents of a local history entry.")));
|
|
28
28
|
|
|
29
29
|
export { LOCAL_HISTORY_ICON_ENTRY, LOCAL_HISTORY_ICON_RESTORE, LOCAL_HISTORY_MENU_CONTEXT_KEY, LOCAL_HISTORY_MENU_CONTEXT_VALUE, getLocalHistoryDateFormatter };
|
|
@@ -23,16 +23,16 @@ import { getIconClasses } from 'vscode/vscode/vs/editor/common/services/getIconC
|
|
|
23
23
|
import { IModelService } from 'vscode/vscode/vs/editor/common/services/model';
|
|
24
24
|
import { ILanguageService } from 'vscode/vscode/vs/editor/common/languages/language';
|
|
25
25
|
import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label.service';
|
|
26
|
-
import { coalesce
|
|
26
|
+
import { coalesce } from 'vscode/vscode/vs/base/common/arrays';
|
|
27
27
|
import { LOCAL_HISTORY_MENU_CONTEXT_KEY, LOCAL_HISTORY_ICON_RESTORE, getLocalHistoryDateFormatter } from './localHistory.js';
|
|
28
28
|
import { IPathService } from 'vscode/vscode/vs/workbench/services/path/common/pathService.service';
|
|
29
29
|
import { ResourceSet } from 'vscode/vscode/vs/base/common/map';
|
|
30
30
|
import { IHistoryService } from 'vscode/vscode/vs/workbench/services/history/common/history.service';
|
|
31
31
|
import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
32
32
|
|
|
33
|
-
const LOCAL_HISTORY_CATEGORY = ( localize2(
|
|
33
|
+
const LOCAL_HISTORY_CATEGORY = ( localize2(6677, 'Local History'));
|
|
34
34
|
const CTX_LOCAL_HISTORY_ENABLED = ( (ContextKeyExpr.has('config.workbench.localHistory.enabled')));
|
|
35
|
-
const COMPARE_WITH_FILE_LABEL = ( localize2(
|
|
35
|
+
const COMPARE_WITH_FILE_LABEL = ( localize2(6678, 'Compare with File'));
|
|
36
36
|
registerAction2(class extends Action2 {
|
|
37
37
|
constructor() {
|
|
38
38
|
super({
|
|
@@ -59,7 +59,7 @@ registerAction2(class extends Action2 {
|
|
|
59
59
|
constructor() {
|
|
60
60
|
super({
|
|
61
61
|
id: 'workbench.action.localHistory.compareWithPrevious',
|
|
62
|
-
title: ( localize2(
|
|
62
|
+
title: ( localize2(6679, 'Compare with Previous')),
|
|
63
63
|
menu: {
|
|
64
64
|
id: MenuId.TimelineItemContext,
|
|
65
65
|
group: '1_compare',
|
|
@@ -87,7 +87,7 @@ registerAction2(class extends Action2 {
|
|
|
87
87
|
constructor() {
|
|
88
88
|
super({
|
|
89
89
|
id: 'workbench.action.localHistory.selectForCompare',
|
|
90
|
-
title: ( localize2(
|
|
90
|
+
title: ( localize2(6680, 'Select for Compare')),
|
|
91
91
|
menu: {
|
|
92
92
|
id: MenuId.TimelineItemContext,
|
|
93
93
|
group: '2_compare_with',
|
|
@@ -110,7 +110,7 @@ registerAction2(class extends Action2 {
|
|
|
110
110
|
constructor() {
|
|
111
111
|
super({
|
|
112
112
|
id: 'workbench.action.localHistory.compareWithSelected',
|
|
113
|
-
title: ( localize2(
|
|
113
|
+
title: ( localize2(6681, 'Compare with Selected')),
|
|
114
114
|
menu: {
|
|
115
115
|
id: MenuId.TimelineItemContext,
|
|
116
116
|
group: '2_compare_with',
|
|
@@ -139,7 +139,7 @@ registerAction2(class extends Action2 {
|
|
|
139
139
|
constructor() {
|
|
140
140
|
super({
|
|
141
141
|
id: 'workbench.action.localHistory.open',
|
|
142
|
-
title: ( localize2(
|
|
142
|
+
title: ( localize2(6682, 'Show Contents')),
|
|
143
143
|
menu: {
|
|
144
144
|
id: MenuId.TimelineItemContext,
|
|
145
145
|
group: '3_contents',
|
|
@@ -157,7 +157,7 @@ registerAction2(class extends Action2 {
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
});
|
|
160
|
-
const RESTORE_CONTENTS_LABEL = ( localize2(
|
|
160
|
+
const RESTORE_CONTENTS_LABEL = ( localize2(6683, 'Restore Contents'));
|
|
161
161
|
registerAction2(class extends Action2 {
|
|
162
162
|
constructor() {
|
|
163
163
|
super({
|
|
@@ -194,7 +194,7 @@ registerAction2(class extends Action2 {
|
|
|
194
194
|
return restore(accessor, item);
|
|
195
195
|
}
|
|
196
196
|
});
|
|
197
|
-
const restoreSaveSource = SaveSourceRegistry.registerSource('localHistoryRestore.source', ( localize(
|
|
197
|
+
const restoreSaveSource = SaveSourceRegistry.registerSource('localHistoryRestore.source', ( localize(6684, "File Restored")));
|
|
198
198
|
async function restore(accessor, item) {
|
|
199
199
|
const fileService = accessor.get(IFileService);
|
|
200
200
|
const dialogService = accessor.get(IDialogService);
|
|
@@ -206,12 +206,12 @@ async function restore(accessor, item) {
|
|
|
206
206
|
const { confirmed } = await dialogService.confirm({
|
|
207
207
|
type: 'warning',
|
|
208
208
|
message: ( localize(
|
|
209
|
-
|
|
209
|
+
6685,
|
|
210
210
|
"Do you want to restore the contents of '{0}'?",
|
|
211
211
|
basename(entry.workingCopy.resource)
|
|
212
212
|
)),
|
|
213
|
-
detail: ( localize(
|
|
214
|
-
primaryButton: ( localize(
|
|
213
|
+
detail: ( localize(6686, "Restoring will discard any unsaved changes.")),
|
|
214
|
+
primaryButton: ( localize(6687, "&&Restore"))
|
|
215
215
|
});
|
|
216
216
|
if (!confirmed) {
|
|
217
217
|
return;
|
|
@@ -228,7 +228,7 @@ async function restore(accessor, item) {
|
|
|
228
228
|
await fileService.cloneFile(entry.location, entry.workingCopy.resource);
|
|
229
229
|
}
|
|
230
230
|
catch (error) {
|
|
231
|
-
await dialogService.error(( localize(
|
|
231
|
+
await dialogService.error(( localize(6688, "Unable to restore '{0}'.", basename(entry.workingCopy.resource))), toErrorMessage(error));
|
|
232
232
|
return;
|
|
233
233
|
}
|
|
234
234
|
if (workingCopies) {
|
|
@@ -248,7 +248,7 @@ registerAction2(class extends Action2 {
|
|
|
248
248
|
constructor() {
|
|
249
249
|
super({
|
|
250
250
|
id: 'workbench.action.localHistory.restoreViaPicker',
|
|
251
|
-
title: ( localize2(
|
|
251
|
+
title: ( localize2(6689, 'Find Entry to Restore')),
|
|
252
252
|
f1: true,
|
|
253
253
|
category: LOCAL_HISTORY_CATEGORY,
|
|
254
254
|
precondition: CTX_LOCAL_HISTORY_ENABLED
|
|
@@ -283,7 +283,7 @@ registerAction2(class extends Action2 {
|
|
|
283
283
|
}
|
|
284
284
|
resourcesSortedByRecency.push(...[...resources].sort((r1, r2) => r1.fsPath < r2.fsPath ? -1 : 1));
|
|
285
285
|
resourcePicker.busy = false;
|
|
286
|
-
resourcePicker.placeholder = ( localize(
|
|
286
|
+
resourcePicker.placeholder = ( localize(6690, "Select the file to show local history for"));
|
|
287
287
|
resourcePicker.matchOnLabel = true;
|
|
288
288
|
resourcePicker.matchOnDescription = true;
|
|
289
289
|
resourcePicker.items = ( ([...resourcesSortedByRecency].map(resource => ({
|
|
@@ -294,7 +294,7 @@ registerAction2(class extends Action2 {
|
|
|
294
294
|
}))));
|
|
295
295
|
await Event.toPromise(resourcePicker.onDidAccept);
|
|
296
296
|
resourcePickerDisposables.dispose();
|
|
297
|
-
const resource =
|
|
297
|
+
const resource = resourcePicker.selectedItems.at(0)?.resource;
|
|
298
298
|
if (!resource) {
|
|
299
299
|
return;
|
|
300
300
|
}
|
|
@@ -307,7 +307,7 @@ registerAction2(class extends Action2 {
|
|
|
307
307
|
const entries = await workingCopyHistoryService.getEntries(resource, cts.token);
|
|
308
308
|
entryPicker.busy = false;
|
|
309
309
|
entryPicker.canAcceptInBackground = true;
|
|
310
|
-
entryPicker.placeholder = ( localize(
|
|
310
|
+
entryPicker.placeholder = ( localize(6691, "Select the local history entry to open"));
|
|
311
311
|
entryPicker.matchOnLabel = true;
|
|
312
312
|
entryPicker.matchOnDescription = true;
|
|
313
313
|
entryPicker.items = ( (Array.from(entries).reverse().map(entry => ({
|
|
@@ -319,7 +319,7 @@ registerAction2(class extends Action2 {
|
|
|
319
319
|
if (!e.inBackground) {
|
|
320
320
|
entryPickerDisposables.dispose();
|
|
321
321
|
}
|
|
322
|
-
const selectedItem =
|
|
322
|
+
const selectedItem = entryPicker.selectedItems.at(0);
|
|
323
323
|
if (!selectedItem) {
|
|
324
324
|
return;
|
|
325
325
|
}
|
|
@@ -331,12 +331,12 @@ registerAction2(class extends Action2 {
|
|
|
331
331
|
}));
|
|
332
332
|
}
|
|
333
333
|
});
|
|
334
|
-
MenuRegistry.appendMenuItem(MenuId.TimelineTitle, { command: { id: 'workbench.action.localHistory.restoreViaPicker', title: ( localize2(
|
|
334
|
+
MenuRegistry.appendMenuItem(MenuId.TimelineTitle, { command: { id: 'workbench.action.localHistory.restoreViaPicker', title: ( localize2(6692, 'Local History: Find Entry to Restore...')) }, group: 'submenu', order: 1, when: CTX_LOCAL_HISTORY_ENABLED });
|
|
335
335
|
registerAction2(class extends Action2 {
|
|
336
336
|
constructor() {
|
|
337
337
|
super({
|
|
338
338
|
id: 'workbench.action.localHistory.rename',
|
|
339
|
-
title: ( localize2(
|
|
339
|
+
title: ( localize2(6693, 'Rename')),
|
|
340
340
|
menu: {
|
|
341
341
|
id: MenuId.TimelineItemContext,
|
|
342
342
|
group: '5_edit',
|
|
@@ -352,9 +352,9 @@ registerAction2(class extends Action2 {
|
|
|
352
352
|
if (entry) {
|
|
353
353
|
const disposables = ( (new DisposableStore()));
|
|
354
354
|
const inputBox = disposables.add(quickInputService.createInputBox());
|
|
355
|
-
inputBox.title = ( localize(
|
|
355
|
+
inputBox.title = ( localize(6694, "Rename Local History Entry"));
|
|
356
356
|
inputBox.ignoreFocusOut = true;
|
|
357
|
-
inputBox.placeholder = ( localize(
|
|
357
|
+
inputBox.placeholder = ( localize(6695, "Enter the new name of the local history entry"));
|
|
358
358
|
inputBox.value = SaveSourceRegistry.getSourceLabel(entry.source);
|
|
359
359
|
inputBox.show();
|
|
360
360
|
disposables.add(inputBox.onDidAccept(() => {
|
|
@@ -370,7 +370,7 @@ registerAction2(class extends Action2 {
|
|
|
370
370
|
constructor() {
|
|
371
371
|
super({
|
|
372
372
|
id: 'workbench.action.localHistory.delete',
|
|
373
|
-
title: ( localize2(
|
|
373
|
+
title: ( localize2(6696, 'Delete')),
|
|
374
374
|
menu: {
|
|
375
375
|
id: MenuId.TimelineItemContext,
|
|
376
376
|
group: '5_edit',
|
|
@@ -388,13 +388,13 @@ registerAction2(class extends Action2 {
|
|
|
388
388
|
const { confirmed } = await dialogService.confirm({
|
|
389
389
|
type: 'warning',
|
|
390
390
|
message: ( localize(
|
|
391
|
-
|
|
391
|
+
6697,
|
|
392
392
|
"Do you want to delete the local history entry of '{0}' from {1}?",
|
|
393
393
|
entry.workingCopy.name,
|
|
394
394
|
toLocalHistoryEntryDateLabel(entry.timestamp)
|
|
395
395
|
)),
|
|
396
|
-
detail: ( localize(
|
|
397
|
-
primaryButton: ( localize(
|
|
396
|
+
detail: ( localize(6698, "This action is irreversible!")),
|
|
397
|
+
primaryButton: ( localize(6699, "&&Delete")),
|
|
398
398
|
});
|
|
399
399
|
if (!confirmed) {
|
|
400
400
|
return;
|
|
@@ -408,7 +408,7 @@ registerAction2(class extends Action2 {
|
|
|
408
408
|
constructor() {
|
|
409
409
|
super({
|
|
410
410
|
id: 'workbench.action.localHistory.deleteAll',
|
|
411
|
-
title: ( localize2(
|
|
411
|
+
title: ( localize2(6700, 'Delete All')),
|
|
412
412
|
f1: true,
|
|
413
413
|
category: LOCAL_HISTORY_CATEGORY,
|
|
414
414
|
precondition: CTX_LOCAL_HISTORY_ENABLED
|
|
@@ -419,9 +419,9 @@ registerAction2(class extends Action2 {
|
|
|
419
419
|
const workingCopyHistoryService = accessor.get(IWorkingCopyHistoryService);
|
|
420
420
|
const { confirmed } = await dialogService.confirm({
|
|
421
421
|
type: 'warning',
|
|
422
|
-
message: ( localize(
|
|
423
|
-
detail: ( localize(
|
|
424
|
-
primaryButton: ( localize(
|
|
422
|
+
message: ( localize(6701, "Do you want to delete all entries of all files in local history?")),
|
|
423
|
+
detail: ( localize(6702, "This action is irreversible!")),
|
|
424
|
+
primaryButton: ( localize(6703, "&&Delete All")),
|
|
425
425
|
});
|
|
426
426
|
if (!confirmed) {
|
|
427
427
|
return;
|
|
@@ -433,7 +433,7 @@ registerAction2(class extends Action2 {
|
|
|
433
433
|
constructor() {
|
|
434
434
|
super({
|
|
435
435
|
id: 'workbench.action.localHistory.create',
|
|
436
|
-
title: ( localize2(
|
|
436
|
+
title: ( localize2(6704, 'Create Entry')),
|
|
437
437
|
f1: true,
|
|
438
438
|
category: LOCAL_HISTORY_CATEGORY,
|
|
439
439
|
precondition: ( (ContextKeyExpr.and(CTX_LOCAL_HISTORY_ENABLED, ActiveEditorContext)))
|
|
@@ -451,10 +451,10 @@ registerAction2(class extends Action2 {
|
|
|
451
451
|
}
|
|
452
452
|
const disposables = ( (new DisposableStore()));
|
|
453
453
|
const inputBox = disposables.add(quickInputService.createInputBox());
|
|
454
|
-
inputBox.title = ( localize(
|
|
454
|
+
inputBox.title = ( localize(6705, "Create Local History Entry"));
|
|
455
455
|
inputBox.ignoreFocusOut = true;
|
|
456
456
|
inputBox.placeholder = ( localize(
|
|
457
|
-
|
|
457
|
+
6706,
|
|
458
458
|
"Enter the new name of the local history entry for '{0}'",
|
|
459
459
|
labelService.getUriBasenameLabel(resource)
|
|
460
460
|
));
|
|
@@ -473,7 +473,7 @@ async function openEntry(entry, editorService, options) {
|
|
|
473
473
|
await editorService.openEditor({
|
|
474
474
|
resource,
|
|
475
475
|
label: ( localize(
|
|
476
|
-
|
|
476
|
+
6707,
|
|
477
477
|
"{0} ({1} • {2})",
|
|
478
478
|
entry.workingCopy.name,
|
|
479
479
|
SaveSourceRegistry.getSourceLabel(entry.source),
|
|
@@ -495,7 +495,7 @@ function toDiffEditorArguments(arg1, arg2, options) {
|
|
|
495
495
|
const resource = arg2;
|
|
496
496
|
modifiedResource = resource;
|
|
497
497
|
label = ( localize(
|
|
498
|
-
|
|
498
|
+
6708,
|
|
499
499
|
"{0} ({1} • {2}) ↔ {3}",
|
|
500
500
|
arg1.workingCopy.name,
|
|
501
501
|
SaveSourceRegistry.getSourceLabel(arg1.source),
|
|
@@ -507,7 +507,7 @@ function toDiffEditorArguments(arg1, arg2, options) {
|
|
|
507
507
|
const modified = arg2;
|
|
508
508
|
modifiedResource = LocalHistoryFileSystemProvider.toLocalHistoryFileSystem({ location: modified.location, associatedResource: modified.workingCopy.resource });
|
|
509
509
|
label = ( localize(
|
|
510
|
-
|
|
510
|
+
6709,
|
|
511
511
|
"{0} ({1} • {2}) ↔ {3} ({4} • {5})",
|
|
512
512
|
arg1.workingCopy.name,
|
|
513
513
|
SaveSourceRegistry.getSourceLabel(arg1.source),
|
package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryFileSystemProvider.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Event } from 'vscode/vscode/vs/base/common/event';
|
|
2
2
|
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
3
3
|
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
4
|
-
import {
|
|
4
|
+
import { FileType, hasReadWriteCapability } from 'vscode/vscode/vs/platform/files/common/files';
|
|
5
5
|
import { isEqual } from 'vscode/vscode/vs/base/common/resources';
|
|
6
6
|
import { VSBuffer } from 'vscode/vscode/vs/base/common/buffer';
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ class LocalHistoryFileSystemProvider {
|
|
|
30
30
|
associatedResource: LocalHistoryFileSystemProvider.EMPTY_RESOURCE
|
|
31
31
|
}; }
|
|
32
32
|
get capabilities() {
|
|
33
|
-
return
|
|
33
|
+
return 2 | 2048 ;
|
|
34
34
|
}
|
|
35
35
|
constructor(fileService) {
|
|
36
36
|
this.fileService = fileService;
|
|
@@ -34,7 +34,7 @@ let LocalHistoryTimeline = class LocalHistoryTimeline extends Disposable {
|
|
|
34
34
|
this.configurationService = configurationService;
|
|
35
35
|
this.contextService = contextService;
|
|
36
36
|
this.id = 'timeline.localHistory';
|
|
37
|
-
this.label = ( localize(
|
|
37
|
+
this.label = ( localize(6727, "Local History"));
|
|
38
38
|
this.scheme = '*';
|
|
39
39
|
this._onDidChange = this._register(( (new Emitter())));
|
|
40
40
|
this.onDidChange = this._onDidChange.event;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { localize } from 'vscode/vscode/vs/nls';
|
|
2
2
|
import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
|
|
3
|
-
import 'vscode/vscode/vs/platform/instantiation/common/extensions';
|
|
4
3
|
import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
|
|
5
4
|
import { Extensions as Extensions$1 } from 'vscode/vscode/vs/workbench/common/views';
|
|
6
5
|
import { VIEW_CONTAINER } from 'vscode/vscode/vs/workbench/contrib/files/browser/explorerViewlet';
|
|
@@ -43,12 +43,10 @@ import { ColorScheme } from 'vscode/vscode/vs/platform/theme/common/theme';
|
|
|
43
43
|
import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
|
|
44
44
|
import { registerIcon } from 'vscode/vscode/vs/platform/theme/common/iconRegistry';
|
|
45
45
|
import { API_OPEN_EDITOR_COMMAND_ID, API_OPEN_DIFF_EDITOR_COMMAND_ID } from 'vscode/vscode/vs/workbench/browser/parts/editor/editorCommands';
|
|
46
|
-
import { MarshalledId } from 'vscode/vscode/vs/base/common/marshallingIds';
|
|
47
46
|
import { isString } from 'vscode/vscode/vs/base/common/types';
|
|
48
47
|
import { renderMarkdownAsPlaintext } from 'vscode/vscode/vs/base/browser/markdownRenderer';
|
|
49
48
|
import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
|
|
50
49
|
import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
51
|
-
import { StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
52
50
|
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
53
51
|
import { getDefaultHoverDelegate } from 'vscode/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
|
|
54
52
|
import { IHoverService } from 'vscode/vscode/vs/platform/hover/browser/hover.service';
|
|
@@ -175,7 +173,7 @@ class LoadMoreCommand {
|
|
|
175
173
|
return this.label;
|
|
176
174
|
}
|
|
177
175
|
get label() {
|
|
178
|
-
return this.loading ? ( localize(
|
|
176
|
+
return this.loading ? ( localize(6710, "Loading...")) : ( localize(6711, "Load more"));
|
|
179
177
|
}
|
|
180
178
|
get themeIcon() {
|
|
181
179
|
return undefined;
|
|
@@ -184,7 +182,7 @@ class LoadMoreCommand {
|
|
|
184
182
|
const TimelineFollowActiveEditorContext = ( (new RawContextKey('timelineFollowActiveEditor', true, true)));
|
|
185
183
|
const TimelineExcludeSources = ( (new RawContextKey('timelineExcludeSources', '[]', true)));
|
|
186
184
|
let TimelinePane = class TimelinePane extends ViewPane {
|
|
187
|
-
static { this.TITLE = ( localize2(
|
|
185
|
+
static { this.TITLE = ( localize2(6712, "Timeline")); }
|
|
188
186
|
constructor(options, keybindingService, contextMenuService, contextKeyService, configurationService, storageService, viewDescriptorService, instantiationService, editorService, commandService, progressService, timelineService, openerService, themeService, telemetryService, hoverService, labelService, uriIdentityService, extensionService) {
|
|
189
187
|
super({ ...options, titleMenuId: MenuId.TimelineTitle }, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService, hoverService);
|
|
190
188
|
this.storageService = storageService;
|
|
@@ -205,10 +203,10 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
205
203
|
this.commands = this._register(this.instantiationService.createInstance(TimelinePaneCommands, this));
|
|
206
204
|
this.followActiveEditorContext = TimelineFollowActiveEditorContext.bindTo(this.contextKeyService);
|
|
207
205
|
this.timelineExcludeSourcesContext = TimelineExcludeSources.bindTo(this.contextKeyService);
|
|
208
|
-
const excludedSourcesString = storageService.get('timeline.excludeSources',
|
|
206
|
+
const excludedSourcesString = storageService.get('timeline.excludeSources', 0 , '[]');
|
|
209
207
|
this.timelineExcludeSourcesContext.set(excludedSourcesString);
|
|
210
208
|
this.excludedSources = ( (new Set(JSON.parse(excludedSourcesString))));
|
|
211
|
-
this._register(storageService.onDidChangeValue(
|
|
209
|
+
this._register(storageService.onDidChangeValue(0 , 'timeline.excludeSources', this._register(( (new DisposableStore()))))(this.onStorageServiceChanged, this));
|
|
212
210
|
this._register(configurationService.onDidChangeConfiguration(this.onConfigurationChanged, this));
|
|
213
211
|
this._register(timelineService.onDidChangeProviders(this.onProvidersChanged, this));
|
|
214
212
|
this._register(timelineService.onDidChangeTimeline(this.onTimelineChanged, this));
|
|
@@ -257,7 +255,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
257
255
|
this.loadTimeline(true);
|
|
258
256
|
}
|
|
259
257
|
onStorageServiceChanged() {
|
|
260
|
-
const excludedSourcesString = this.storageService.get('timeline.excludeSources',
|
|
258
|
+
const excludedSourcesString = this.storageService.get('timeline.excludeSources', 0 , '[]');
|
|
261
259
|
this.timelineExcludeSourcesContext.set(excludedSourcesString);
|
|
262
260
|
this.excludedSources = ( (new Set(JSON.parse(excludedSourcesString))));
|
|
263
261
|
const missing = this.timelineService.getSources()
|
|
@@ -620,7 +618,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
620
618
|
this._isEmpty = !this.hasVisibleItems;
|
|
621
619
|
if (this.uri === undefined) {
|
|
622
620
|
this.updateFilename(undefined);
|
|
623
|
-
this.message = ( localize(
|
|
621
|
+
this.message = ( localize(6713, "The active editor cannot provide timeline information."));
|
|
624
622
|
}
|
|
625
623
|
else if (this._isEmpty) {
|
|
626
624
|
if (this.pendingRequests.size !== 0) {
|
|
@@ -630,24 +628,24 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
630
628
|
this.updateFilename(this.labelService.getUriBasenameLabel(this.uri));
|
|
631
629
|
const scmProviderCount = this.contextKeyService.getContextKeyValue('scm.providerCount');
|
|
632
630
|
if (this.timelineService.getSources().filter(({ id }) => !( (this.excludedSources.has(id)))).length === 0) {
|
|
633
|
-
this.message = ( localize(
|
|
631
|
+
this.message = ( localize(6714, "All timeline sources have been filtered out."));
|
|
634
632
|
}
|
|
635
633
|
else {
|
|
636
634
|
if (this.configurationService.getValue('workbench.localHistory.enabled') && !( (this.excludedSources.has('timeline.localHistory')))) {
|
|
637
635
|
this.message = ( localize(
|
|
638
|
-
|
|
636
|
+
6715,
|
|
639
637
|
"Local History will track recent changes as you save them unless the file has been excluded or is too large."
|
|
640
638
|
));
|
|
641
639
|
}
|
|
642
640
|
else if (this.excludedSources.size > 0) {
|
|
643
|
-
this.message = ( localize(
|
|
641
|
+
this.message = ( localize(6716, "No filtered timeline information was provided."));
|
|
644
642
|
}
|
|
645
643
|
else {
|
|
646
|
-
this.message = ( localize(
|
|
644
|
+
this.message = ( localize(6717, "No timeline information was provided."));
|
|
647
645
|
}
|
|
648
646
|
}
|
|
649
647
|
if (!scmProviderCount || scmProviderCount === 0) {
|
|
650
|
-
this.message += ' ' + ( localize(
|
|
648
|
+
this.message += ' ' + ( localize(6718, "Source Control has not been configured."));
|
|
651
649
|
}
|
|
652
650
|
}
|
|
653
651
|
}
|
|
@@ -704,7 +702,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
704
702
|
container.classList.add('tree-explorer-viewlet-tree-view', 'timeline-tree-view');
|
|
705
703
|
this.$message = append(this.$container, $('.message'));
|
|
706
704
|
this.$message.classList.add('timeline-subtle');
|
|
707
|
-
this.message = ( localize(
|
|
705
|
+
this.message = ( localize(6713, "The active editor cannot provide timeline information."));
|
|
708
706
|
this.$tree = document.createElement('div');
|
|
709
707
|
this.$tree.classList.add('customview-tree', 'file-icon-themable-tree', 'hide-arrows');
|
|
710
708
|
container.appendChild(this.$tree);
|
|
@@ -721,7 +719,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
721
719
|
if (isLoadMoreCommand(element)) {
|
|
722
720
|
return element.ariaLabel;
|
|
723
721
|
}
|
|
724
|
-
return element.accessibilityInformation ? element.accessibilityInformation.label : ( localize(
|
|
722
|
+
return element.accessibilityInformation ? element.accessibilityInformation.label : ( localize(6719, "{0}: {1}", element.relativeTimeFullWord ?? '', element.label));
|
|
725
723
|
},
|
|
726
724
|
getRole(element) {
|
|
727
725
|
if (isLoadMoreCommand(element)) {
|
|
@@ -730,7 +728,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
730
728
|
return element.accessibilityInformation && element.accessibilityInformation.role ? element.accessibilityInformation.role : 'treeitem';
|
|
731
729
|
},
|
|
732
730
|
getWidgetAriaLabel() {
|
|
733
|
-
return ( localize(
|
|
731
|
+
return ( localize(6712, "Timeline"));
|
|
734
732
|
}
|
|
735
733
|
},
|
|
736
734
|
keyboardNavigationLabelProvider: ( (new TimelineKeyboardNavigationLabelProvider())),
|
|
@@ -791,7 +789,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
791
789
|
setLoadingUriMessage() {
|
|
792
790
|
const file = this.uri && this.labelService.getUriBasenameLabel(this.uri);
|
|
793
791
|
this.updateFilename(file);
|
|
794
|
-
this.message = file ? ( localize(
|
|
792
|
+
this.message = file ? ( localize(6720, "Loading timeline for {0}...", file)) : '';
|
|
795
793
|
}
|
|
796
794
|
onContextMenu(commands, treeEvent) {
|
|
797
795
|
const item = treeEvent.element;
|
|
@@ -887,7 +885,7 @@ class TimelineActionRunner extends ActionRunner {
|
|
|
887
885
|
return;
|
|
888
886
|
}
|
|
889
887
|
await action.run({
|
|
890
|
-
$mid:
|
|
888
|
+
$mid: 12 ,
|
|
891
889
|
handle: item.handle,
|
|
892
890
|
source: item.source,
|
|
893
891
|
uri
|
|
@@ -979,9 +977,9 @@ TimelineTreeRenderer = ( (__decorate([
|
|
|
979
977
|
( (__param(1, IInstantiationService))),
|
|
980
978
|
( (__param(2, IThemeService)))
|
|
981
979
|
], TimelineTreeRenderer)));
|
|
982
|
-
const timelineRefresh = registerIcon('timeline-refresh', Codicon.refresh, ( localize(
|
|
983
|
-
const timelinePin = registerIcon('timeline-pin', Codicon.pin, ( localize(
|
|
984
|
-
const timelineUnpin = registerIcon('timeline-unpin', Codicon.pinned, ( localize(
|
|
980
|
+
const timelineRefresh = registerIcon('timeline-refresh', Codicon.refresh, ( localize(6721, 'Icon for the refresh timeline action.')));
|
|
981
|
+
const timelinePin = registerIcon('timeline-pin', Codicon.pin, ( localize(6722, 'Icon for the pin timeline action.')));
|
|
982
|
+
const timelineUnpin = registerIcon('timeline-unpin', Codicon.pinned, ( localize(6723, 'Icon for the unpin timeline action.')));
|
|
985
983
|
let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
986
984
|
constructor(pane, timelineService, storageService, contextKeyService, menuService) {
|
|
987
985
|
super();
|
|
@@ -995,9 +993,9 @@ let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
|
995
993
|
constructor() {
|
|
996
994
|
super({
|
|
997
995
|
id: 'timeline.refresh',
|
|
998
|
-
title: ( localize2(
|
|
996
|
+
title: ( localize2(6724, "Refresh")),
|
|
999
997
|
icon: timelineRefresh,
|
|
1000
|
-
category: ( localize2(
|
|
998
|
+
category: ( localize2(6712, "Timeline")),
|
|
1001
999
|
menu: {
|
|
1002
1000
|
id: MenuId.TimelineTitle,
|
|
1003
1001
|
group: 'navigation',
|
|
@@ -1013,9 +1011,9 @@ let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
|
1013
1011
|
this._register(MenuRegistry.appendMenuItem(MenuId.TimelineTitle, ({
|
|
1014
1012
|
command: {
|
|
1015
1013
|
id: 'timeline.toggleFollowActiveEditor',
|
|
1016
|
-
title: ( localize2(
|
|
1014
|
+
title: ( localize2(6725, 'Pin the Current Timeline')),
|
|
1017
1015
|
icon: timelinePin,
|
|
1018
|
-
category: ( localize2(
|
|
1016
|
+
category: ( localize2(6712, "Timeline")),
|
|
1019
1017
|
},
|
|
1020
1018
|
group: 'navigation',
|
|
1021
1019
|
order: 98,
|
|
@@ -1024,9 +1022,9 @@ let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
|
1024
1022
|
this._register(MenuRegistry.appendMenuItem(MenuId.TimelineTitle, ({
|
|
1025
1023
|
command: {
|
|
1026
1024
|
id: 'timeline.toggleFollowActiveEditor',
|
|
1027
|
-
title: ( localize2(
|
|
1025
|
+
title: ( localize2(6726, 'Unpin the Current Timeline')),
|
|
1028
1026
|
icon: timelineUnpin,
|
|
1029
|
-
category: ( localize2(
|
|
1027
|
+
category: ( localize2(6712, "Timeline")),
|
|
1030
1028
|
},
|
|
1031
1029
|
group: 'navigation',
|
|
1032
1030
|
order: 98,
|
|
@@ -1056,7 +1054,7 @@ let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
|
1056
1054
|
updateTimelineSourceFilters() {
|
|
1057
1055
|
this.sourceDisposables.clear();
|
|
1058
1056
|
const excluded = ( (new Set(
|
|
1059
|
-
JSON.parse(this.storageService.get('timeline.excludeSources',
|
|
1057
|
+
JSON.parse(this.storageService.get('timeline.excludeSources', 0 , '[]'))
|
|
1060
1058
|
)));
|
|
1061
1059
|
for (const source of this.timelineService.getSources()) {
|
|
1062
1060
|
this.sourceDisposables.add(registerAction2(class extends Action2 {
|
|
@@ -1082,7 +1080,7 @@ let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
|
1082
1080
|
excluded.add(source.id);
|
|
1083
1081
|
}
|
|
1084
1082
|
const storageService = accessor.get(IStorageService);
|
|
1085
|
-
storageService.store('timeline.excludeSources', JSON.stringify([...( (excluded.keys()))]),
|
|
1083
|
+
storageService.store('timeline.excludeSources', JSON.stringify([...( (excluded.keys()))]), 0 , 0 );
|
|
1086
1084
|
}
|
|
1087
1085
|
}));
|
|
1088
1086
|
}
|