@@ -248,7 +248,12 @@ struct WindowBaseCommandHandler: SuggestionCommandHandler {
248248 func promptToCode( editor: EditorContent ) async throws -> UpdatedContent ? {
249249 Task {
250250 do {
251- try await presentPromptToCode ( editor: editor, prompt: nil , isContinuous: false )
251+ try await presentPromptToCode (
252+ editor: editor,
253+ extraSystemPrompt: nil ,
254+ prompt: nil ,
255+ isContinuous: false
256+ )
252257 } catch {
253258 presenter. presentError ( error)
254259 }
@@ -293,9 +298,10 @@ extension WindowBaseCommandHandler {
293298 extraSystemPrompt: nil ,
294299 sendingMessageImmediately: prompt
295300 )
296- case let . promptToCode( _ , prompt, continuousMode) :
301+ case let . promptToCode( extraSystemPrompt , prompt, continuousMode) :
297302 try await presentPromptToCode (
298303 editor: editor,
304+ extraSystemPrompt: extraSystemPrompt,
299305 prompt: prompt,
300306 isContinuous: continuousMode ?? false
301307 )
@@ -304,6 +310,7 @@ extension WindowBaseCommandHandler {
304310
305311 func presentPromptToCode(
306312 editor: EditorContent ,
313+ extraSystemPrompt: String ? ,
307314 prompt: String ? ,
308315 isContinuous: Bool
309316 ) async throws {
@@ -323,7 +330,7 @@ extension WindowBaseCommandHandler {
323330 guard var selection = editor. selections. last,
324331 selection. start != selection. end
325332 else { return ( " " , . cursor( editor. cursorPosition) ) }
326-
333+
327334 let isMultipleLine = selection. start. line != selection. end. line
328335 let isSpaceOnlyBeforeStartPositionOnTheSameLine = {
329336 guard selection. start. line >= 0 , selection. start. line < editor. lines. count else {
@@ -333,10 +340,12 @@ extension WindowBaseCommandHandler {
333340 guard selection. start. character > 0 , selection. start. character < line. count else {
334341 return false
335342 }
336- let substring = line [ line. startIndex..< line. index ( line. startIndex, offsetBy: selection. start. character) ]
337- return substring. allSatisfy ( { $0. isWhitespace } )
343+ let substring =
344+ line [ line. startIndex..< line
345+ . index ( line. startIndex, offsetBy: selection. start. character) ]
346+ return substring. allSatisfy { $0. isWhitespace }
338347 } ( )
339-
348+
340349 if isMultipleLine || isSpaceOnlyBeforeStartPositionOnTheSameLine {
341350 // when there are multiple lines start from char 0 so that it can keep the
342351 // indentation.
@@ -357,11 +366,13 @@ extension WindowBaseCommandHandler {
357366 selectedCode: code,
358367 allCode: editor. content,
359368 selectionRange: selection,
360- language: codeLanguage
369+ language: codeLanguage,
370+ extraSystemPrompt: extraSystemPrompt,
371+ name: nil
361372 )
362373
363374 promptToCode. isContinuous = isContinuous
364- if let prompt {
375+ if let prompt, !prompt . isEmpty {
365376 Task { try await promptToCode. modifyCode ( prompt: prompt) }
366377 }
367378
@@ -402,7 +413,7 @@ extension WindowBaseCommandHandler {
402413 ```
403414 """
404415 } ( )
405-
416+
406417 if let extraSystemPrompt {
407418 systemPrompt += " \n \( extraSystemPrompt) "
408419 }
0 commit comments