@@ -121,7 +121,8 @@ struct CustomCommandView: View {
121121 name: " New Command " ,
122122 feature: . chatWithSelection(
123123 extraSystemPrompt: nil ,
124- prompt: " Tell me about the code. "
124+ prompt: " Tell me about the code. " ,
125+ useExtraSystemPrompt: false
125126 )
126127 ) )
127128 } ) {
@@ -155,8 +156,10 @@ struct EditCustomCommandView: View {
155156 @State var name : String
156157 @State var prompt : String
157158 @State var systemPrompt : String
159+ @State var usePrompt : Bool
158160 @State var continuousMode : Bool
159161 @State var editingContentInFullScreen : Binding < String > ?
162+ @State var generatingPromptToCodeDescription : Bool
160163
161164 enum CommandType : Int , CaseIterable {
162165 case chatWithSelection
@@ -173,26 +176,34 @@ struct EditCustomCommandView: View {
173176 originalName = editingCommand. wrappedValue? . command. name ?? " "
174177 name = originalName
175178 switch editingCommand. wrappedValue? . command. feature {
176- case let . chatWithSelection( extraSystemPrompt, prompt) :
179+ case let . chatWithSelection( extraSystemPrompt, prompt, useExtraSystemPrompt ) :
177180 commandType = . chatWithSelection
178181 self . prompt = prompt ?? " "
179182 systemPrompt = extraSystemPrompt ?? " "
183+ usePrompt = useExtraSystemPrompt ?? true
180184 continuousMode = false
185+ generatingPromptToCodeDescription = true
181186 case let . customChat( systemPrompt, prompt) :
182187 commandType = . customChat
183188 self . systemPrompt = systemPrompt ?? " "
184189 self . prompt = prompt ?? " "
190+ usePrompt = false
185191 continuousMode = false
186- case let . promptToCode( extraSystemPrompt, prompt, continuousMode) :
192+ generatingPromptToCodeDescription = true
193+ case let . promptToCode( extraSystemPrompt, prompt, continuousMode, generateDescription) :
187194 commandType = . promptToCode
188195 self . prompt = prompt ?? " "
189196 systemPrompt = extraSystemPrompt ?? " "
197+ usePrompt = false
190198 self . continuousMode = continuousMode ?? false
199+ generatingPromptToCodeDescription = generateDescription ?? true
191200 case . none:
192201 commandType = . chatWithSelection
193202 prompt = " "
194203 systemPrompt = " "
195204 continuousMode = false
205+ usePrompt = true
206+ generatingPromptToCodeDescription = true
196207 }
197208 }
198209
@@ -218,14 +229,15 @@ struct EditCustomCommandView: View {
218229
219230 switch commandType {
220231 case . chatWithSelection:
221- systemPromptTextField ( title: " Extra System Prompt " )
232+ systemPromptTextField ( title: " Extra System Prompt " , hasToggle : true )
222233 promptTextField
223234 case . promptToCode:
224235 continuousModeToggle
225- systemPromptTextField ( title: " Extra System Prompt " )
236+ generateDescriptionToggle
237+ systemPromptTextField ( title: " Extra System Prompt " , hasToggle: false )
226238 promptTextField
227239 case . customChat:
228- systemPromptTextField ( )
240+ systemPromptTextField ( hasToggle : false )
229241 promptTextField
230242 }
231243 } . padding ( )
@@ -253,16 +265,21 @@ struct EditCustomCommandView: View {
253265 case . chatWithSelection:
254266 return . chatWithSelection(
255267 extraSystemPrompt: systemPrompt,
256- prompt: prompt
268+ prompt: prompt,
269+ useExtraSystemPrompt: usePrompt
257270 )
258271 case . promptToCode:
259272 return . promptToCode(
260273 extraSystemPrompt: systemPrompt,
261274 prompt: prompt,
262- continuousMode: continuousMode
275+ continuousMode: continuousMode,
276+ generateDescription: generatingPromptToCodeDescription
263277 )
264278 case . customChat:
265- return . customChat( systemPrompt: systemPrompt, prompt: prompt)
279+ return . customChat(
280+ systemPrompt: systemPrompt,
281+ prompt: prompt
282+ )
266283 }
267284 } ( )
268285 )
@@ -354,9 +371,13 @@ struct EditCustomCommandView: View {
354371 }
355372
356373 @ViewBuilder
357- func systemPromptTextField( title: String ? = nil ) -> some View {
374+ func systemPromptTextField( title: String ? = nil , hasToggle : Bool ) -> some View {
358375 VStack ( alignment: . leading, spacing: 4 ) {
359- Text ( title ?? " System Prompt " )
376+ if hasToggle {
377+ Toggle ( title ?? " System Prompt " , isOn: $usePrompt)
378+ } else {
379+ Text ( title ?? " System Prompt " )
380+ }
360381 editableText ( $systemPrompt)
361382 }
362383 . padding ( . vertical, 4 )
@@ -365,6 +386,10 @@ struct EditCustomCommandView: View {
365386 var continuousModeToggle : some View {
366387 Toggle ( " Continuous Mode " , isOn: $continuousMode)
367388 }
389+
390+ var generateDescriptionToggle : some View {
391+ Toggle ( " Generate Description " , isOn: $generatingPromptToCodeDescription)
392+ }
368393
369394 func editableText( _ binding: Binding < String > ) -> some View {
370395 Button ( action: {
@@ -407,21 +432,30 @@ struct CustomCommandView_Preview: PreviewProvider {
407432 editingCommand: . init( isNew: false , command: . init(
408433 commandId: " 1 " ,
409434 name: " Explain Code " ,
410- feature: . chatWithSelection( extraSystemPrompt: nil , prompt: " Hello " )
435+ feature: . chatWithSelection(
436+ extraSystemPrompt: nil ,
437+ prompt: " Hello " ,
438+ useExtraSystemPrompt: false
439+ )
411440 ) ) ,
412441 settings: . init( customCommands: . init( wrappedValue: [
413442 . init(
414443 commandId: " 1 " ,
415444 name: " Explain Code " ,
416- feature: . chatWithSelection( extraSystemPrompt: nil , prompt: " Hello " )
445+ feature: . chatWithSelection(
446+ extraSystemPrompt: nil ,
447+ prompt: " Hello " ,
448+ useExtraSystemPrompt: false
449+ )
417450 ) ,
418451 . init(
419452 commandId: " 2 " ,
420453 name: " Refactor Code " ,
421454 feature: . promptToCode(
422455 extraSystemPrompt: nil ,
423456 prompt: " Refactor " ,
424- continuousMode: false
457+ continuousMode: false ,
458+ generateDescription: true
425459 )
426460 ) ,
427461 ] , " CustomCommandView_Preview " ) )
@@ -440,7 +474,8 @@ struct EditCustomCommandView_Preview: PreviewProvider {
440474 feature: . promptToCode(
441475 extraSystemPrompt: nil ,
442476 prompt: " Hello " ,
443- continuousMode: false
477+ continuousMode: false ,
478+ generateDescription: true
444479 )
445480 )
446481 ) ) ,
0 commit comments