@codingame/monaco-vscode-files-service-override 17.2.1 → 18.0.1
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/index.d.ts +1 -1
- package/index.js +3 -3
- package/package.json +9 -9
- package/vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js +7 -7
- package/vscode/src/vs/platform/files/common/fileService.js +27 -27
- package/vscode/src/vs/platform/files/common/io.js +1 -1
- package/vscode/src/vs/workbench/services/textfile/browser/textFileService.js +14 -14
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.js +1 -1
- package/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.js +2 -2
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type IEditorOverrideServices } from "@codingame/monaco-vscode-api/vscode/vs/editor/standalone/browser/standaloneServices";
|
|
2
|
-
import { InMemoryFileSystemProvider } from "@codingame/monaco-vscode-
|
|
2
|
+
import { InMemoryFileSystemProvider } from "@codingame/monaco-vscode-8a9062f2-d169-567b-848e-a2530c97ea18-common/vscode/vs/platform/files/common/inMemoryFilesystemProvider";
|
|
3
3
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
4
4
|
import { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileType, type IFileSystemProvider, FileSystemProviderError, FileSystemProviderErrorCode, type IFileChange, type IFileDeleteOptions, type IFileOverwriteOptions, type IFileSystemProviderWithFileReadWriteCapability, type IFileWriteOptions, type IStat, type IWatchOptions, type IFileSystemProviderWithOpenReadWriteCloseCapability, type IFileSystemProviderWithFileReadStreamCapability, type IFileReadStreamOptions, type IFileSystemProviderWithFileAtomicReadCapability, type IFileSystemProviderWithFileAtomicWriteCapability, type IFileSystemProviderWithFileAtomicDeleteCapability } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files";
|
|
5
5
|
import { type IDisposable, Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
package/index.js
CHANGED
|
@@ -4,8 +4,8 @@ import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/
|
|
|
4
4
|
import { mkdirp, FileService } from './vscode/src/vs/platform/files/common/fileService.js';
|
|
5
5
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log';
|
|
6
6
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
7
|
-
import { InMemoryFileSystemProvider } from '@codingame/monaco-vscode-
|
|
8
|
-
export { InMemoryFileSystemProvider } from '@codingame/monaco-vscode-
|
|
7
|
+
import { InMemoryFileSystemProvider } from '@codingame/monaco-vscode-8a9062f2-d169-567b-848e-a2530c97ea18-common/vscode/vs/platform/files/common/inMemoryFilesystemProvider';
|
|
8
|
+
export { InMemoryFileSystemProvider } from '@codingame/monaco-vscode-8a9062f2-d169-567b-848e-a2530c97ea18-common/vscode/vs/platform/files/common/inMemoryFilesystemProvider';
|
|
9
9
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
10
10
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
11
11
|
import { FileType, FilePermission, createFileSystemProviderError, FileSystemProviderErrorCode, FileSystemProviderCapabilities, FileChangeType, FileSystemProviderError, hasFileReadStreamCapability } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
|
|
@@ -22,7 +22,7 @@ export { IndexedDB } from '@codingame/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c798
|
|
|
22
22
|
import { BufferLogger } from '@codingame/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common/vscode/vs/platform/log/common/bufferLog';
|
|
23
23
|
import { ITextFileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/textfile/common/textfiles.service';
|
|
24
24
|
import { BrowserTextFileService } from './vscode/src/vs/workbench/services/textfile/browser/browserTextFileService.js';
|
|
25
|
-
import { FilesConfigurationService } from '@codingame/monaco-vscode-
|
|
25
|
+
import { FilesConfigurationService } from '@codingame/monaco-vscode-a4683c2b-a0d2-5112-96ba-eedc605346d2-common/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService';
|
|
26
26
|
import { IFilesConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.service';
|
|
27
27
|
import { BrowserElevatedFileService } from './vscode/src/vs/workbench/services/files/browser/elevatedFileService.js';
|
|
28
28
|
import { IElevatedFileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/files/common/elevatedFileService.service';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-files-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "18.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - files service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common": "
|
|
19
|
-
"@codingame/monaco-vscode-15626ec7-b165-51e1-8caf-7bcc2ae9b95a-common": "
|
|
20
|
-
"@codingame/monaco-vscode-
|
|
21
|
-
"@codingame/monaco-vscode-
|
|
22
|
-
"@codingame/monaco-vscode-
|
|
23
|
-
"@codingame/monaco-vscode-
|
|
24
|
-
"@codingame/monaco-vscode-api": "
|
|
25
|
-
"@codingame/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common": "
|
|
18
|
+
"@codingame/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common": "18.0.1",
|
|
19
|
+
"@codingame/monaco-vscode-15626ec7-b165-51e1-8caf-7bcc2ae9b95a-common": "18.0.1",
|
|
20
|
+
"@codingame/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c7989c5f128a-common": "18.0.1",
|
|
21
|
+
"@codingame/monaco-vscode-8a9062f2-d169-567b-848e-a2530c97ea18-common": "18.0.1",
|
|
22
|
+
"@codingame/monaco-vscode-924e8f00-6faf-5059-b518-e43427d29ab3-common": "18.0.1",
|
|
23
|
+
"@codingame/monaco-vscode-a4683c2b-a0d2-5112-96ba-eedc605346d2-common": "18.0.1",
|
|
24
|
+
"@codingame/monaco-vscode-api": "18.0.1",
|
|
25
|
+
"@codingame/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common": "18.0.1"
|
|
26
26
|
},
|
|
27
27
|
"main": "index.js",
|
|
28
28
|
"module": "index.js",
|
|
@@ -8,15 +8,15 @@ import { isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/typ
|
|
|
8
8
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
9
9
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
10
10
|
import { createFileSystemProviderError, FileSystemProviderErrorCode, FileType, FileSystemProviderCapabilities, FileChangeType } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
|
|
11
|
-
import { BroadcastDataChannel } from '@codingame/monaco-vscode-
|
|
11
|
+
import { BroadcastDataChannel } from '@codingame/monaco-vscode-924e8f00-6faf-5059-b518-e43427d29ab3-common/vscode/vs/base/browser/broadcast';
|
|
12
12
|
|
|
13
|
-
const ERR_FILE_NOT_FOUND = createFileSystemProviderError(( localize(
|
|
14
|
-
const ERR_FILE_IS_DIR = createFileSystemProviderError(( localize(
|
|
15
|
-
const ERR_FILE_NOT_DIR = createFileSystemProviderError(( localize(
|
|
16
|
-
const ERR_DIR_NOT_EMPTY = createFileSystemProviderError(( localize(
|
|
17
|
-
const ERR_FILE_EXCEEDS_STORAGE_QUOTA = createFileSystemProviderError(( localize(
|
|
13
|
+
const ERR_FILE_NOT_FOUND = createFileSystemProviderError(( localize(1851, "File does not exist")), FileSystemProviderErrorCode.FileNotFound);
|
|
14
|
+
const ERR_FILE_IS_DIR = createFileSystemProviderError(( localize(1852, "File is Directory")), FileSystemProviderErrorCode.FileIsADirectory);
|
|
15
|
+
const ERR_FILE_NOT_DIR = createFileSystemProviderError(( localize(1853, "File is not a directory")), FileSystemProviderErrorCode.FileNotADirectory);
|
|
16
|
+
const ERR_DIR_NOT_EMPTY = createFileSystemProviderError(( localize(1854, "Directory is not empty")), FileSystemProviderErrorCode.Unknown);
|
|
17
|
+
const ERR_FILE_EXCEEDS_STORAGE_QUOTA = createFileSystemProviderError(( localize(1855, "File exceeds available storage quota")), FileSystemProviderErrorCode.FileExceedsStorageQuota);
|
|
18
18
|
const ERR_UNKNOWN_INTERNAL = (message) => createFileSystemProviderError(( localize(
|
|
19
|
-
|
|
19
|
+
1856,
|
|
20
20
|
"Internal error occurred in IndexedDB File System Provider. ({0})",
|
|
21
21
|
message
|
|
22
22
|
)), FileSystemProviderErrorCode.Unknown);
|
|
@@ -33,7 +33,7 @@ async function mkdirp(providerExtUri, provider, directory) {
|
|
|
33
33
|
const stat = await provider.stat(directory);
|
|
34
34
|
if ((stat.type & FileType.Directory) === 0) {
|
|
35
35
|
throw ( new Error(( localize(
|
|
36
|
-
|
|
36
|
+
1857,
|
|
37
37
|
"Unable to create folder '{0}' that already exists but is not a directory",
|
|
38
38
|
resourceForError(directory)
|
|
39
39
|
))));
|
|
@@ -144,7 +144,7 @@ let FileService = class FileService extends Disposable {
|
|
|
144
144
|
async withProvider(resource) {
|
|
145
145
|
if (!isAbsolutePath(resource)) {
|
|
146
146
|
throw ( new FileOperationError(( localize(
|
|
147
|
-
|
|
147
|
+
1858,
|
|
148
148
|
"Unable to resolve filesystem provider with relative file path '{0}'",
|
|
149
149
|
this.resourceForError(resource)
|
|
150
150
|
)), FileOperationResult.FILE_INVALID_PATH));
|
|
@@ -154,7 +154,7 @@ let FileService = class FileService extends Disposable {
|
|
|
154
154
|
if (!provider) {
|
|
155
155
|
const error = ( new ErrorNoTelemetry());
|
|
156
156
|
error.message = ( localize(
|
|
157
|
-
|
|
157
|
+
1859,
|
|
158
158
|
"ENOPRO: No file system provider found for resource '{0}'",
|
|
159
159
|
(resource.toString())
|
|
160
160
|
));
|
|
@@ -187,7 +187,7 @@ let FileService = class FileService extends Disposable {
|
|
|
187
187
|
catch (error) {
|
|
188
188
|
if (toFileSystemProviderErrorCode(error) === FileSystemProviderErrorCode.FileNotFound) {
|
|
189
189
|
throw ( new FileOperationError(( localize(
|
|
190
|
-
|
|
190
|
+
1860,
|
|
191
191
|
"Unable to resolve nonexistent file '{0}'",
|
|
192
192
|
this.resourceForError(resource)
|
|
193
193
|
)), FileOperationResult.FILE_NOT_FOUND));
|
|
@@ -298,7 +298,7 @@ let FileService = class FileService extends Disposable {
|
|
|
298
298
|
async doValidateCreateFile(resource, options) {
|
|
299
299
|
if (!options?.overwrite && (await this.exists(resource))) {
|
|
300
300
|
throw ( new FileOperationError(( localize(
|
|
301
|
-
|
|
301
|
+
1861,
|
|
302
302
|
"Unable to create file '{0}' that already exists when overwrite flag is not set",
|
|
303
303
|
this.resourceForError(resource)
|
|
304
304
|
)), FileOperationResult.FILE_MODIFIED_SINCE, options));
|
|
@@ -341,7 +341,7 @@ let FileService = class FileService extends Disposable {
|
|
|
341
341
|
}
|
|
342
342
|
catch (error) {
|
|
343
343
|
throw ( new FileOperationError(( localize(
|
|
344
|
-
|
|
344
|
+
1862,
|
|
345
345
|
"Unable to write file '{0}' ({1})",
|
|
346
346
|
this.resourceForError(resource),
|
|
347
347
|
(ensureFileSystemProviderError(error).toString())
|
|
@@ -374,7 +374,7 @@ let FileService = class FileService extends Disposable {
|
|
|
374
374
|
const unlock = !!options?.unlock;
|
|
375
375
|
if (unlock && !(provider.capabilities & FileSystemProviderCapabilities.FileWriteUnlock)) {
|
|
376
376
|
throw ( new Error(( localize(
|
|
377
|
-
|
|
377
|
+
1863,
|
|
378
378
|
"Unable to unlock file '{0}' because provider does not support it.",
|
|
379
379
|
this.resourceForError(resource)
|
|
380
380
|
))));
|
|
@@ -383,21 +383,21 @@ let FileService = class FileService extends Disposable {
|
|
|
383
383
|
if (atomic) {
|
|
384
384
|
if (!(provider.capabilities & FileSystemProviderCapabilities.FileAtomicWrite)) {
|
|
385
385
|
throw ( new Error(( localize(
|
|
386
|
-
|
|
386
|
+
1864,
|
|
387
387
|
"Unable to atomically write file '{0}' because provider does not support it.",
|
|
388
388
|
this.resourceForError(resource)
|
|
389
389
|
))));
|
|
390
390
|
}
|
|
391
391
|
if (!(provider.capabilities & FileSystemProviderCapabilities.FileReadWrite)) {
|
|
392
392
|
throw ( new Error(( localize(
|
|
393
|
-
|
|
393
|
+
1865,
|
|
394
394
|
"Unable to atomically write file '{0}' because provider does not support unbuffered writes.",
|
|
395
395
|
this.resourceForError(resource)
|
|
396
396
|
))));
|
|
397
397
|
}
|
|
398
398
|
if (unlock) {
|
|
399
399
|
throw ( new Error(( localize(
|
|
400
|
-
|
|
400
|
+
1866,
|
|
401
401
|
"Unable to unlock file '{0}' because atomic write is enabled.",
|
|
402
402
|
this.resourceForError(resource)
|
|
403
403
|
))));
|
|
@@ -412,7 +412,7 @@ let FileService = class FileService extends Disposable {
|
|
|
412
412
|
}
|
|
413
413
|
if ((stat.type & FileType.Directory) !== 0) {
|
|
414
414
|
throw ( new FileOperationError(( localize(
|
|
415
|
-
|
|
415
|
+
1867,
|
|
416
416
|
"Unable to write file '{0}' that is actually a directory",
|
|
417
417
|
this.resourceForError(resource)
|
|
418
418
|
)), FileOperationResult.FILE_IS_DIRECTORY, options));
|
|
@@ -433,7 +433,7 @@ let FileService = class FileService extends Disposable {
|
|
|
433
433
|
catch (error) {
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
|
-
throw ( new FileOperationError(( localize(
|
|
436
|
+
throw ( new FileOperationError(( localize(1868, "File Modified Since")), FileOperationResult.FILE_MODIFIED_SINCE, options));
|
|
437
437
|
}
|
|
438
438
|
return { stat, buffer };
|
|
439
439
|
}
|
|
@@ -515,7 +515,7 @@ let FileService = class FileService extends Disposable {
|
|
|
515
515
|
}
|
|
516
516
|
restoreReadError(error, resource, options) {
|
|
517
517
|
const message = ( localize(
|
|
518
|
-
|
|
518
|
+
1869,
|
|
519
519
|
"Unable to read file '{0}' ({1})",
|
|
520
520
|
this.resourceForError(resource),
|
|
521
521
|
(ensureFileSystemProviderError(error).toString())
|
|
@@ -575,13 +575,13 @@ let FileService = class FileService extends Disposable {
|
|
|
575
575
|
const stat = await this.resolve(resource, { resolveMetadata: true });
|
|
576
576
|
if (stat.isDirectory) {
|
|
577
577
|
throw ( new FileOperationError(( localize(
|
|
578
|
-
|
|
578
|
+
1870,
|
|
579
579
|
"Unable to read file '{0}' that is actually a directory",
|
|
580
580
|
this.resourceForError(resource)
|
|
581
581
|
)), FileOperationResult.FILE_IS_DIRECTORY, options));
|
|
582
582
|
}
|
|
583
583
|
if (typeof options?.etag === 'string' && options.etag !== ETAG_DISABLED && options.etag === stat.etag) {
|
|
584
|
-
throw ( new NotModifiedSinceFileOperationError(( localize(
|
|
584
|
+
throw ( new NotModifiedSinceFileOperationError(( localize(1871, "File not modified since")), stat, options));
|
|
585
585
|
}
|
|
586
586
|
this.validateReadFileLimits(resource, stat.size, options);
|
|
587
587
|
return stat;
|
|
@@ -589,7 +589,7 @@ let FileService = class FileService extends Disposable {
|
|
|
589
589
|
validateReadFileLimits(resource, size, options) {
|
|
590
590
|
if (typeof options?.limits?.size === 'number' && size > options.limits.size) {
|
|
591
591
|
throw ( new TooLargeFileOperationError(( localize(
|
|
592
|
-
|
|
592
|
+
1872,
|
|
593
593
|
"Unable to read file '{0}' that is too large to open",
|
|
594
594
|
this.resourceForError(resource)
|
|
595
595
|
)), FileOperationResult.FILE_TOO_LARGE, size, options));
|
|
@@ -711,7 +711,7 @@ let FileService = class FileService extends Disposable {
|
|
|
711
711
|
}
|
|
712
712
|
if (isSameResourceWithDifferentPathCase && mode === 'copy') {
|
|
713
713
|
throw ( new Error(( localize(
|
|
714
|
-
|
|
714
|
+
1873,
|
|
715
715
|
"Unable to copy when source '{0}' is same as target '{1}' with different path case on a case insensitive file system",
|
|
716
716
|
this.resourceForError(source),
|
|
717
717
|
this.resourceForError(target)
|
|
@@ -719,7 +719,7 @@ let FileService = class FileService extends Disposable {
|
|
|
719
719
|
}
|
|
720
720
|
if (!isSameResourceWithDifferentPathCase && providerExtUri.isEqualOrParent(target, source)) {
|
|
721
721
|
throw ( new Error(( localize(
|
|
722
|
-
|
|
722
|
+
1874,
|
|
723
723
|
"Unable to move/copy when source '{0}' is parent of target '{1}'.",
|
|
724
724
|
this.resourceForError(source),
|
|
725
725
|
this.resourceForError(target)
|
|
@@ -730,7 +730,7 @@ let FileService = class FileService extends Disposable {
|
|
|
730
730
|
if (exists && !isSameResourceWithDifferentPathCase) {
|
|
731
731
|
if (!overwrite) {
|
|
732
732
|
throw ( new FileOperationError(( localize(
|
|
733
|
-
|
|
733
|
+
1875,
|
|
734
734
|
"Unable to move/copy '{0}' because target '{1}' already exists at destination.",
|
|
735
735
|
this.resourceForError(source),
|
|
736
736
|
this.resourceForError(target)
|
|
@@ -740,7 +740,7 @@ let FileService = class FileService extends Disposable {
|
|
|
740
740
|
const { providerExtUri } = this.getExtUri(sourceProvider);
|
|
741
741
|
if (providerExtUri.isEqualOrParent(source, target)) {
|
|
742
742
|
throw ( new Error(( localize(
|
|
743
|
-
|
|
743
|
+
1876,
|
|
744
744
|
"Unable to move/copy '{0}' into '{1}' since a file would replace the folder it is contained in.",
|
|
745
745
|
this.resourceForError(source),
|
|
746
746
|
this.resourceForError(target)
|
|
@@ -785,7 +785,7 @@ let FileService = class FileService extends Disposable {
|
|
|
785
785
|
const useTrash = !!options?.useTrash;
|
|
786
786
|
if (useTrash && !(provider.capabilities & FileSystemProviderCapabilities.Trash)) {
|
|
787
787
|
throw ( new Error(( localize(
|
|
788
|
-
|
|
788
|
+
1877,
|
|
789
789
|
"Unable to delete file '{0}' via trash because provider does not support it.",
|
|
790
790
|
this.resourceForError(resource)
|
|
791
791
|
))));
|
|
@@ -793,14 +793,14 @@ let FileService = class FileService extends Disposable {
|
|
|
793
793
|
const atomic = options?.atomic;
|
|
794
794
|
if (atomic && !(provider.capabilities & FileSystemProviderCapabilities.FileAtomicDelete)) {
|
|
795
795
|
throw ( new Error(( localize(
|
|
796
|
-
|
|
796
|
+
1878,
|
|
797
797
|
"Unable to delete file '{0}' atomically because provider does not support it.",
|
|
798
798
|
this.resourceForError(resource)
|
|
799
799
|
))));
|
|
800
800
|
}
|
|
801
801
|
if (useTrash && atomic) {
|
|
802
802
|
throw ( new Error(( localize(
|
|
803
|
-
|
|
803
|
+
1879,
|
|
804
804
|
"Unable to atomically delete file '{0}' because using trash is enabled.",
|
|
805
805
|
this.resourceForError(resource)
|
|
806
806
|
))));
|
|
@@ -816,7 +816,7 @@ let FileService = class FileService extends Disposable {
|
|
|
816
816
|
}
|
|
817
817
|
else {
|
|
818
818
|
throw ( new FileOperationError(( localize(
|
|
819
|
-
|
|
819
|
+
1880,
|
|
820
820
|
"Unable to delete nonexistent file '{0}'",
|
|
821
821
|
this.resourceForError(resource)
|
|
822
822
|
)), FileOperationResult.FILE_NOT_FOUND));
|
|
@@ -826,7 +826,7 @@ let FileService = class FileService extends Disposable {
|
|
|
826
826
|
const stat = await this.resolve(resource);
|
|
827
827
|
if (stat.isDirectory && Array.isArray(stat.children) && stat.children.length > 0) {
|
|
828
828
|
throw ( new Error(( localize(
|
|
829
|
-
|
|
829
|
+
1881,
|
|
830
830
|
"Unable to delete non-empty folder '{0}'.",
|
|
831
831
|
this.resourceForError(resource)
|
|
832
832
|
))));
|
|
@@ -1085,7 +1085,7 @@ let FileService = class FileService extends Disposable {
|
|
|
1085
1085
|
throwIfFileSystemIsReadonly(provider, resource) {
|
|
1086
1086
|
if (provider.capabilities & FileSystemProviderCapabilities.Readonly) {
|
|
1087
1087
|
throw ( new FileOperationError(( localize(
|
|
1088
|
-
|
|
1088
|
+
1882,
|
|
1089
1089
|
"Unable to modify read-only file '{0}'",
|
|
1090
1090
|
this.resourceForError(resource)
|
|
1091
1091
|
)), FileOperationResult.FILE_PERMISSION_DENIED));
|
|
@@ -1095,7 +1095,7 @@ let FileService = class FileService extends Disposable {
|
|
|
1095
1095
|
throwIfFileIsReadonly(resource, stat) {
|
|
1096
1096
|
if ((stat.permissions ?? 0) & FilePermission.Readonly) {
|
|
1097
1097
|
throw ( new FileOperationError(( localize(
|
|
1098
|
-
|
|
1098
|
+
1882,
|
|
1099
1099
|
"Unable to modify read-only file '{0}'",
|
|
1100
1100
|
this.resourceForError(resource)
|
|
1101
1101
|
)), FileOperationResult.FILE_PERMISSION_DENIED));
|
|
@@ -70,7 +70,7 @@ function throwIfCancelled(token) {
|
|
|
70
70
|
}
|
|
71
71
|
function throwIfTooLarge(totalBytesRead, options) {
|
|
72
72
|
if (typeof options?.limits?.size === 'number' && totalBytesRead > options.limits.size) {
|
|
73
|
-
throw createFileSystemProviderError(( localize(
|
|
73
|
+
throw createFileSystemProviderError(( localize(1889, "File is too large to open")), FileSystemProviderErrorCode.FileTooLarge);
|
|
74
74
|
}
|
|
75
75
|
return true;
|
|
76
76
|
}
|
|
@@ -22,7 +22,7 @@ import { bufferToStream } from '@codingame/monaco-vscode-api/vscode/vs/base/comm
|
|
|
22
22
|
import { ITextResourceConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/textResourceConfiguration.service';
|
|
23
23
|
import { PLAINTEXT_LANGUAGE_ID } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/modesRegistry';
|
|
24
24
|
import { IFilesConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.service';
|
|
25
|
-
import { BaseTextEditorModel } from '@codingame/monaco-vscode-
|
|
25
|
+
import { BaseTextEditorModel } from '@codingame/monaco-vscode-924e8f00-6faf-5059-b518-e43427d29ab3-common/vscode/vs/workbench/common/editor/textEditorModel';
|
|
26
26
|
import { ICodeEditorService } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/codeEditorService.service';
|
|
27
27
|
import { IPathService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService.service';
|
|
28
28
|
import { IWorkingCopyFileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/workingCopy/common/workingCopyFileService.service';
|
|
@@ -53,8 +53,8 @@ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/sear
|
|
|
53
53
|
var AbstractTextFileService_1;
|
|
54
54
|
let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
55
55
|
static { AbstractTextFileService_1 = this; }
|
|
56
|
-
static { this.TEXTFILE_SAVE_CREATE_SOURCE = SaveSourceRegistry.registerSource('textFileCreate.source', ( localize(
|
|
57
|
-
static { this.TEXTFILE_SAVE_REPLACE_SOURCE = SaveSourceRegistry.registerSource('textFileOverwrite.source', ( localize(
|
|
56
|
+
static { this.TEXTFILE_SAVE_CREATE_SOURCE = SaveSourceRegistry.registerSource('textFileCreate.source', ( localize(12872, "File Created"))); }
|
|
57
|
+
static { this.TEXTFILE_SAVE_REPLACE_SOURCE = SaveSourceRegistry.registerSource('textFileOverwrite.source', ( localize(12873, "File Replaced"))); }
|
|
58
58
|
constructor(fileService, untitledTextEditorService, lifecycleService, instantiationService, modelService, environmentService, dialogService, fileDialogService, textResourceConfigurationService, filesConfigurationService, codeEditorService, pathService, workingCopyFileService, uriIdentityService, languageService, logService, elevatedFileService, decorationsService) {
|
|
59
59
|
super();
|
|
60
60
|
this.fileService = fileService;
|
|
@@ -83,7 +83,7 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
83
83
|
constructor(files) {
|
|
84
84
|
super();
|
|
85
85
|
this.files = files;
|
|
86
|
-
this.label = ( localize(
|
|
86
|
+
this.label = ( localize(12874, "Text File Model Decorations"));
|
|
87
87
|
this._onDidChange = this._register(( new Emitter()));
|
|
88
88
|
this.onDidChange = this._onDidChange.event;
|
|
89
89
|
this.registerListeners();
|
|
@@ -110,20 +110,20 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
110
110
|
color: listErrorForeground,
|
|
111
111
|
letter: Codicon.lockSmall,
|
|
112
112
|
strikethrough: true,
|
|
113
|
-
tooltip: ( localize(
|
|
113
|
+
tooltip: ( localize(12875, "Deleted, Read-only")),
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
116
|
else if (isReadonly) {
|
|
117
117
|
return {
|
|
118
118
|
letter: Codicon.lockSmall,
|
|
119
|
-
tooltip: ( localize(
|
|
119
|
+
tooltip: ( localize(12876, "Read-only")),
|
|
120
120
|
};
|
|
121
121
|
}
|
|
122
122
|
else if (isOrphaned) {
|
|
123
123
|
return {
|
|
124
124
|
color: listErrorForeground,
|
|
125
125
|
strikethrough: true,
|
|
126
|
-
tooltip: ( localize(
|
|
126
|
+
tooltip: ( localize(12877, "Deleted")),
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
return undefined;
|
|
@@ -176,7 +176,7 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
176
176
|
catch (error) {
|
|
177
177
|
cts.dispose(true);
|
|
178
178
|
if (error.decodeStreamErrorKind === DecodeStreamErrorKind.STREAM_IS_BINARY) {
|
|
179
|
-
throw ( new TextFileOperationError(( localize(
|
|
179
|
+
throw ( new TextFileOperationError(( localize(12878, "File seems to be binary and cannot be opened as text")), TextFileOperationResult.FILE_IS_BINARY, options));
|
|
180
180
|
}
|
|
181
181
|
else {
|
|
182
182
|
throw error;
|
|
@@ -411,17 +411,17 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
411
411
|
const { confirmed } = await this.dialogService.confirm({
|
|
412
412
|
type: 'warning',
|
|
413
413
|
message: ( localize(
|
|
414
|
-
|
|
414
|
+
12879,
|
|
415
415
|
"'{0}' already exists. Do you want to replace it?",
|
|
416
416
|
basename(resource)
|
|
417
417
|
)),
|
|
418
418
|
detail: ( localize(
|
|
419
|
-
|
|
419
|
+
12880,
|
|
420
420
|
"A file or folder with the name '{0}' already exists in the folder '{1}'. Replacing it will overwrite its current contents.",
|
|
421
421
|
basename(resource),
|
|
422
422
|
basename(dirname(resource))
|
|
423
423
|
)),
|
|
424
|
-
primaryButton: ( localize(
|
|
424
|
+
primaryButton: ( localize(12881, "&&Replace")),
|
|
425
425
|
});
|
|
426
426
|
return confirmed;
|
|
427
427
|
}
|
|
@@ -429,12 +429,12 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
429
429
|
const { confirmed } = await this.dialogService.confirm({
|
|
430
430
|
type: 'warning',
|
|
431
431
|
message: ( localize(
|
|
432
|
-
|
|
432
|
+
12882,
|
|
433
433
|
"'{0}' is marked as read-only. Do you want to save anyway?",
|
|
434
434
|
basename(resource)
|
|
435
435
|
)),
|
|
436
|
-
detail: ( localize(
|
|
437
|
-
primaryButton: ( localize(
|
|
436
|
+
detail: ( localize(12883, "Paths can be configured as read-only via settings.")),
|
|
437
|
+
primaryButton: ( localize(12884, "&&Save Anyway"))
|
|
438
438
|
});
|
|
439
439
|
return confirmed;
|
|
440
440
|
}
|
|
@@ -63,7 +63,7 @@ let TextFileEditorModelManager = class TextFileEditorModelManager extends Dispos
|
|
|
63
63
|
return {
|
|
64
64
|
onSaveError(error, model) {
|
|
65
65
|
notificationService.error(( localize(
|
|
66
|
-
|
|
66
|
+
12888,
|
|
67
67
|
"Failed to save '{0}': {1}",
|
|
68
68
|
model.name,
|
|
69
69
|
toErrorMessage(error, false)
|
|
@@ -26,13 +26,13 @@ let TextFileSaveParticipant = class TextFileSaveParticipant extends Disposable {
|
|
|
26
26
|
const cts = ( new CancellationTokenSource(token));
|
|
27
27
|
model.textEditorModel?.pushStackElement();
|
|
28
28
|
progress.report({
|
|
29
|
-
message: ( localize(
|
|
29
|
+
message: ( localize(12889, "Running Code Actions and Formatters..."))
|
|
30
30
|
});
|
|
31
31
|
let bubbleCancel = false;
|
|
32
32
|
await this.progressService.withProgress({
|
|
33
33
|
priority: NotificationPriority.URGENT,
|
|
34
34
|
location: ProgressLocation.Notification,
|
|
35
|
-
cancellable: ( localize(
|
|
35
|
+
cancellable: ( localize(12890, "Skip")),
|
|
36
36
|
delay: model.isDirty() ? 5000 : 3000
|
|
37
37
|
}, async (progress) => {
|
|
38
38
|
const participants = Array.from(this.saveParticipants).sort((a, b) => {
|