MCPcopy Create free account
hub / github.com/freecodexyz/free-code / openFile

Function openFile

src/services/lsp/LSPServerManager.ts:270–310  ·  view source on GitHub ↗
(filePath: string, content: string)

Source from the content-addressed store, hash-verified

268 }
269
270 async function openFile(filePath: string, content: string): Promise<void> {
271 const server = await ensureServerStarted(filePath)
272 if (!server) return
273
274 const fileUri = pathToFileURL(path.resolve(filePath)).href
275
276 // Skip if already opened on this server
277 if (openedFiles.get(fileUri) === server.name) {
278 logForDebugging(
279 `LSP: File already open, skipping didOpen for ${filePath}`,
280 )
281 return
282 }
283
284 // Get language ID from server's extensionToLanguage mapping
285 const ext = path.extname(filePath).toLowerCase()
286 const languageId = server.config.extensionToLanguage[ext] || 'plaintext'
287
288 try {
289 await server.sendNotification('textDocument/didOpen', {
290 textDocument: {
291 uri: fileUri,
292 languageId,
293 version: 1,
294 text: content,
295 },
296 })
297 // Track that this file is now open on this server
298 openedFiles.set(fileUri, server.name)
299 logForDebugging(
300 `LSP: Sent didOpen for ${filePath} (languageId: ${languageId})`,
301 )
302 } catch (error) {
303 const err = new Error(
304 `Failed to sync file open ${filePath}: ${errorMessage(error)}`,
305 )
306 logError(err)
307 // Re-throw to propagate error to caller
308 throw err
309 }
310 }
311
312 async function changeFile(filePath: string, content: string): Promise<void> {
313 const server = getServerForFile(filePath)

Callers 1

changeFileFunction · 0.85

Calls 7

ensureServerStartedFunction · 0.85
logForDebuggingFunction · 0.85
resolveMethod · 0.80
setMethod · 0.80
errorMessageFunction · 0.50
logErrorFunction · 0.50
getMethod · 0.45

Tested by

no test coverage detected