From bea2f3cd0dd50e9fb3800c8904aab00027792ae7 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Tue, 28 Jun 2016 19:56:41 +0300 Subject: [PATCH 1/2] expand live templates from quickfix --- .../daemon/quickFix/CreateFileFix.java | 38 ++++++++++--------- .../FileReferenceQuickFixProvider.java | 23 ++++++++++- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateFileFix.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateFileFix.java index e7e5f7f3edbc..7da35aed0061 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateFileFix.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateFileFix.java @@ -170,27 +170,31 @@ public class CreateFileFix extends LocalQuickFixAndIntentionActionOnPsiElement { text = psiElement.getText(); } - final FileEditorManager editorManager = FileEditorManager.getInstance(directory.getProject()); - final FileEditor[] fileEditors = editorManager.openFile(newFile.getVirtualFile(), true); - - if (text != null) { - for(FileEditor fileEditor: fileEditors) { - if (fileEditor instanceof TextEditor) { // JSP is not safe to edit via Psi - final Document document = ((TextEditor)fileEditor).getEditor().getDocument(); - document.setText(text); - - if (ApplicationManager.getApplication().isUnitTestMode()) { - FileDocumentManager.getInstance().saveDocument(document); - } - PsiDocumentManager.getInstance(project).commitDocument(document); - break; - } - } - } + openFile(project, directory, newFile, text); } } catch (IncorrectOperationException e) { myIsAvailable = false; } } + + protected void openFile(@NotNull Project project, PsiDirectory directory, PsiFile newFile, String text) { + final FileEditorManager editorManager = FileEditorManager.getInstance(directory.getProject()); + final FileEditor[] fileEditors = editorManager.openFile(newFile.getVirtualFile(), true); + + if (text != null) { + for(FileEditor fileEditor: fileEditors) { + if (fileEditor instanceof TextEditor) { // JSP is not safe to edit via Psi + final Document document = ((TextEditor)fileEditor).getEditor().getDocument(); + document.setText(text); + + if (ApplicationManager.getApplication().isUnitTestMode()) { + FileDocumentManager.getInstance().saveDocument(document); + } + PsiDocumentManager.getInstance(project).commitDocument(document); + break; + } + } + } + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/FileReferenceQuickFixProvider.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/FileReferenceQuickFixProvider.java index 1243d04b8718..c988b058e177 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/FileReferenceQuickFixProvider.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/FileReferenceQuickFixProvider.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.daemon.impl.quickfix.RenameFileFix; import com.intellij.codeInspection.LocalQuickFix; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; +import com.intellij.ide.fileTemplates.actions.CreateFromTemplateActionBase; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; @@ -169,8 +170,7 @@ public class FileReferenceQuickFixProvider { if (!isDirectory && myNewFileTemplateName != null) { Project project = getStartElement().getProject(); FileTemplateManager fileTemplateManager = FileTemplateManager.getInstance(project); - FileTemplate template = fileTemplateManager.getTemplate(myNewFileTemplateName); - if (template == null) template = fileTemplateManager.findInternalTemplate(myNewFileTemplateName); + FileTemplate template = findTemplate(fileTemplateManager); if (template != null) { try { @@ -182,5 +182,24 @@ public class FileReferenceQuickFixProvider { } return super.getFileText(); } + + private FileTemplate findTemplate(FileTemplateManager fileTemplateManager) { + FileTemplate template = fileTemplateManager.getTemplate(myNewFileTemplateName); + if (template == null) template = fileTemplateManager.findInternalTemplate(myNewFileTemplateName); + return template; + } + + @Override + protected void openFile(@NotNull Project project, PsiDirectory directory, PsiFile newFile, String text) { + super.openFile(project, directory, newFile, text); + if (!isDirectory && myNewFileTemplateName != null) { + FileTemplateManager fileTemplateManager = FileTemplateManager.getInstance(project); + FileTemplate template = findTemplate(fileTemplateManager); + + if (template != null && template.isLiveTemplateEnabled()) { + CreateFromTemplateActionBase.startLiveTemplate(newFile); + } + } + } } } From 3b636531d0912f93d6156e3399640ce9cb0c5652 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Tue, 28 Jun 2016 18:20:13 +0200 Subject: [PATCH 2/2] Pass enable ipython console option to debugger to be used by debug console (PY-14746) --- .../python/console/PydevConsoleRunnerFactory.java | 8 ++++++-- .../src/com/jetbrains/python/debugger/PyDebugRunner.java | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/python/src/com/jetbrains/python/console/PydevConsoleRunnerFactory.java b/python/src/com/jetbrains/python/console/PydevConsoleRunnerFactory.java index 3c4389263c5d..df713a8364ec 100644 --- a/python/src/com/jetbrains/python/console/PydevConsoleRunnerFactory.java +++ b/python/src/com/jetbrains/python/console/PydevConsoleRunnerFactory.java @@ -107,12 +107,16 @@ public class PydevConsoleRunnerFactory extends PythonConsoleRunnerFactory { } Map envs = Maps.newHashMap(settingsProvider.getEnvs()); - String ipythonEnabled = PyConsoleOptions.getInstance(project).isIpythonEnabled() ? "True" : "False"; - envs.put(PythonEnvUtil.IPYTHONENABLE, ipythonEnabled); + putIPythonEnvFlag(project, envs); return createConsoleRunner(project, sdk, workingDir, envs, PyConsoleType.PYTHON, settingsProvider, setupFragment); } + public static void putIPythonEnvFlag(@NotNull Project project, Map envs) { + String ipythonEnabled = PyConsoleOptions.getInstance(project).isIpythonEnabled() ? "True" : "False"; + envs.put(PythonEnvUtil.IPYTHONENABLE, ipythonEnabled); + } + protected PydevConsoleRunner createConsoleRunner(Project project, Sdk sdk, String workingDir, diff --git a/python/src/com/jetbrains/python/debugger/PyDebugRunner.java b/python/src/com/jetbrains/python/debugger/PyDebugRunner.java index 24c225e838a4..4418b39b293a 100644 --- a/python/src/com/jetbrains/python/debugger/PyDebugRunner.java +++ b/python/src/com/jetbrains/python/debugger/PyDebugRunner.java @@ -38,6 +38,7 @@ import com.intellij.xdebugger.XDebugProcessStarter; import com.intellij.xdebugger.XDebugSession; import com.intellij.xdebugger.XDebuggerManager; import com.jetbrains.python.PythonHelper; +import com.jetbrains.python.console.PydevConsoleRunnerFactory; import com.jetbrains.python.console.PythonConsoleView; import com.jetbrains.python.console.PythonDebugConsoleCommunication; import com.jetbrains.python.console.PythonDebugLanguageConsoleView; @@ -316,6 +317,8 @@ public class PyDebugRunner extends GenericProgramRunner { environment.put(PYDEVD_FILTER_LIBRARIES, "True"); } + PydevConsoleRunnerFactory.putIPythonEnvFlag(project, environment); + addProjectRootsToEnv(project, environment); addSdkRootsToEnv(project, environment); }