跳转到主要内容

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 (13.3 kB 查看哈希值)

上传时间

由以下组织支持