From 8e7f3ef597fb5469611b6c46c5b1a52da4eedeef Mon Sep 17 00:00:00 2001 From: "Dmitry.Krasilschikov" Date: Sun, 24 Nov 2019 14:21:14 +0200 Subject: [PATCH] UX-931 intentions preview: allow intention to modify a light virtual file GitOrigin-RevId: 6b8b0b75606c612a07eb3a360e22fee06ba70475 --- .../intention/impl/BaseIntentionAction.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/platform/lang-api/src/com/intellij/codeInsight/intention/impl/BaseIntentionAction.java b/platform/lang-api/src/com/intellij/codeInsight/intention/impl/BaseIntentionAction.java index 7ab4893a61f4..3dffd36cf4fe 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/intention/impl/BaseIntentionAction.java +++ b/platform/lang-api/src/com/intellij/codeInsight/intention/impl/BaseIntentionAction.java @@ -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); + }}