我正在将 Python 3.6 与 PyCharm 一起使用,但令人沮丧的是,对于字典对象的特殊情况(具有固定键模式),不支持代码完成。
举例来说,我创建并尝试访问一个简单的字典对象,如下所示:
inventory = {'name': 'hammer', 'price': 2.3}
inventory['']
Run Code Online (Sandbox Code Playgroud)
当我将光标放在引号“ ”内并点击时,Ctrl + Space我会完成代码,并且 IDE 会正确建议字典对象中的所有可能的键。那太棒了!
但是,如果我尝试将其构建为返回相同字典对象的实用程序函数,例如使用用户提供的值但使用相同的字典键 - 那么我将不再获得代码完成!
def get_inventory(name: str, price: float):
return {'name': name, 'price': price}
inventory = get_inventory('hammer', 2.3)
inventory[''] # <- Pycharm can't offer any suggestions!
Run Code Online (Sandbox Code Playgroud)
有什么解决方法或解决方案吗?我已经搜索过类似的解决方案,但没有找到任何有效的解决方案。我知道我可以将其转换为一个类Inventory并以这种方式访问属性,但我不想这样做,原因如下:
dict对象是实现此目的最简单的方法任何关于如何让我的 IDE 通过识别此类对象中可能的键来协助代码完成的帮助或解决方案dict将不胜感激!
在vim中搜索我的python完成必杀技时,我真的很喜欢<Cx> <Ci>:"当前和包含文件中的关键字".这几乎总是让我从另一个完成的模块中得到一个令人讨厌的名字,这很棒.
(Omni-completion在它工作时明显更好,但是它经常报告它找不到任何匹配.好吧,Python不是Java,我明白了)
这个多文件完成的唯一问题是它非常慢:在我的上网本上,每次点击<Cx> <Ci>时,具有合理导入集的文件最多需要4或5秒才能解析.每次点击<Cx> <Ci>时,似乎都会加载每个导入的文件.有没有办法缓存文件或加快这个过程?使用标签完成会更快吗?
我使用过XCode和Netbeans,我注意到它们有一个自动完成引号或括号的功能(我认为其他IDE也经常这样做).我不知道这个功能的名称是什么,但有没有办法在Emacs中做到这一点?
例如,当我输入
printf("
Run Code Online (Sandbox Code Playgroud)
我希望它能自动输入
printf("")
Run Code Online (Sandbox Code Playgroud)
将光标放在引号之间.
谢谢.
一段时间以来,我一直在考虑从零开始设计一种小玩具语言,没有任何"统治世界",但主要是作为练习.我意识到要完成这项工作还有很多东西需要学习.
这个问题是关于三个不同的概念(解析,代码突出显示和完成),这些概念让我非常相似.当然,解析和ASTgen是编译的一部分,而代码突出显示和完成更多是IDE的一个功能,但我想知道有什么相似之处和不同之处.
我需要一些在这个主题上更有经验的人的提示.这些概念之间可以共享哪些代码,以及在这种意义上可以提供哪些架构注意事项?
architecture parsing language-design syntax-highlighting code-completion
我正在使用Aptana Studio 3(基于Eclipse构建)来编辑我的Zend Framework应用程序.当我编辑视图脚本时,我希望我的IDE提供代码完成/自动完成.
<?php echo $this->form...
Run Code Online (Sandbox Code Playgroud)
由于视图助手函数不是实例化的类,我没有开箱即用的这种功能.我怎样才能将这种功能添加到Eclipse中?
在我的一个iOS项目中,我必须不断删除项目的派生数据,以便修复代码完成(代码意义,无论你想要什么称呼它).有时删除甚至不起作用......代码感仍然会被打破.知道这个项目有什么问题吗?
目前我正在使用Eclipse(3.5.x和3.7.x)和CDT插件,用于包含.c和.h文件的几个项目以及带有x86(或IA64)汇编代码的.S文件.
问题是,在.S文件中使用了很多预处理器宏.这些宏通常在.S文件中包含的.h文件中定义.一个人为的例子可能是
#define FOO(regA, regB) \
mov regA, %ax \
mov %ax, regB
Run Code Online (Sandbox Code Playgroud)
作为header1.h的一部分
然后foo.S可能包含
#include "header1.h"
...
FOO(%bx, %cx)
...
Run Code Online (Sandbox Code Playgroud)
现在缺少的是编辑foo.S的可能性,用F3跳转到header1.h中的FOO定义或(显然与此相关)以查看宏扩展的预览.
我可以从.c(或.h)文件内部执行此操作,但不能从.S文件执行此操作.有没有办法为.S文件启用此功能?
我刚开始学习用于Android开发的IntelliJ IDEA CE 12,作为Eclipse的替代品.
IDEA非常快,我开始喜欢它.
但是,当我尝试编辑Android XML文件时,代码完成永远不会出现.在我的办公室,我正在使用MacBook Air(64位),当我尝试使用Mac版时,它的工作效果非常好.
在我的家里,我使用Vista(32位版本),我的笔记本电脑规格不太好.(这就是我选择从Eclipse改为IDEA的原因......)
安装后我没有更改任何设置.是否有任何选项可以为Android XML编辑器启用代码完成?或者只是机器的性能问题?
我知道这是一个垃圾问题,但我真的需要帮助.
先感谢您.
我正在尝试PHPStorm并且在代码完成方面遇到麻烦.我用Silex框架编写项目并面临PHPStorm缺乏Silex依赖注入容器的代码完成.例如,它不codecomplete $app['twig']->或$app['db']->或任何其他服务.我发现解决方案的唯一方法就是像这样做
$db = $app['db'];
/** @var $db \Doctrine\DBAL\Connection */
$db->....
Run Code Online (Sandbox Code Playgroud)
然后PHPStorm将完成代码.使用ServiceProvider接口注册服务.有没有办法让PHPStorm在这种情况下完成代码完成而无需额外的变量和注释?
dependency-injection service-locator code-completion phpstorm silex
我正在尝试使用Xamarin(在Mac OS X上)在Mono中进行一些跨平台(Mac,iOS,Android)开发.我在"Filament"命名空间内创建了一个"Point"类,现在我正在尝试添加单元测试.
在Mono世界中,似乎有两种单元测试方法:NUnit和NUnitLite.我已经尝试了两种方法(在后一种情况下,遵循本教程),结果相同,这是:
在我的单元测试项目中,我添加了一个指向Point.cs文件的链接(通过右键单击项目,使用"添加...",选择文件,然后选择"添加为链接"选项).在我的单元测试文件(PointTest.cs)中,我添加"using Filament;" 到文件的顶部.但是尽管我现在可以使用Point类,并且它成功编译,但Intellisense似乎完全没有注意到它 - 每次我开始键入"Point"时它会将其扩展为"PointTest",当我顽固地改变它时对于Point,它将它绘制为红色,就像错误一样.
事实上,我的"使用"线也发生了同样的麻烦; 我键入"使用Filament",它将其更改为"使用FilamentTestsiOS"(我的单元测试项目的命名空间).
这让我疯狂......但作为Mono,Xamarin,NUnit和NUnitLite的完整菜鸟,我确信我做的事情很愚蠢.
设置C#/ Mono单元测试的正确方法是什么,以便intellisense和编译器都能识别我正在编写测试的类?
code-completion ×10
autocomplete ×2
android ×1
aptana ×1
architecture ×1
assembly ×1
completion ×1
eclipse ×1
eclipse-cdt ×1
emacs ×1
ide ×1
intellisense ×1
macros ×1
parsing ×1
phpstorm ×1
pycharm ×1
python ×1
python-3.x ×1
silex ×1
vim ×1
xamarin.ios ×1
xcode ×1
xml ×1