mirror of
https://github.com/chylex/IntelliJ-AceJump.git
synced 2025-04-09 17:15:43 +02:00
Performance vastly improved
This commit is contained in:
parent
045ced780a
commit
07d33ffe4a
src/com/johnlindquist/acejump
@ -1,5 +1,6 @@
|
||||
package com.johnlindquist.acejump;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.codeInsight.editorActions.SelectWordUtil;
|
||||
import com.intellij.find.FindManager;
|
||||
import com.intellij.find.FindModel;
|
||||
@ -8,12 +9,20 @@ import com.intellij.ide.ui.UISettings;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.actionSystem.impl.ActionManagerImpl;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.CaretModel;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.FoldRegion;
|
||||
import com.intellij.openapi.editor.VisualPosition;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.impl.*;
|
||||
import com.intellij.openapi.editor.impl.DocumentImpl;
|
||||
import com.intellij.openapi.editor.impl.EditorImpl;
|
||||
import com.intellij.openapi.editor.impl.FoldingModelImpl;
|
||||
import com.intellij.openapi.editor.impl.ScrollingModelImpl;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.popup.*;
|
||||
import com.intellij.openapi.ui.popup.ComponentPopupBuilder;
|
||||
import com.intellij.openapi.ui.popup.JBPopup;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@ -21,8 +30,6 @@ import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.ui.awt.RelativePoint;
|
||||
import com.intellij.ui.popup.AbstractPopup;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usages.UsageInfo2UsageAdapter;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
@ -54,7 +61,7 @@ public class AceJumpAction extends AnAction {
|
||||
protected AnActionEvent inputEvent;
|
||||
protected CaretModel caretModel;
|
||||
|
||||
private CharSequence allowedCharacters = "abcdefghijklmnopqrstuvwxyz";//0123456789-=[];',./";
|
||||
private CharSequence allowedCharacters = "abcdefghijklmnopqrstuvwxyz0123456789";//-=[];',./";
|
||||
private Font font;
|
||||
private Graphics2D aceGraphics;
|
||||
private AceCanvas aceCanvas;
|
||||
@ -127,8 +134,7 @@ public class AceJumpAction extends AnAction {
|
||||
|
||||
public RelativePoint guessBestLocation(Editor editor) {
|
||||
VisualPosition logicalPosition = editor.getCaretModel().getVisualPosition();
|
||||
RelativePoint pointFromVisualPosition = getPointFromVisualPosition(editor, logicalPosition);
|
||||
return pointFromVisualPosition;
|
||||
return getPointFromVisualPosition(editor, logicalPosition);
|
||||
}
|
||||
|
||||
protected static RelativePoint getPointFromVisualPosition(Editor editor, VisualPosition logicalPosition) {
|
||||
@ -290,12 +296,6 @@ public class AceJumpAction extends AnAction {
|
||||
key = Character.getNumericValue(keyChar);
|
||||
|
||||
if (!searchMode) {
|
||||
|
||||
//Systemm.out.println("navigating" + e.getKeyChar());
|
||||
// System.out.println("value: " + key + " code " + keyCode + " char " + e.getKeyChar() + " location: " + e.getKeyLocation());
|
||||
// System.out.println("---------passed: " + "value: " + key + " code " + keyCode + " char " + e.getKeyChar() + " location: " + e.getKeyLocation());
|
||||
|
||||
|
||||
Integer offset = offsetHash.get(getLowerCaseStringFromChar(keyChar));
|
||||
if (offset != null) {
|
||||
|
||||
@ -327,7 +327,6 @@ public class AceJumpAction extends AnAction {
|
||||
}
|
||||
|
||||
if (searchMode && getText().length() == 1) {
|
||||
//System.out.println("searching " + e.getKeyChar() + "\n");
|
||||
findText(getText(), false);
|
||||
searchMode = false;
|
||||
return;
|
||||
@ -337,7 +336,7 @@ public class AceJumpAction extends AnAction {
|
||||
try {
|
||||
setText(getText(0, 1));
|
||||
} catch (BadLocationException e1) {
|
||||
e1.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@ -500,7 +499,7 @@ public class AceJumpAction extends AnAction {
|
||||
aceCanvas.setFont(font);
|
||||
aceCanvas.setLineHeight(editor.getLineHeight());
|
||||
aceCanvas.setLineSpacing(scheme.getLineSpacing());
|
||||
aceCanvas.setBallonInfos(ballonInfos);
|
||||
aceCanvas.setBallonInfos(Lists.reverse(ballonInfos));
|
||||
aceCanvas.setBackgroundForegroundColors(new Pair<Color, Color>(scheme.getDefaultBackground(), scheme.getDefaultForeground()));
|
||||
|
||||
aceCanvas.repaint();
|
||||
@ -521,10 +520,10 @@ public class AceJumpAction extends AnAction {
|
||||
FoldRegion[] allFoldRegions = foldingModel.getAllFoldRegions();
|
||||
|
||||
int resultCount = 0;
|
||||
//any more than 4 result sets is probably unreasonable (96 results for now)
|
||||
//any more than 10 result sets is probably unreasonable (260 results for now)
|
||||
int possibleOffsets = allowedCharacters.length() * 10;
|
||||
offsetWhile:
|
||||
while (offset < endOffset && resultCount < possibleOffsets) {
|
||||
while (offset < endOffset) {
|
||||
// System.out.println("offset: " + offset + "/" + endOffset);
|
||||
|
||||
// System.out.println("Finding: " + findModel.getStringToFind() + " = " + offset);
|
||||
@ -548,31 +547,10 @@ public class AceJumpAction extends AnAction {
|
||||
}
|
||||
|
||||
|
||||
//System.out.println("result: " + result.toString());
|
||||
|
||||
UsageInfo2UsageAdapter usageAdapter = new UsageInfo2UsageAdapter(new UsageInfo(psiFile, result.getStartOffset(), result.getEndOffset()));
|
||||
UsageInfo info = usageAdapter.getUsageInfo();
|
||||
Point point = editor.logicalPositionToXY(editor.offsetToLogicalPosition(info.getNavigationOffset(), true));
|
||||
if (visibleArea.contains(point)) {
|
||||
UsageInfo usageInfo = info;
|
||||
int navigationOffset = usageInfo.getNavigationOffset();
|
||||
if (navigationOffset != caretModel.getOffset()) {
|
||||
if (!results.contains(navigationOffset)) {
|
||||
//System.out.println("Adding: " + navigationOffset + "-> " + usageAdapter.getPlainText());
|
||||
offsets.add(navigationOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
offsets.add(result.getStartOffset());
|
||||
|
||||
|
||||
final int prevOffset = offset;
|
||||
offset = result.getEndOffset();
|
||||
|
||||
|
||||
if (prevOffset == offset) {
|
||||
++offset;
|
||||
}
|
||||
|
||||
resultCount++;
|
||||
}
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
package com.johnlindquist.acejump;
|
||||
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
/**
|
||||
* User: John Lindquist
|
||||
* Date: 9/8/11
|
||||
* Time: 12:10 AM
|
||||
*/
|
||||
public class AceJumpSelectFromCaretAction extends AceJumpAction {
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user