@@ -3,6 +3,12 @@ package cc.unitmesh.devti.language.compiler.exec
3
3
import cc.unitmesh.devti.command.InsCommand
4
4
import cc.unitmesh.devti.command.dataprovider.BuiltinCommand
5
5
import 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
6
12
import com.intellij.openapi.project.Project
7
13
import com.intellij.openapi.vcs.changes.ChangeListManager
8
14
import com.intellij.openapi.vcs.changes.LocalChangeList
@@ -15,12 +21,35 @@ class CommitInsCommand(val myProject: Project, val commitMsg: String) : InsComma
15
21
*
16
22
* [com.intellij.openapi.vcs.changes.shelf.ShelveChangesCommitExecutor]
17
23
*
18
- * [com.intellij.openapi.vcs.changes.shelf.ShelvedChangesViewManager] to manage the shelve changes
24
+ * [com.intellij.openapi.vcs.changes.shelf.ShelvedChangesViewManager] to manage the shelf changes
19
25
*/
20
26
override 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
+ }
25
54
}
26
55
}
0 commit comments