mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-13297 Use only PSI means to insert new line after comment
This commit is contained in:
@@ -25,9 +25,9 @@ import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiComment;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.inspections.PyEncodingUtil;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
@@ -71,20 +71,20 @@ public class AddEncodingQuickFix implements LocalQuickFix {
|
||||
if (firstLine instanceof PsiComment && firstLine.getText().startsWith("#!")) {
|
||||
firstLine = firstLine.getNextSibling();
|
||||
}
|
||||
final LanguageLevel languageLevel = LanguageLevel.forElement(file);
|
||||
final String commentText = String.format(PyEncodingUtil.ENCODING_FORMAT_PATTERN[myEncodingFormatIndex], myDefaultEncoding);
|
||||
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
|
||||
PsiComment encodingComment = elementGenerator.createFromText(LanguageLevel.forElement(file), PsiComment.class, commentText);
|
||||
PsiComment encodingComment = elementGenerator.createFromText(languageLevel, PsiComment.class, commentText);
|
||||
encodingComment = (PsiComment)file.addBefore(encodingComment, firstLine);
|
||||
|
||||
final FileEditor fileEditor = FileEditorManager.getInstance(project).getSelectedEditor(element.getContainingFile().getVirtualFile());
|
||||
if (fileEditor instanceof TextEditor) {
|
||||
if (encodingComment.getNextSibling() == null || !encodingComment.getNextSibling().textContains('\n')) {
|
||||
file.addAfter(elementGenerator.createFromText(languageLevel, PsiWhiteSpace.class, "\n"), encodingComment);
|
||||
}
|
||||
final Editor editor = ((TextEditor)fileEditor).getEditor();
|
||||
final Document document = editor.getDocument();
|
||||
final int insertedLineNumber = document.getLineNumber(encodingComment.getTextOffset());
|
||||
if (insertedLineNumber == document.getLineCount() - 1) {
|
||||
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(document);
|
||||
document.insertString(document.getLineEndOffset(insertedLineNumber), "\n");
|
||||
}
|
||||
editor.getCaretModel().moveToLogicalPosition(new LogicalPosition(insertedLineNumber + 1, 0));
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
<warning descr="No encoding specified for file"><caret></warning>
|
||||
<warning descr="No encoding specified for file"><caret></warning>#!/usr/bin/env python
|
||||
+1
@@ -1,2 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
# coding=utf-8
|
||||
<caret>
|
||||
@@ -356,8 +356,8 @@ public class PyQuickFixTest extends PyTestCase {
|
||||
}
|
||||
|
||||
// PY-13297
|
||||
public void testAddEncodingInEmptyFile() {
|
||||
doInspectionTest("AddEncodingInEmptyFile.py", PyMandatoryEncodingInspection.class,
|
||||
public void testAddEncodingAtLastLine() {
|
||||
doInspectionTest("AddEncodingAtLastLine.py", PyMandatoryEncodingInspection.class,
|
||||
PyBundle.message("QFIX.add.encoding"), true, true);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user