Only Select Line (not complete)

This commit is contained in:
林万程
2023-11-18 21:29:02 +08:00
parent 89127e5879
commit ce51735271
6 changed files with 39 additions and 2 deletions

View File

@@ -2,9 +2,9 @@ package io.github.linwancen.plugin.show;
import com.intellij.json.JsonFileType;
import com.intellij.json.json5.Json5FileType;
import com.intellij.openapi.editor.EditorLinePainter;
import com.intellij.openapi.editor.LineExtensionInfo;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
@@ -13,6 +13,7 @@ import io.github.linwancen.plugin.show.bean.LineInfo;
import io.github.linwancen.plugin.show.ext.LineExt;
import io.github.linwancen.plugin.show.lang.base.BaseLangDoc;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import io.github.linwancen.plugin.show.settings.GlobalSettingsState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
@@ -44,6 +45,24 @@ public class LineEnd extends EditorLinePainter {
if (!settings.showLineEndComment) {
return null;
}
@NotNull GlobalSettingsState globalSettingsState = GlobalSettingsState.getInstance();
if (globalSettingsState.onlySelectLine) {
Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
if (editor != null) {
SelectionModel select = editor.getSelectionModel();
VisualPosition start = select.getSelectionStartPosition();
int lineNum = lineNumber + 1;
if (start != null) {
if (lineNum < start.getLine()) {
return null;
}
}
VisualPosition end = select.getSelectionEndPosition();
if (end != null && lineNum > end.getLine()) {
return null;
}
}
}
if (DumbService.isDumb(project)) {
return null;
}

View File

@@ -14,6 +14,8 @@ public abstract class AbstractSettingsComponent {
protected final JBTextField lineEndCount = new JBTextField();
private final JBCheckBox onlySelectLine = new JBCheckBox(ShowBundle.message("only.select.line"));
private final JBTextField lineInclude = new JBTextField();
private final JBTextField lineExclude = new JBTextField();
@@ -36,6 +38,8 @@ public abstract class AbstractSettingsComponent {
@NotNull
protected JPanel lineEndPanel() {
FormBuilder builder = FormBuilder.createFormBuilder()
// .addComponent(onlySelectLine)
// .addSeparator()
.addComponent(new JBLabel(ShowBundle.message("regexp.tip")))
.addSeparator()
.addLabeledComponent(new JBLabel(ShowBundle.message("sign.include.regexp")), lineInclude, 1, true)
@@ -69,6 +73,14 @@ public abstract class AbstractSettingsComponent {
lineEndCount.setText(newText);
}
public boolean getOnlySelectLine() {
return onlySelectLine.isSelected();
}
public void setOnlySelectLine(boolean newStatus) {
onlySelectLine.setSelected(newStatus);
}
@NotNull
public String getLineInclude() {
return lineInclude.getText();

View File

@@ -9,6 +9,7 @@ public class AbstractSettingsConfigurable {
static boolean isModified(@NotNull AbstractSettingsState settings, @NotNull AbstractSettingsComponent component,
boolean modified) {
modified |= !component.getLineEndCount().equals(String.valueOf(settings.lineEndCount));
modified |= component.getOnlySelectLine() != settings.onlySelectLine;
modified |= !component.getLineInclude().equals(settings.getLineInclude());
modified |= !component.getLineExclude().equals(settings.getLineExclude());
modified |= !component.getDocInclude().equals(settings.getDocInclude());
@@ -26,6 +27,7 @@ public class AbstractSettingsConfigurable {
} catch (NumberFormatException e) {
component.setLineEndCount(String.valueOf(settings.lineEndCount));
}
settings.onlySelectLine = component.getOnlySelectLine();
settings.setLineInclude(component.getLineInclude());
settings.setLineExclude(component.getLineExclude());
settings.setDocInclude(component.getDocInclude());
@@ -38,6 +40,7 @@ public class AbstractSettingsConfigurable {
static void reset(@NotNull AbstractSettingsState settings, @NotNull AbstractSettingsComponent component) {
component.setLineEndCount(String.valueOf(settings.lineEndCount));
component.setOnlySelectLine(settings.onlySelectLine);
component.setLineInclude(settings.getLineInclude());
component.setLineExclude(settings.getLineExclude());
component.setDocInclude(settings.getDocInclude());

View File

@@ -11,6 +11,7 @@ public abstract class AbstractSettingsState {
public int lineEndCount = 2;
public int lineEndLen = 0;
public boolean onlySelectLine = false;
@NotNull
public transient Pattern lineInclude = Pattern.compile("");
@NotNull

View File

@@ -3,6 +3,7 @@ reset.default=Reset default
show=Show
show.line.end.comment=Show line end comment
only.select.line=Only Select Line
show.tree.comment=Show tree comment
compact=support compact

View File

@@ -3,6 +3,7 @@ reset.default=\u6062\u590D\u9ED8\u8BA4
show=\u663E\u793A
show.tree.comment=\u663E\u793A\u6587\u4EF6\u6811\u6CE8\u91CA
only.select.line=\u53EA\u663E\u793A\u9009\u62E9\u884C
show.line.end.comment=\u663E\u793A\u884C\u672B\u6CE8\u91CA
compact=\u652F\u6301\u538B\u7F29\u7A7A\u7684\u4E2D\u95F4\u5305