@@ -3,6 +3,12 @@ package cc.unitmesh.devti.language.compiler.exec
33import cc.unitmesh.devti.command.InsCommand
44import cc.unitmesh.devti.command.dataprovider.BuiltinCommand
55import cc.unitmesh.devti.language.git.GitUtil
6+ import cc.unitmesh.devti.sketch.AutoSketchMode
7+ import com.intellij.ide.DataManager
8+ import com.intellij.openapi.actionSystem.ActionManager
9+ import com.intellij.openapi.actionSystem.AnActionEvent
10+ import com.intellij.openapi.application.ApplicationManager
11+ import com.intellij.openapi.application.ModalityState
612import com.intellij.openapi.project.Project
713import com.intellij.openapi.vcs.changes.ChangeListManager
814import com.intellij.openapi.vcs.changes.LocalChangeList
@@ -15,12 +21,35 @@ class CommitInsCommand(val myProject: Project, val commitMsg: String) : InsComma
1521 *
1622 * [com.intellij.openapi.vcs.changes.shelf.ShelveChangesCommitExecutor]
1723 *
18- * [com.intellij.openapi.vcs.changes.shelf.ShelvedChangesViewManager] to manage theshelve changes
24+ * [com.intellij.openapi.vcs.changes.shelf.ShelvedChangesViewManager] to manage theshelf changes
1925*/
2026override suspend fun execute ():String {
21- val changeListManager= ChangeListManager .getInstance(myProject)
22- val changeList: LocalChangeList = changeListManager.defaultChangeList
23- GitUtil .doCommit(myProject, changeList, commitMsg)
24- return " Commited for$changeList "
27+ if (AutoSketchMode .getInstance(myProject).isEnable) {
28+ invokeShelveChangesAction()
29+ return " Commit by UI will depends by user selection"
30+ }else {
31+ val changeListManager= ChangeListManager .getInstance(myProject)
32+ val changeList: LocalChangeList = changeListManager.defaultChangeList
33+ GitUtil .doCommit(myProject, changeList, commitMsg)
34+ return " Commited for$changeList "
35+ }
36+ }
37+
38+ private fun invokeShelveChangesAction () {
39+ val actionManager= ActionManager .getInstance()
40+ val shelveAction= actionManager.getAction(" ChangesView.Shelve" )
41+
42+ if (shelveAction!= null ) {
43+ ApplicationManager .getApplication().invokeLater({
44+ val dataContext= DataManager .getInstance().getDataContext()
45+ val event= AnActionEvent .createFromAnAction(
46+ shelveAction,
47+ null ,
48+ " " ,
49+ dataContext
50+ )
51+ shelveAction.actionPerformed(event)
52+ },ModalityState .NON_MODAL )
53+ }
2554 }
2655}