mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed PY-8484 "Insert documentation string stub" should prompt to choose docstring format if it's currently set to plain
This commit is contained in:
+14
-1
@@ -3,7 +3,10 @@ package com.jetbrains.python.codeInsight.intentions;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInsight.intention.impl.BaseIntentionAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -11,7 +14,9 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.debugger.PySignature;
|
||||
import com.jetbrains.python.debugger.PySignatureCacheManager;
|
||||
import com.jetbrains.python.documentation.DocStringFormat;
|
||||
import com.jetbrains.python.documentation.PyDocstringGenerator;
|
||||
import com.jetbrains.python.documentation.PyDocumentationSettings;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringFile;
|
||||
import com.jetbrains.python.psi.PyFile;
|
||||
import com.jetbrains.python.psi.PyFunction;
|
||||
@@ -91,9 +96,17 @@ public class PyGenerateDocstringIntention extends BaseIntentionAction {
|
||||
}
|
||||
|
||||
public static void generateDocstringForFunction(Project project, Editor editor, PyFunction function) {
|
||||
final Module module = ModuleManager.getInstance(project).getModules()[0];
|
||||
final PyDocumentationSettings documentationSettings = PyDocumentationSettings.getInstance(module);
|
||||
if (documentationSettings.isPlain(function.getContainingFile())) {
|
||||
final String[] values = {DocStringFormat.EPYTEXT, DocStringFormat.REST};
|
||||
final int i = Messages.showChooseDialog("Docstring format:", "Select Docstring Type", values, DocStringFormat.EPYTEXT, null);
|
||||
if (i < 0) return;
|
||||
final String value = values[i];
|
||||
documentationSettings.setFormat(value);
|
||||
}
|
||||
PyDocstringGenerator docstringGenerator = new PyDocstringGenerator(function).withSignatures();
|
||||
|
||||
|
||||
if (function.getDocStringValue() == null) {
|
||||
docstringGenerator.withReturn();
|
||||
}
|
||||
|
||||
+17
-3
@@ -1,7 +1,10 @@
|
||||
package com.jetbrains.python.codeInsight.intentions;
|
||||
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
@@ -11,7 +14,9 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.debugger.PySignature;
|
||||
import com.jetbrains.python.debugger.PySignatureCacheManager;
|
||||
import com.jetbrains.python.documentation.DocStringFormat;
|
||||
import com.jetbrains.python.documentation.PyDocstringGenerator;
|
||||
import com.jetbrains.python.documentation.PyDocumentationSettings;
|
||||
import com.jetbrains.python.psi.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -50,16 +55,16 @@ public class SpecifyTypeInDocstringIntention extends TypeIntention {
|
||||
callable = getCallable(elementAt);
|
||||
}
|
||||
if (callable instanceof PyFunction) {
|
||||
generateDocstring(kind, (PyFunction)callable, problemElement);
|
||||
generateDocstring(kind, (PyFunction)callable, problemElement, editor);
|
||||
}
|
||||
}
|
||||
|
||||
private static void generateDocstring(String kind,
|
||||
PyFunction pyFunction,
|
||||
PyExpression problemElement) {
|
||||
PyExpression problemElement, Editor editor) {
|
||||
String name = "rtype".equals(kind) ? "" : StringUtil.notNullize(problemElement.getName());
|
||||
|
||||
PyDocstringGenerator docstringGenerator = new PyDocstringGenerator(pyFunction);
|
||||
final PyDocstringGenerator docstringGenerator = new PyDocstringGenerator(pyFunction);
|
||||
|
||||
PySignature signature = PySignatureCacheManager.getInstance(pyFunction.getProject()).findSignature(pyFunction);
|
||||
if (signature != null) {
|
||||
@@ -69,6 +74,15 @@ public class SpecifyTypeInDocstringIntention extends TypeIntention {
|
||||
docstringGenerator.withParam(kind, name);
|
||||
}
|
||||
|
||||
final Module module = ModuleManager.getInstance(pyFunction.getProject()).getModules()[0];
|
||||
final PyDocumentationSettings documentationSettings = PyDocumentationSettings.getInstance(module);
|
||||
if (documentationSettings.isPlain(pyFunction.getContainingFile())) {
|
||||
final String[] values = {DocStringFormat.EPYTEXT, DocStringFormat.REST};
|
||||
final int i = Messages.showChooseDialog("Docstring format:", "Select Docstring Type", values, DocStringFormat.EPYTEXT, null);
|
||||
if (i < 0) return;
|
||||
final String value = values[i];
|
||||
documentationSettings.setFormat(value);
|
||||
}
|
||||
docstringGenerator.build();
|
||||
docstringGenerator.startTemplate();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user