66import com .intellij .openapi .actionSystem .AnAction ;
77import com .intellij .openapi .actionSystem .AnActionEvent ;
88import com .intellij .openapi .actionSystem .DataContext ;
9+ import com .intellij .openapi .editor .Document ;
10+ import com .intellij .openapi .fileEditor .FileDocumentManager ;
911import com .intellij .openapi .fileEditor .FileEditorManager ;
1012import com .intellij .openapi .project .Project ;
13+ import com .intellij .openapi .util .TextRange ;
1114import com .intellij .openapi .vfs .VfsUtil ;
1215import com .intellij .openapi .vfs .VirtualFile ;
1316import com .intellij .usages .Usage ;
1417import com .intellij .usages .UsageInfo2UsageAdapter ;
1518import com .intellij .usages .UsageView ;
1619import com .intellij .usages .impl .UsageViewImpl ;
1720
21+ import java .util .HashMap ;
22+ import java .util .Map ;
1823import 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