@@ -248,7 +248,13 @@ 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+ name: nil
257+ )
252258 } catch {
253259 presenter. presentError ( error)
254260 }
@@ -293,19 +299,23 @@ extension WindowBaseCommandHandler {
293299 extraSystemPrompt: nil ,
294300 sendingMessageImmediately: prompt
295301 )
296- case let . promptToCode( prompt, continuousMode) :
302+ case let . promptToCode( extraSystemPrompt , prompt, continuousMode) :
297303 try await presentPromptToCode (
298304 editor: editor,
305+ extraSystemPrompt: extraSystemPrompt,
299306 prompt: prompt,
300- isContinuous: continuousMode ?? false
307+ isContinuous: continuousMode ?? false ,
308+ name: command. name
301309 )
302310 }
303311 }
304312
305313 func presentPromptToCode(
306314 editor: EditorContent ,
315+ extraSystemPrompt: String ? ,
307316 prompt: String ? ,
308- isContinuous: Bool
317+ isContinuous: Bool ,
318+ name: String ?
309319 ) async throws {
310320 presenter. markAsProcessing ( true )
311321 defer { presenter. markAsProcessing ( false ) }
@@ -323,7 +333,7 @@ extension WindowBaseCommandHandler {
323333 guard var selection = editor. selections. last,
324334 selection. start != selection. end
325335 else { return ( " " , . cursor( editor. cursorPosition) ) }
326-
336+
327337 let isMultipleLine = selection. start. line != selection. end. line
328338 let isSpaceOnlyBeforeStartPositionOnTheSameLine = {
329339 guard selection. start. line >= 0 , selection. start. line < editor. lines. count else {
@@ -333,10 +343,12 @@ extension WindowBaseCommandHandler {
333343 guard selection. start. character > 0 , selection. start. character < line. count else {
334344 return false
335345 }
336- let substring = line [ line. startIndex..< line. index ( line. startIndex, offsetBy: selection. start. character) ]
337- return substring. allSatisfy ( { $0. isWhitespace } )
346+ let substring =
347+ line [ line. startIndex..< line
348+ . index ( line. startIndex, offsetBy: selection. start. character) ]
349+ return substring. allSatisfy { $0. isWhitespace }
338350 } ( )
339-
351+
340352 if isMultipleLine || isSpaceOnlyBeforeStartPositionOnTheSameLine {
341353 // when there are multiple lines start from char 0 so that it can keep the
342354 // indentation.
@@ -357,11 +369,13 @@ extension WindowBaseCommandHandler {
357369 selectedCode: code,
358370 allCode: editor. content,
359371 selectionRange: selection,
360- language: codeLanguage
372+ language: codeLanguage,
373+ extraSystemPrompt: extraSystemPrompt,
374+ name: name
361375 )
362376
363377 promptToCode. isContinuous = isContinuous
364- if let prompt {
378+ if let prompt, !prompt . isEmpty {
365379 Task { try await promptToCode. modifyCode ( prompt: prompt) }
366380 }
367381
@@ -402,7 +416,7 @@ extension WindowBaseCommandHandler {
402416 ```
403417 """
404418 } ( )
405-
419+
406420 if let extraSystemPrompt {
407421 systemPrompt += " \n \( extraSystemPrompt) "
408422 }
0 commit comments