mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
fix(projects): introduce workspace API and remove 'Project' model
This commit is contained in:
+10
-7
@@ -19,17 +19,20 @@ package com.itsaky.androidide.lsp.api;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.itsaky.androidide.eventbus.events.project.ProjectInitializedEvent;
|
||||
import com.itsaky.androidide.projects.Project;
|
||||
import com.itsaky.androidide.projects.IWorkspace;
|
||||
import com.itsaky.androidide.utils.ILogger;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
/**
|
||||
* Thread-safe implementation of {@link ILanguageServerRegistry}.
|
||||
@@ -117,14 +120,14 @@ public class DefaultLanguageServerRegistry extends ILanguageServerRegistry {
|
||||
@Subscribe(threadMode = ThreadMode.BACKGROUND)
|
||||
@SuppressWarnings("unused")
|
||||
public void onProjectInitialized(ProjectInitializedEvent event) {
|
||||
final var project = event.get(Project.class);
|
||||
if (project == null) {
|
||||
final var workspace = event.get(IWorkspace.class);
|
||||
if (workspace == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
ILogger.ROOT.debug("Dispatching ProjectInitializedEvent to language servers...");
|
||||
for (final var server : mRegister.values()) {
|
||||
server.setupWithProject(project);
|
||||
server.setupWorkspace(workspace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ import com.itsaky.androidide.lsp.models.ReferenceResult
|
||||
import com.itsaky.androidide.lsp.models.SignatureHelp
|
||||
import com.itsaky.androidide.lsp.models.SignatureHelpParams
|
||||
import com.itsaky.androidide.models.Range
|
||||
import com.itsaky.androidide.projects.Project
|
||||
import com.itsaky.androidide.projects.IWorkspace
|
||||
import java.nio.file.Path
|
||||
|
||||
/**
|
||||
@@ -90,14 +90,14 @@ interface ILanguageServer {
|
||||
fun applySettings(settings: IServerSettings?)
|
||||
|
||||
/**
|
||||
* Setup this language server with the given project. Servers are not expected to keep a reference
|
||||
* to the provided project. Instead, use
|
||||
* [getRootProject()][com.itsaky.androidide.projects.IProjectManager.rootProject] to
|
||||
* obtain the project instance.
|
||||
* Setup this language server with the given workspace. Servers are not expected to keep a reference
|
||||
* to the provided workspace. Instead, use
|
||||
* [getRootWorkspace()][com.itsaky.androidide.projects.IProjectManager.workspace] to
|
||||
* obtain the workspace instance.
|
||||
*
|
||||
* @param project The initialized project.
|
||||
* @param workspace The initialized workspace.
|
||||
*/
|
||||
fun setupWithProject(project: Project)
|
||||
fun setupWorkspace(workspace: IWorkspace)
|
||||
|
||||
/**
|
||||
* Compute code completions for the given completion params.
|
||||
|
||||
@@ -32,7 +32,8 @@ fun setupLookupForCompletion(file: File) {
|
||||
}
|
||||
|
||||
fun setupLookupForCompletion(file: Path) {
|
||||
val module = IProjectManager.getInstance().findModuleForFile(file, false) ?: return
|
||||
val module =
|
||||
IProjectManager.getInstance().getWorkspace()?.findModuleForFile(file, false) ?: return
|
||||
val lookup = Lookup.getDefault()
|
||||
|
||||
lookup.update(ModuleProject.COMPLETION_MODULE_KEY, module)
|
||||
|
||||
Reference in New Issue
Block a user