Skip to content

Commit 39768e4

Browse files
committed
feat(commit): add support for shelving changes based on AutoSketchMode #408
1 parent 2f673ae commit 39768e4

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

exts/devins-lang/src/main/kotlin/cc/unitmesh/devti/language/compiler/exec/CommitInsCommand.kt

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ package cc.unitmesh.devti.language.compiler.exec
33
import cc.unitmesh.devti.command.InsCommand
44
import cc.unitmesh.devti.command.dataprovider.BuiltinCommand
55
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
612
import com.intellij.openapi.project.Project
713
import com.intellij.openapi.vcs.changes.ChangeListManager
814
import 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 the shelve changes
24+
* [com.intellij.openapi.vcs.changes.shelf.ShelvedChangesViewManager] to manage the shelf changes
1925
*/
2026
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+
}
2554
}
2655
}

0 commit comments

Comments
 (0)