* fixed selection for read only external source modules.
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/Openable.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/Openable.java
index 7f2eaa2..e59e055 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/Openable.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/Openable.java
@@ -474,7 +474,7 @@
// code complete
ICompletionEngine engine = DLTKLanguageManager
- .getCompletionEngine(toolkit.getNatureId());
+ .getCompletionEngine(toolkit.getNatureId());
if (engine == null) {
return;
}
@@ -498,8 +498,9 @@
ScriptProject project = (ScriptProject) getScriptProject();
IBuffer buffer = getBuffer();
- if (buffer == null) {
- return new IModelElement[0];
+ int end = -1;
+ if (buffer != null) {
+ end = buffer.getLength();
}
IDLTKLanguageToolkit toolkit = DLTKLanguageManager
.getLanguageToolkit(this);
@@ -515,18 +516,17 @@
}
}
- int end = buffer.getLength();
- if (offset < 0 || length < 0 || offset + length > end) {
+ if (offset < 0 || length < 0 || (end != -1 && (offset + length > end))) {
throw new ModelException(new ModelStatus(
IModelStatusConstants.INDEX_OUT_OF_BOUNDS));
}
ISelectionEngine engine = DLTKLanguageManager
- .getSelectionEngine(toolkit.getNatureId());
+ .getSelectionEngine(toolkit.getNatureId());
if (engine == null) {
return new IModelElement[0];
}
-// engine.setEnvironment(environment);
+ // engine.setEnvironment(environment);
engine.setOptions(project.getOptions(true));
// createSelectionEngine(environment,
// project.getOptions(true));