Skip to content

Commit

Permalink
Support format commit message.
Browse files Browse the repository at this point in the history
  • Loading branch information
LiLittleCat committed Aug 11, 2022
1 parent db151ee commit 4f7d6fc
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.lilittlecat.plugin.action;

import com.intellij.openapi.actionSystem.ActionPromoter;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.DataContext;

import java.util.List;

/**
* @author LiLittleCat
* @since 2022/8/11
*/
public class PanguFormatActionPromoter implements ActionPromoter {
@Override
public List<AnAction> promote(List<AnAction> actions, DataContext context) {
// todo, order actions use the same key shortcut
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.intellij.notification.NotificationDisplayType;
import com.intellij.notification.NotificationGroup;
import com.intellij.notification.Notifications;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
Expand All @@ -13,6 +12,7 @@
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.SelectionModel;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import com.intellij.psi.PsiFile;
Expand All @@ -23,10 +23,14 @@
import static com.lilittlecat.plugin.common.Constant.DISPLAY_NAME;

/**
* Pangu format editor action.
*
* @author LiLittleCat
* @since 2022/8/6
*/
public class PanguFormatAction extends AnAction {
public class PanguFormatEditorAction extends DumbAwareAction {

public static final Integer ORDER = 0;

private static final NotificationGroup NOTIFICATION_GROUP = new NotificationGroup(DISPLAY_NAME, NotificationDisplayType.BALLOON, true);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.lilittlecat.plugin.action;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.CommitMessageI;
import com.intellij.openapi.vcs.VcsDataKeys;
import com.intellij.openapi.vcs.ui.CommitMessage;
import com.lilittlecat.plugin.pangu.Pangu;
import org.jetbrains.annotations.NotNull;

/**
* Pangy format commit message action.
* todo, keymap won't work in commit dialog
*
* @author LiLittleCat
* @see com.intellij.openapi.vcs.actions.ShowMessageHistoryAction
* @since 2022/8/11
*/
public class PanguFormatVCSCommitMessageAction extends DumbAwareAction {

public static final Integer ORDER = 1;

@Override
public void update(@NotNull AnActionEvent e) {
Project project = e.getProject();
CommitMessage commitMessage = getCommitMessage(e);
e.getPresentation().setVisible(project != null && commitMessage != null);
}

@Override
public void actionPerformed(@NotNull AnActionEvent e) {
final CommitMessage commitMessage = getCommitMessage(e);
if (commitMessage != null) {
commitMessage.setCommitMessage(new Pangu().formatText(commitMessage.getComment()));
}
}

private CommitMessage getCommitMessage(AnActionEvent e) {
CommitMessageI data = VcsDataKeys.COMMIT_MESSAGE_CONTROL.getData(e.getDataContext());
if (data instanceof CommitMessage) {
return (CommitMessage) data;
} else {
return null;
}
}
}
10 changes: 9 additions & 1 deletion src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,23 @@
<depends>com.intellij.modules.platform</depends>

<actions>
<action id="PanguFormatAction" class="com.lilittlecat.plugin.action.PanguFormatAction" text="Pangu Format"
<action id="Pangu.Format.Editor" class="com.lilittlecat.plugin.action.PanguFormatEditorAction" text="Pangu Format"
description="Automatically insert whitespace between CJK (chinese, japanese, korean), half-width english, digit and symbol characters."
icon="/icons/pangu.svg">
<keyboard-shortcut keymap="$default" first-keystroke="alt shift P"/>
<add-to-group group-id="EditorPopupMenu" anchor="first"/>
<add-to-group group-id="ToolsMenu" anchor="first"/>
</action>
<action id="Pangu.Format.VCS.CommitMessage" class="com.lilittlecat.plugin.action.PanguFormatVCSCommitMessageAction" text="Pangu Format"
description="Automatically insert whitespace between CJK (chinese, japanese, korean), half-width english, digit and symbol characters."
icon="/icons/pangu.svg">
<keyboard-shortcut keymap="$default" first-keystroke="alt shift P"/>
<add-to-group group-id="Vcs.MessageActionGroup" anchor="first"/>
</action>
</actions>

<extensions defaultExtensionNs="com.intellij">
<actionPromoter implementation="com.lilittlecat.plugin.action.PanguFormatActionPromoter"/>
<applicationConfigurable
parentId="tools"
instance="com.lilittlecat.plugin.setting.PanguFormatSettingsConfigurable"
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/com/lilittlecat/plugin/PanguFormatTest.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.lilittlecat.plugin;

import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
import com.lilittlecat.plugin.action.PanguFormatAction;
import com.lilittlecat.plugin.action.PanguFormatEditorAction;
import org.junit.Test;

/**
Expand All @@ -13,7 +13,7 @@ public class PanguFormatTest extends LightJavaCodeInsightFixtureTestCase {
@Test
public void test(){
myFixture.configureByText("test.md", "你好Hello世界");
myFixture.testAction(new PanguFormatAction());
myFixture.testAction(new PanguFormatEditorAction());
System.out.println(myFixture.getFile().getText());
}

Expand Down

0 comments on commit 4f7d6fc

Please sign in to comment.