mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EA-210457 - IAE: PsiDocumentManager.$$$reportNull$$$: project is missed while indexing unsaved scratch file
GitOrigin-RevId: a97b8d2a370d5975dbcc029471c09f180eda7793
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c2b58ffbbf
commit
48fb1aef4a
@@ -152,7 +152,7 @@ public class ScratchFileActions {
|
||||
return context;
|
||||
}
|
||||
|
||||
static void doCreateNewScratch(@NotNull Project project, @NotNull ScratchFileCreationHelper.Context context) {
|
||||
static PsiFile doCreateNewScratch(@NotNull Project project, @NotNull ScratchFileCreationHelper.Context context) {
|
||||
FeatureUsageTracker.getInstance().triggerFeatureUsed("scratch");
|
||||
Language language = ObjectUtils.notNull(context.language);
|
||||
if (context.fileExtension == null) {
|
||||
@@ -172,13 +172,14 @@ public class ScratchFileActions {
|
||||
context.fileExtension);
|
||||
VirtualFile file = ScratchRootType.getInstance().createScratchFile(
|
||||
project, fileName, language, context.text, context.createOption);
|
||||
if (file == null) return;
|
||||
if (file == null) return null;
|
||||
|
||||
PsiNavigationSupport.getInstance().createNavigatable(project, file, context.caretOffset).navigate(true);
|
||||
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
|
||||
if (context.ideView != null && psiFile != null) {
|
||||
context.ideView.selectElement(psiFile);
|
||||
}
|
||||
return psiFile;
|
||||
}
|
||||
|
||||
private static void checkLanguageAndTryToFixText(@NotNull Project project,
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.ide.scratch;
|
||||
|
||||
import com.intellij.codeInsight.completion.CodeCompletionHandlerBase;
|
||||
import com.intellij.codeInsight.completion.CompletionType;
|
||||
import com.intellij.lang.xml.XMLLanguage;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.testFramework.LightPlatformCodeInsightTestCase;
|
||||
|
||||
public class ScratchFileTest extends LightPlatformCodeInsightTestCase {
|
||||
|
||||
public void testXmlCompletion() {
|
||||
ScratchFileCreationHelper.Context context = new ScratchFileCreationHelper.Context();
|
||||
context.language = XMLLanguage.INSTANCE;
|
||||
PsiFile file = ScratchFileActions.doCreateNewScratch(getProject(), context);
|
||||
assertNotNull(file);
|
||||
Document document = FileDocumentManager.getInstance().getDocument(file.getVirtualFile());
|
||||
document.setText("<");
|
||||
Editor editor = ((TextEditor)FileEditorManager.getInstance(getProject()).openFile(file.getVirtualFile(), true)[0]).getEditor();
|
||||
editor.getCaretModel().moveToOffset(1);
|
||||
new CodeCompletionHandlerBase(CompletionType.BASIC).invokeCompletion(getProject(), editor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isRunInWriteAction() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -111,7 +111,7 @@ public class DefaultXmlTagNameProvider implements XmlTagNameProvider {
|
||||
Processor<String> processor = Processors.cancelableCollectProcessor(result);
|
||||
fbi.processAllKeys(XmlNamespaceIndex.NAME, processor, tag.getProject());
|
||||
|
||||
final GlobalSearchScope scope = new EverythingGlobalScope();
|
||||
final GlobalSearchScope scope = new EverythingGlobalScope(tag.getProject());
|
||||
for (final String ns : result) {
|
||||
if (ns.isEmpty()) continue;
|
||||
fbi.processValues(XmlNamespaceIndex.NAME, ns, null, new FileBasedIndex.ValueProcessor<XsdNamespaceBuilder>() {
|
||||
|
||||
Reference in New Issue
Block a user