diff options
5 files changed, 39 insertions, 3 deletions
diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/META-INF/MANIFEST.MF b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/META-INF/MANIFEST.MF index eda7dd83d96..b8162722ac0 100644 --- a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/META-INF/MANIFEST.MF +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/META-INF/MANIFEST.MF @@ -24,3 +24,4 @@ Export-Package: org.eclipse.lsp4e.cpp.language, org.eclipse.lsp4e.cpp.language.cquery Bundle-Activator: org.eclipse.lsp4e.cpp.language.Activator Bundle-ActivationPolicy: lazy +Import-Package: org.eclipse.ui.texteditor diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Messages.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Messages.java index 925db4ef1ca..a7b2fb894c2 100644 --- a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Messages.java +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Messages.java @@ -15,6 +15,8 @@ public class Messages extends NLS { public static String ServerChoiceLabel; public static String ServerPathLabel; public static String ServerOptionsLabel; + public static String CqueryStateIdle; + public static String CqueryStateBusy; static { NLS.initializeMessages(Messages.class.getName(), Messages.class); diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Messages.properties b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Messages.properties index b671b9824d8..fe78024a026 100644 --- a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Messages.properties +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Messages.properties @@ -9,4 +9,6 @@ PreferencePageDescription=Preferences for the C/C++ Language Server\n\n ServerChoiceLabel=Please select the C/C++ Language Server you want to use in Eclipse : ServerPathLabel=Browse path to the server executable -ServerOptionsLabel=Enter any command-line options for the server
\ No newline at end of file +ServerOptionsLabel=Enter any command-line options for the server +CqueryStateIdle=CQuery : Idle +CqueryStateBusy=CQuery : Busy | {0} Jobs
\ No newline at end of file diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java index 80550f9fc37..239aef54fc3 100644 --- a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java @@ -8,17 +8,44 @@ package org.eclipse.lsp4e.cpp.language; +import org.eclipse.jface.action.StatusLineContributionItem; +import org.eclipse.jface.action.StatusLineManager; import org.eclipse.lsp4e.LanguageClientImpl; import org.eclipse.lsp4e.cpp.language.cquery.CqueryInactiveRegions; import org.eclipse.lsp4e.cpp.language.cquery.CquerySemanticHighlights; import org.eclipse.lsp4e.cpp.language.cquery.IndexingProgressStats; import org.eclipse.lsp4j.jsonrpc.services.JsonNotification; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.internal.WorkbenchWindow; +@SuppressWarnings("restriction") public class Server2ClientProtocolExtension extends LanguageClientImpl { @JsonNotification("$cquery/progress") public final void indexingProgress(IndexingProgressStats stats) { - // TODO: Implement + + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + final String cqueryStatusFieldId = "org.eclipse.lsp4e.cpp.status"; //$NON-NLS-1$ + final int width = 28; + IWorkbenchWindow[] workbenchWindows = PlatformUI.getWorkbench().getWorkbenchWindows(); + for (IWorkbenchWindow window : workbenchWindows) { + StatusLineManager statusLine = ((WorkbenchWindow) window).getStatusLineManager(); + StatusLineContributionItem cqueryStatusField = (StatusLineContributionItem) statusLine.find(cqueryStatusFieldId); + if (cqueryStatusField == null) { + cqueryStatusField = new StatusLineContributionItem(cqueryStatusFieldId, width); + statusLine.add(cqueryStatusField); + } + String msg = stats.getTotalJobs() > 0 ? NLS.bind(Messages.CqueryStateBusy, stats.getTotalJobs()) + : Messages.CqueryStateIdle; + cqueryStatusField.setText(msg); + } + } + }); } @JsonNotification("$cquery/setInactiveRegions") @@ -26,7 +53,6 @@ public class Server2ClientProtocolExtension extends LanguageClientImpl { // TODO: Implement } - @JsonNotification("$cquery/publishSemanticHighlighting") public final void semanticHighlights(CquerySemanticHighlights highlights) { // TODO: Implement diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/cquery/IndexingProgressStats.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/cquery/IndexingProgressStats.java index 6a3a9baf485..61688827fcb 100644 --- a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/cquery/IndexingProgressStats.java +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/cquery/IndexingProgressStats.java @@ -26,6 +26,11 @@ public class IndexingProgressStats { this.activeThreads = activeThreads; } + public int getTotalJobs() { + int sum = indexRequestCount + doIdMapCount + loadPreviousIndexCount + onIdMappedCount + onIndexedCount; + return sum; + } + public int getIndexRequestCount() { return indexRequestCount; } |