@@ -176,10 +176,10 @@ struct EditCustomCommandView: View {
176
176
self . systemPrompt = systemPrompt ?? " "
177
177
self . prompt = prompt ?? " "
178
178
continuousMode = false
179
- case let . promptToCode( prompt, continuousMode) :
179
+ case let . promptToCode( extraSystemPrompt , prompt, continuousMode) :
180
180
commandType = . promptToCode
181
181
self . prompt = prompt ?? " "
182
- systemPrompt = " "
182
+ systemPrompt = extraSystemPrompt ?? " "
183
183
self . continuousMode = continuousMode ?? false
184
184
case . none:
185
185
commandType = . chatWithSelection
@@ -214,6 +214,7 @@ struct EditCustomCommandView: View {
214
214
systemPromptTextField ( title: " Extra System Prompt " )
215
215
promptTextField
216
216
case . promptToCode:
217
+ systemPromptTextField ( title: " Extra System Prompt " )
217
218
promptTextField
218
219
continuousModeToggle
219
220
case . customChat:
@@ -244,7 +245,11 @@ struct EditCustomCommandView: View {
244
245
prompt: prompt
245
246
)
246
247
case . promptToCode:
247
- return . promptToCode( prompt: prompt, continuousMode: continuousMode)
248
+ return . promptToCode(
249
+ extraSystemPrompt: systemPrompt,
250
+ prompt: prompt,
251
+ continuousMode: continuousMode
252
+ )
248
253
case . customChat:
249
254
return . customChat( systemPrompt: systemPrompt, prompt: prompt)
250
255
}
@@ -297,24 +302,40 @@ struct EditCustomCommandView: View {
297
302
. frame ( width: 600 )
298
303
}
299
304
305
+ @ViewBuilder
300
306
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 )
303
313
. 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
+ )
307
319
}
320
+ . padding ( . vertical, 4 )
308
321
}
309
322
323
+ @ViewBuilder
310
324
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 )
313
331
. 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
+ )
317
337
}
338
+ . padding ( . vertical, 4 )
318
339
}
319
340
320
341
var continuousModeToggle : some View {
@@ -335,7 +356,11 @@ struct CustomCommandView_Preview: PreviewProvider {
335
356
) ,
336
357
. init(
337
358
name: " Refactor Code " ,
338
- feature: . promptToCode( prompt: " Refactor " , continuousMode: false )
359
+ feature: . promptToCode(
360
+ extraSystemPrompt: nil ,
361
+ prompt: " Refactor " ,
362
+ continuousMode: false
363
+ )
339
364
) ,
340
365
. init(
341
366
name: " Tell Me A Joke " ,
@@ -346,3 +371,23 @@ struct CustomCommandView_Preview: PreviewProvider {
346
371
. background ( . purple)
347
372
}
348
373
}
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