Skip to content

Commit 07f6c53

Browse files
author
Ivan Scherbak
committed
fix: #9 Add better text detection
1 parent 8d51afc commit 07f6c53

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

src/com/funivan/phpstorm/refactoring/EditUsages/CreateCustomPatchFromUsages.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,20 @@
66
import com.intellij.openapi.actionSystem.AnAction;
77
import com.intellij.openapi.actionSystem.AnActionEvent;
88
import com.intellij.openapi.actionSystem.DataContext;
9+
import com.intellij.openapi.editor.Document;
10+
import com.intellij.openapi.fileEditor.FileDocumentManager;
911
import com.intellij.openapi.fileEditor.FileEditorManager;
1012
import com.intellij.openapi.project.Project;
13+
import com.intellij.openapi.util.TextRange;
1114
import com.intellij.openapi.vfs.VfsUtil;
1215
import com.intellij.openapi.vfs.VirtualFile;
1316
import com.intellij.usages.Usage;
1417
import com.intellij.usages.UsageInfo2UsageAdapter;
1518
import com.intellij.usages.UsageView;
1619
import com.intellij.usages.impl.UsageViewImpl;
1720

21+
import java.util.HashMap;
22+
import java.util.Map;
1823
import java.util.Set;
1924

2025
/**
@@ -43,6 +48,9 @@ public void actionPerformed(AnActionEvent e) {
4348

4449

4550
StringBuilder buf = new StringBuilder();
51+
52+
Map<String, Boolean> processedLines = new HashMap<>();
53+
4654
for (Usage usage : usages) {
4755

4856
if (!(usage instanceof UsageInfo2UsageAdapter)) {
@@ -58,12 +66,29 @@ public void actionPerformed(AnActionEvent e) {
5866

5967
VirtualFile file = usageInfo.getFile();
6068

69+
int line = usageInfo.getLine();
6170
String path = VfsUtil.getRelativePath(file, baseDir, '/');
6271

72+
String key = path + ":" + line;
73+
74+
if (processedLines.get(key) != null) {
75+
continue;
76+
}
77+
78+
Document fileDocument = FileDocumentManager.getInstance().getDocument(file);
79+
80+
81+
int startOffset = fileDocument.getLineStartOffset(line);
82+
int endOffset = fileDocument.getLineEndOffset(line);
83+
84+
String text = fileDocument.getText(new TextRange(startOffset, endOffset));
85+
6386
buf.append("\n");
64-
buf.append("//file:" + path + ':' + (usageInfo.getLine() + 1) + "\n");
65-
buf.append(usageInfo.getPlainText() + "\n");
87+
buf.append("//file:" + path + ':' + (line + 1) + "\n");
88+
buf.append(text + "\n");
6689
buf.append("\n");
90+
91+
processedLines.put(key, true);
6792
}
6893

6994

0 commit comments

Comments
 (0)