igor先生提供构建您的Franken程序所需的组件。
项目描述
概述
igor先生是pyflakes的扩展,它将学习您从哪里导入内容,然后自动从最常导入的位置填充缺失的导入。
但它是如何知道的?
“这是一种技巧。”
用法:igor [–print | –reap] 文件名
此脚本将记录filename中的所有导入到igor的数据库中,然后为在数据库中找到但未导入的任何名称在文件顶部添加导入。
如果指定了–print选项,则重写的文件将写入stdout。(这允许将igor用作编辑器的过滤器。)否则,文件将就地修改。
如果指定了–reap选项,则将从指定文件添加导入到数据库中,但不会写入stdout,文件也不会修改。
仅跟踪和插入“from x import y”风格的导入。别名(“from x import y as z”)不受支持。
igor先生将其数据库存储在用户的家目录中。基本文件名是 ~/.mr.igor,但请注意,Python的shelve模块可能使用不同的物理文件名,例如具有.db后缀。
与TextMate一起使用
转到TextMate包编辑器,并添加一个新命令,设置如下
- 保存
当前文件
- 命令(s)
#!/bin/bash igor --print $TM_FILEPATH- 输入
无
- 输出
替换文档
- 激活
键位等效:⌘I
- 作用域选择器
source.python
现在您可以保存当前文件并通过⌘I键盘快捷键使用Igor运行它。
与Vim一起使用
以下键位映射将配置⌘I通过Igor运行当前文件,然后重新加载当前缓冲区
nmap <D-i> :!igor %<CR> <bar> :e!<CR>
与Emacs一起使用
将以下内容添加到您的 .emacs 文件中。函数 igor 通过当前缓冲区的临时文件副本运行Igor。只有当Igor添加新的导入时,当前缓冲区才标记为已修改。
(defun igor () "Run the current buffer through mr.igor." (interactive) (let ((igor-exe (or (executable-find "igor") (error "No command 'igor' found"))) (tempfile (make-temp-file "igor")) (buffer (current-buffer)) (lines-before (count-lines 1 (buffer-size)))) (with-temp-file tempfile (insert-buffer-substring buffer)) (with-temp-buffer (shell-command (concat igor-exe " --print " tempfile) t) (if (zerop (compare-buffer-substrings (current-buffer) 1 (buffer-size) buffer 1 (buffer-size buffer))) (message "igor: no new imports") (copy-to-buffer buffer 1 (buffer-size)) (let ((lines-after (count-lines 1 (buffer-size)))) (message "igor: added %d imports" (- lines-after lines-before)))) (delete-file tempfile)))) (add-hook 'python-mode-hook '(lambda () (local-set-key (kbd "C-c C-i") 'igor)))
变更日志
2013/10/05
发布版本 1.4。 [davisagli]
ImportChecker 的 __del__ 在 pyflakes 0.7 中不会被调用,因此数据库永远不会被写入。改为使用 with() 语句,其中 __exit__ 方法保证会被调用。 [danjacka]
2011/10/2
发布版本 1.3。 [davisagli]
在初始注释集合之后插入导入,以修复在 python 文件中声明 PEP0263 编码时的问题。 [naro]
更新为与(并需要)pyflakes 0.5 兼容。在 Python 2.6 和 2.7 上进行了测试。 [davisagli]
2010/1/7
发布版本 1.2。 [davisagli]
添加 –reap 选项。 [davisagli]
2009/12/14
添加与 Vim 集成的使用说明。感谢 Stephan Eletzhofer。 [davisagli]
发布版本 1.1。 [davisagli]
修复了在打印模式下作为过滤器使用时,语法错误会导致文件被覆盖的问题。 [davisagli]
修复了在未找到新导入时,打印模式不会打印任何内容的问题。 [davisagli]
修复了同一行中多个导入未记录的问题。 [davisagli]
发布版本 1.0。 [davisagli]
添加功能测试。 [davisagli]
重构以提高可测试性;避免 monkeypatching。 [davisagli]
2009/12/13
为控制台脚本添加帮助。 [davisagli]
使用 ~/.mr.igor.db 作为默认数据库位置。 [davisagli]
添加 –print 选项。 [davisagli]
添加 igor 控制台脚本。 [davisagli]
2009/12/12
初始概念验证。 [davisagli]
项目详情
mr.igor-1.4.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d40b46aee638a03879c9a7a61a50d2039e44bfd8244e385e4f73e16f2d855efb |
|
MD5 | ac3c2d0767769fc87ad76d4b8cf1d8fb |
|
BLAKE2b-256 | 9dc8d10eb71ec7277d0bb6ef73a21a923931927e94d3dc7ad607eb7d282f729e |