Skip to content

Commit cd5f57a

Browse files
committed
fix: Make getFileContent directly return a model
1 parent 6714a72 commit cd5f57a

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

src/infrastructure.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ export interface Infrastructure {
3535
*/
3636
saveFileContent? (document: TextDocument, reason: TextDocumentSaveReason, languageClient: LanguageClientManager): Promise<void>
3737
/**
38-
* Get a text file content
38+
* Get a text file content as a model
3939
* @param resource the Uri of the file
4040
* @param languageClient The languageclient we're trying to get the file from
4141
*/
42-
getFileContent (resource: monaco.Uri, languageClient: LanguageClientManager): Promise<string | null>
42+
getFileContent (resource: monaco.Uri, languageClient: LanguageClientManager): Promise<monaco.editor.ITextModel | null>
4343

4444
/**
4545
* Open a connection to the language server
@@ -100,9 +100,10 @@ export abstract class CodinGameInfrastructure implements Infrastructure {
100100
}
101101
}
102102

103-
public async getFileContent (resource: monaco.Uri, languageClient: LanguageClientManager): Promise<string | null> {
103+
public async getFileContent (resource: monaco.Uri, languageClient: LanguageClientManager): Promise<monaco.editor.ITextModel | null> {
104104
try {
105-
return (await getFile(resource.toString(true), languageClient)).text
105+
const content = (await getFile(resource.toString(true), languageClient)).text
106+
return monaco.editor.createModel(content, undefined, resource)
106107
} catch (error) {
107108
console.error('File not found', resource.toString())
108109
return null

src/languageClient.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,7 @@ function createLanguageClientManager (
289289

290290
disposableCollection.push(registerTextModelContentProvider('file', {
291291
async provideTextContent (resource: Uri): Promise<monaco.editor.ITextModel | null> {
292-
const content = await infrastructure.getFileContent(resource, languageClientManager)
293-
return content != null ? monaco.editor.createModel(content, undefined, resource) : null
292+
return await infrastructure.getFileContent(resource, languageClientManager)
294293
}
295294
}))
296295
disposableCollection.push(getServices().workspace.registerSaveDocumentHandler({

src/tests/tools.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
_Connection,
77
_
88
} from 'vscode-languageserver/lib/common/api'
9+
import { monaco } from '@codingame/monaco-editor-wrapper'
910
import { getFile, updateFile } from '../customRequests'
1011
import { Infrastructure, LanguageClientManager, TextDocument, TextDocumentSaveReason } from '../'
1112

@@ -131,9 +132,10 @@ export class TestInfrastructure implements Infrastructure {
131132
}
132133

133134
// use same method as CodinGameInfrastructure to be able to simply catch it
134-
async getFileContent (resource: Uri, languageClient: LanguageClientManager): Promise<string | null> {
135+
async getFileContent (resource: Uri, languageClient: LanguageClientManager): Promise<monaco.editor.ITextModel | null> {
135136
try {
136-
return (await getFile(resource.toString(true), languageClient)).text
137+
const content = (await getFile(resource.toString(true), languageClient)).text
138+
return monaco.editor.createModel(content, undefined, resource)
137139
} catch (error) {
138140
console.error('File not found', resource.toString())
139141
return null

0 commit comments

Comments
 (0)