UX-931 intentions preview: allow intention to modify a light virtual file

GitOrigin-RevId: 6b8b0b75606c612a07eb3a360e22fee06ba70475
This commit is contained in:
Dmitry.Krasilschikov
2019-12-03 16:04:11 +00:00
committed by intellij-monorepo-bot
parent 29196834cc
commit 8e7f3ef597
@@ -3,7 +3,10 @@ package com.intellij.codeInsight.intention.impl;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.ide.scratch.ScratchFileService;
import com.intellij.openapi.vfs.NonPhysicalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.PsiUtilCore;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -36,9 +39,12 @@ public abstract class BaseIntentionAction implements IntentionAction {
}
/**
* @return true, if element belongs to project content root or is located in scratch files
* @return true, if element belongs to project content root or is located in scratch files or in non physical file
*/
public static boolean canModify(PsiElement element) {
return element.getManager().isInProject(element) || ScratchFileService.isInScratchRoot(PsiUtilCore.getVirtualFile(element));
}
}
VirtualFile virtualFile = PsiUtilCore.getVirtualFile(element);
PsiFile containingFile = element.getContainingFile();
return element.getManager().isInProject(element)
|| ScratchFileService.isInScratchRoot(virtualFile)
|| (containingFile != null && containingFile.getViewProvider().getVirtualFile().getFileSystem() instanceof NonPhysicalFileSystem);
}}