fixed http://youtrack.jetbrains.com/issue/PY-2953
authorEkaterina Tuzova <Ekaterina.Tuzova@jetbrains.com>
Wed, 20 Nov 2013 14:58:51 +0000 (18:58 +0400)
committerEkaterina Tuzova <Ekaterina.Tuzova@jetbrains.com>
Wed, 20 Nov 2013 14:58:51 +0000 (18:58 +0400)
python/src/com/jetbrains/python/codeInsight/completion/PyDocstringCompletionContributor.java

index 84d4b88c1ac42fc97ccba9577485066773e9d305..2531da32560c06a50f800febb1ca10700878f98c 100644 (file)
@@ -23,8 +23,6 @@ import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiFile;
 import com.intellij.psi.util.PsiTreeUtil;
 import com.intellij.util.ProcessingContext;
-import com.jetbrains.python.PyTokenTypes;
-import com.jetbrains.python.documentation.PyDocumentationSettings;
 import com.jetbrains.python.psi.PyDocStringOwner;
 import com.jetbrains.python.psi.PyStringLiteralExpression;
 import com.jetbrains.python.refactoring.PyRefactoringUtil;
@@ -32,7 +30,9 @@ import org.jetbrains.annotations.NotNull;
 
 import java.util.Collection;
 
+import static com.intellij.patterns.PlatformPatterns.psiComment;
 import static com.intellij.patterns.PlatformPatterns.psiElement;
+import static com.intellij.patterns.StandardPatterns.or;
 
 /**
  * User : ktisha
@@ -40,7 +40,7 @@ import static com.intellij.patterns.PlatformPatterns.psiElement;
 public class PyDocstringCompletionContributor extends CompletionContributor {
   public PyDocstringCompletionContributor() {
     extend(CompletionType.BASIC,
-           psiElement().inside(PyStringLiteralExpression.class).withElementType(PyTokenTypes.DOCSTRING),
+           or(psiElement().inside(PyStringLiteralExpression.class), psiComment()),
            new IdentifierCompletionProvider());
   }
 
@@ -54,23 +54,22 @@ public class PyDocstringCompletionContributor extends CompletionContributor {
                                   ProcessingContext context,
                                   @NotNull CompletionResultSet result) {
       if (parameters.isAutoPopup()) return;
-      final PyDocStringOwner docStringOwner = PsiTreeUtil.getParentOfType(parameters.getOriginalPosition(), PyDocStringOwner.class);
-      if (docStringOwner != null) {
-        final PsiFile file = docStringOwner.getContainingFile();
-        final Module module = ModuleUtilCore.findModuleForPsiElement(docStringOwner);
-        if (module != null) {
-          final PyDocumentationSettings settings = PyDocumentationSettings.getInstance(module);
-          if (!settings.isPlain(file)) return;
-          result = result.withPrefixMatcher(getPrefix(parameters.getOffset(), file));
-          final Collection<String> identifiers = PyRefactoringUtil.collectUsedNames(docStringOwner);
-          for (String identifier : identifiers)
-            result.addElement(LookupElementBuilder.create(identifier));
+      final PsiElement element = parameters.getOriginalPosition();
+      if (element == null) return;
+      final PsiFile file = element.getContainingFile();
+      if (file.findReferenceAt(parameters.getOffset()) != null) return;
+      final PyDocStringOwner docStringOwner = PsiTreeUtil.getParentOfType(element, PyDocStringOwner.class);
+      final Module module = ModuleUtilCore.findModuleForPsiElement(element);
+      if (module != null) {
+        result = result.withPrefixMatcher(getPrefix(parameters.getOffset(), file));
+        final Collection<String> identifiers = PyRefactoringUtil.collectUsedNames(docStringOwner);
+        for (String identifier : identifiers)
+          result.addElement(LookupElementBuilder.create(identifier));
 
 
-          final Collection<String> fileIdentifiers = PyRefactoringUtil.collectUsedNames(parameters.getOriginalFile());
-          for (String identifier : fileIdentifiers)
-            result.addElement(LookupElementBuilder.create(identifier));
-        }
+        final Collection<String> fileIdentifiers = PyRefactoringUtil.collectUsedNames(parameters.getOriginalFile());
+        for (String identifier : fileIdentifiers)
+          result.addElement(LookupElementBuilder.create(identifier));
       }
     }
   }