@@ -176,10 +176,10 @@ struct EditCustomCommandView: View {
176176 self . systemPrompt = systemPrompt ?? " "
177177 self . prompt = prompt ?? " "
178178 continuousMode = false
179- case let . promptToCode( prompt, continuousMode) :
179+ case let . promptToCode( extraSystemPrompt , prompt, continuousMode) :
180180 commandType = . promptToCode
181181 self . prompt = prompt ?? " "
182- systemPrompt = " "
182+ systemPrompt = extraSystemPrompt ?? " "
183183 self . continuousMode = continuousMode ?? false
184184 case . none:
185185 commandType = . chatWithSelection
@@ -214,6 +214,7 @@ struct EditCustomCommandView: View {
214214 systemPromptTextField ( title: " Extra System Prompt " )
215215 promptTextField
216216 case . promptToCode:
217+ systemPromptTextField ( title: " Extra System Prompt " )
217218 promptTextField
218219 continuousModeToggle
219220 case . customChat:
@@ -244,7 +245,11 @@ struct EditCustomCommandView: View {
244245 prompt: prompt
245246 )
246247 case . promptToCode:
247- return . promptToCode( prompt: prompt, continuousMode: continuousMode)
248+ return . promptToCode(
249+ extraSystemPrompt: systemPrompt,
250+ prompt: prompt,
251+ continuousMode: continuousMode
252+ )
248253 case . customChat:
249254 return . customChat( systemPrompt: systemPrompt, prompt: prompt)
250255 }
@@ -297,24 +302,40 @@ struct EditCustomCommandView: View {
297302 . frame ( width: 600 )
298303 }
299304
305+ @ViewBuilder
300306 var promptTextField : some View {
301- if #available( macOS 13 . 0 , * ) {
302- return TextField ( " Prompt " , text: $prompt, axis: . vertical)
307+ VStack ( alignment: . leading, spacing: 4 ) {
308+ Text ( " Prompt " )
309+ TextEditor ( text: $prompt)
310+ . font ( Font . system ( . body, design: . monospaced) )
311+ . padding ( 2 )
312+ . frame ( minHeight: 120 )
303313 . multilineTextAlignment ( . leading)
304- . lineLimit ( 4 , reservesSpace: true )
305- } else {
306- return TextField ( " Prompt " , text: $prompt)
314+ . overlay (
315+ RoundedRectangle ( cornerRadius: 1 )
316+ . stroke ( . black, lineWidth: 1 / 3 )
317+ . opacity ( 0.3 )
318+ )
307319 }
320+ . padding ( . vertical, 4 )
308321 }
309322
323+ @ViewBuilder
310324 func systemPromptTextField( title: String ? = nil ) -> some View {
311- if #available( macOS 13 . 0 , * ) {
312- return TextField ( title ?? " System Prompt " , text: $systemPrompt, axis: . vertical)
325+ VStack ( alignment: . leading, spacing: 4 ) {
326+ Text ( title ?? " System Prompt " )
327+ TextEditor ( text: $systemPrompt)
328+ . font ( Font . system ( . body, design: . monospaced) )
329+ . padding ( 2 )
330+ . frame ( minHeight: 120 )
313331 . multilineTextAlignment ( . leading)
314- . lineLimit ( 4 , reservesSpace: true )
315- } else {
316- return TextField ( " Prompt " , text: $prompt)
332+ . overlay (
333+ RoundedRectangle ( cornerRadius: 1 )
334+ . stroke ( . black, lineWidth: 1 / 3 )
335+ . opacity ( 0.3 )
336+ )
317337 }
338+ . padding ( . vertical, 4 )
318339 }
319340
320341 var continuousModeToggle : some View {
@@ -335,7 +356,11 @@ struct CustomCommandView_Preview: PreviewProvider {
335356 ) ,
336357 . init(
337358 name: " Refactor Code " ,
338- feature: . promptToCode( prompt: " Refactor " , continuousMode: false )
359+ feature: . promptToCode(
360+ extraSystemPrompt: nil ,
361+ prompt: " Refactor " ,
362+ continuousMode: false
363+ )
339364 ) ,
340365 . init(
341366 name: " Tell Me A Joke " ,
@@ -346,3 +371,23 @@ struct CustomCommandView_Preview: PreviewProvider {
346371 . background ( . purple)
347372 }
348373}
374+
375+ struct EditCustomCommandView_Preview : PreviewProvider {
376+ static var previews : some View {
377+ EditCustomCommandView (
378+ editingCommand: . constant( CustomCommandView . EditingCommand (
379+ isNew: false ,
380+ command: . init(
381+ name: " Explain Code " ,
382+ feature: . promptToCode(
383+ extraSystemPrompt: nil ,
384+ prompt: " Hello " ,
385+ continuousMode: false
386+ )
387+ )
388+ ) ) ,
389+ settings: . init( customCommands: . init( wrappedValue: [ ] , " CustomCommandView_Preview " ) )
390+ )
391+ . background ( . purple)
392+ }
393+ }
0 commit comments