mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge branch 'master' of git.labs.intellij.net:idea/ultimate
This commit is contained in:
+10
-16
@@ -27,28 +27,22 @@
|
||||
<string>@@version@@</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>@@build@@</string>
|
||||
|
||||
<key>LSArchitecturePriority</key>
|
||||
<array>
|
||||
<string>i386</string>
|
||||
<string>x86_64</string>
|
||||
<string>ppc</string>
|
||||
</array>
|
||||
|
||||
<key>Java</key>
|
||||
<dict>
|
||||
<dict>
|
||||
<key>ClassPath</key>
|
||||
<string>$APP_PACKAGE/lib/bootstrap.jar:$APP_PACKAGE/lib/extensions.jar:$APP_PACKAGE/lib/util.jar:$APP_PACKAGE/lib/jdom.jar:$APP_PACKAGE/lib/log4j.jar</string>
|
||||
|
||||
<key>JVMVersion</key>
|
||||
<string>@@jdk_req@@</string>
|
||||
|
||||
<key>JVMArchs</key>
|
||||
<array>
|
||||
<string>i386</string>
|
||||
<string>x86_64</string>
|
||||
<string>ppc</string>
|
||||
</array>
|
||||
|
||||
<key>LSArchitecturePriority</key>
|
||||
<array>
|
||||
<string>i386</string>
|
||||
<string>x86_64</string>
|
||||
<string>ppc</string>
|
||||
</array>
|
||||
|
||||
<key>MainClass</key>
|
||||
<string>com.intellij.idea.Main</string>
|
||||
<key>Properties</key>
|
||||
@@ -86,6 +80,6 @@
|
||||
|
||||
<key>WorkingDirectory</key>
|
||||
<string>$APP_PACKAGE/bin</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
from django.core.management import execute_manager
|
||||
try:
|
||||
import settings # Assumed to be in the same directory.
|
||||
except ImportError:
|
||||
import sys
|
||||
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
execute_manager(settings)
|
||||
@@ -37,6 +37,7 @@
|
||||
<completion.contributor language="Python" implementationClass="com.jetbrains.python.codeInsight.PyKeywordCompletionContributor"/>
|
||||
<completion.contributor language="Python" implementationClass="com.jetbrains.python.codeInsight.PySpecialMethodNamesCompletionContributor"/>
|
||||
<completion.contributor language="Python" implementationClass="com.jetbrains.python.codeInsight.PySuperMethodCompletionContributor"/>
|
||||
<completion.contributor language="Python" implementationClass="com.jetbrains.python.codeInsight.PySuperAttributesCompletionContributor"/>
|
||||
<completion.contributor language="Python" implementationClass="com.jetbrains.python.codeInsight.PyDictKeyNamesCompletionContributor"/>
|
||||
<lang.tokenSeparatorGenerator language="Python" implementationClass="com.jetbrains.python.PyTokenSeparatorGenerator"/>
|
||||
<lang.elementManipulator forClass="com.jetbrains.python.psi.PyReferenceExpression" implementationClass="com.jetbrains.python.psi.impl.PyReferenceExpressionManipulator"/>
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package com.jetbrains.python.codeInsight;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.codeInsight.completion.*;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.patterns.PlatformPatterns;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
import com.jetbrains.python.psi.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author traff
|
||||
*/
|
||||
public class PySuperAttributesCompletionContributor extends CompletionContributor {
|
||||
public PySuperAttributesCompletionContributor() {
|
||||
extend(CompletionType.BASIC,
|
||||
PlatformPatterns.psiElement().withParent(PyReferenceExpression.class),
|
||||
new CompletionProvider<CompletionParameters>() {
|
||||
@Override
|
||||
protected void addCompletions(@NotNull CompletionParameters parameters,
|
||||
ProcessingContext context,
|
||||
@NotNull CompletionResultSet result) {
|
||||
PsiElement position = parameters.getOriginalPosition();
|
||||
PyClass containingClass = PsiTreeUtil.getParentOfType(position, PyClass.class);
|
||||
if (containingClass == null && position instanceof PsiWhiteSpace) {
|
||||
position = PsiTreeUtil.prevLeaf(position);
|
||||
containingClass = PsiTreeUtil.getParentOfType(position, PyClass.class);
|
||||
}
|
||||
if (containingClass == null) {
|
||||
return;
|
||||
}
|
||||
PyFunction func = PsiTreeUtil.getParentOfType(position, PyFunction.class);
|
||||
if (func != null) {
|
||||
return;
|
||||
}
|
||||
List<String> seenNames = Lists.newArrayList();
|
||||
for (PyTargetExpression expr : containingClass.getClassAttributes()) {
|
||||
seenNames.add(expr.getName());
|
||||
}
|
||||
for (PyClass ancestor : containingClass.iterateAncestors()) {
|
||||
for (PyTargetExpression expr : ancestor.getClassAttributes()) {
|
||||
if (!seenNames.contains(expr.getName())) {
|
||||
result.addElement(LookupElementBuilder.create(expr, expr.getName() + " = "));
|
||||
seenNames.add(expr.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user