Bug 550835 - workaround for disappearing workspace symbols from the quick access list
Change-Id: I874253f5d409bb2b2c47a026d9df73a1d1e4a2c6
Signed-off-by: Martin Lippert <mlippert@gmail.com>
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java
index 477954e..faf2396 100644
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java
+++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java
@@ -11,6 +11,8 @@
*******************************************************************************/
package org.eclipse.lsp4e.operations.symbols;
+import java.util.Random;
+
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.lsp4e.LSPEclipseUtils;
import org.eclipse.lsp4e.outline.SymbolsLabelProvider;
@@ -22,10 +24,19 @@
public class WorkspaceSymbolQuickAccessElement extends QuickAccessElement {
private static final SymbolsLabelProvider LABEL_PROVIDER = new SymbolsLabelProvider(false, false);
+ private static final Random randomNumbers = new Random();
+
private final SymbolInformation symbol;
+ private final int idExtension;
public WorkspaceSymbolQuickAccessElement(SymbolInformation symbol) {
this.symbol = symbol;
+
+ // this random number id extension is a workaround for
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=550835
+ //
+ // it avoids once selected symbols to disappear from the quick access list
+ this.idExtension = randomNumbers.nextInt();
}
@Override
@@ -41,7 +52,7 @@
@Override
public String getId() {
Range range = symbol.getLocation().getRange();
- return symbol.getName() + '@' + symbol.getLocation().getUri() + '[' + range.getStart().getLine() + ',' + range.getStart().getCharacter() + ':' + range.getEnd().getLine() + ',' + range.getEnd().getCharacter() + ']';
+ return symbol.getName() + '@' + symbol.getLocation().getUri() + '[' + range.getStart().getLine() + ',' + range.getStart().getCharacter() + ':' + range.getEnd().getLine() + ',' + range.getEnd().getCharacter() + ']' + ',' + idExtension;
}
@Override