当文件没有 .py 扩展名时为 python 运行 Flymake

2023-12-22

我根本不是一个 lisp 人,但我的主要脚本环境位于 emacs 上,当文件上没有 .py 扩展名时,我需要一些帮助来运行我的 Flymake/pyflakes。因为我工作中的一些脚本没有 .py 扩展名。

当我读取/编码扩展名为 .py 的文件时,这与 pylint、pep8、pychecker 等配合得很好。

;; flymake for python
(add-to-list 'load-path "~/.emacs.d/plugins/flymake")

(when (load "flymake" t)
  (defun flymake-pylint-init (&optional trigger-type)
    (let* ((temp-file (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-with-folder-structure))
           (local-file (file-relative-name
                        temp-file
                        (file-name-directory buffer-file-name)))
           (options (when trigger-type (list "--trigger-type" trigger-type))))
      (list "~/.emacs.d/plugins/flymake/pyflymake.py" (append options (list local-file)))))
  (add-to-list 'flymake-allowed-file-name-masks
               '("\\.py\\'" flymake-pylint-init)))

(add-hook 'find-file-hook 'flymake-find-file-hook)

;; flymake help on minibuffer
(defun my-flymake-show-help ()
  (when (get-char-property (point) 'flymake-overlay)
   (let ((help (get-char-property (point) 'help-echo)))
    (if help (message "%s" help)))))

(add-hook 'post-command-hook 'my-flymake-show-help)

当没有 .py 扩展名时,我尝试让这个工作初始化片段。我用 python-mode-hook 包装了上面的代码,并将 \.py\ 部分更改为类似 \.*\ 的内容。

然而,这不仅针对 python 文件调用 Flymake-pylint-init 函数。它称其为在 emacs 中打开的任何内容。

顺便说一句,我无法在无扩展名文件上使用 m-x Flymake-mode,它不会打开该次要模式。

我很想知道让它发挥作用的任何想法。谢谢!


首先我要说的是,下面的代码通常不是解决 Emacs 问题的方法。我所做的就是加载 Flymake,然后踩踏核心功能之一。由于 Flymake 的编写方式,我找不到挂钩函数甚至使用建议的方法。如果 Flymake 改变了这个函数或者它的调用方式,它就不再起作用了。也就是说,它已经为我工作了很多年了:)

这是基本代码:

(require 'flymake)

(defun flymake-get-file-name-mode-and-masks (file-name)
  "Return the corresponding entry from `flymake-allowed-file-name-masks'."
  (unless (stringp file-name)
    (error "Invalid file-name"))
  (let ((fnm flymake-allowed-file-name-masks)
        (mode-and-masks nil)
        (matcher nil))
    (while (and (not mode-and-masks) fnm)
      (setq matcher (car (car fnm)))
      (if (or (and (stringp matcher) (string-match matcher file-name))
              (and (symbolp matcher) (equal matcher major-mode)))
          (setq mode-and-masks (cdr (car fnm))))
      (setq fnm (cdr fnm)))
    (flymake-log 3 "file %s, init=%s" file-name (car mode-and-masks))
    mode-and-masks))

然后从上面的代码中,而不是这样:

(add-to-list 'flymake-allowed-file-name-masks '("\\.py\\'" flymake-pylint-init))

do this:

(add-to-list 'flymake-allowed-file-name-masks '(python-mode flymake-pylint-init))

你可以对 Perl 等做同样的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当文件没有 .py 扩展名时为 python 运行 Flymake 的相关文章

  • 如何编写嵌套的 __init__.py 文件

    我正在努力解决嵌套问题 init py在我正在编写的Python包中 该包具有以下架构 module init py submodule1 init py source py submodule2 init py source py sub
  • 获取 .wav 文件长度或持续时间

    我正在寻找一种方法来找出 python 中音频文件 wav 的持续时间 到目前为止我已经了解了 pythonwave图书馆 mutagen pymedia pymad我无法获取 wav 文件的持续时间 Pymad给了我持续时间 但它不一致
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 类型错误:需要二进制或 unicode 字符串,得到 618.0

    I ve been trying to implement this ML Linear Model into my dataset https www tensorflow org tutorials estimator linear L
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • Paste.httpserver 并通过 HTTP/1.1 Keep-alive 减慢速度;使用 httperf 和 ab 进行测试

    我有一个基于paste httpserver 的Web 服务器作为HTTP 和WSGI 之间的适配器 当我使用 httperf 进行性能测量时 如果每次使用 num conn 启动一个新请求 我每秒可以执行超过 1 000 个请求 如果我使
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • Python 中维基百科 API 中的 DisambiguationError 和 GuessedAtParserWarning

    我想获得维基百科与搜索词相关的可能且可接受的名称列表 在这种情况下是 电晕 当输入以下内容时 print wikipedia summary Corona 这给出了以下输出 home virej local lib python3 8 si
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • 如何指示 urwid 列表框的项目数多于当前显示的项目数?

    有没有办法向用户显示 urwid 列表框在显示部分上方 下方有其他项目 我正在考虑类似滚动条的东西 它可以显示条目的数量 或者列表框顶部 底部的单独栏 如果这个行为无法实现 有哪些方法可以实现这个通知 在我的研究过程中 我发现这个问题 ht
  • minizinc python 安装

    我通过 anaconda 提示符在 python 上安装了 minizinc 就像其他软件包一样 pip install minizinc 该软件包表示已成功安装 我可以导入该模块 但是 我正在遵循基本示例https minizinc py
  • pandas 中数据帧中的随机/洗牌行

    我目前正在尝试找到一种方法来按行随机化数据框中的项目 我在 pandas 中按列洗牌 排列找到了这个线程 在 pandas 中对 DataFrame 进行改组 排列 https stackoverflow com questions 157
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • IndexError - 具有匀称形状的笛卡尔 PolygonPatch

    我曾经使用 shapely 制作一个圆圈并将其绘制在之前填充的图上 这曾经工作得很好 最近 我收到索引错误 我将代码分解为最简单的操作 但它甚至无法执行最简单的循环 import descartes import shapely geome
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar

随机推荐

  • MongoDB 数据库结构和最佳实践帮助

    我正在为我的垃圾收集公司开发路线跟踪 优化软件 并且希望获得有关我当前数据结构 情况的一些反馈 这是我的 MongoDB 结构的简化版本 数据库 data 收藏 顾客 包含所有客户数据的数据收集 cust id 1001 name Cust
  • 如何以编程方式设置 -Dorg.apache.el.parser.COERCE_TO_ZERO=false

    这个问题类似于 jsf 绑定到 UI 中输入文本的整数属性在提交时设置为零 https stackoverflow com questions 4541612 jsf integer property binded to a inputte
  • 使用 gen_tcp 的 Erlang 客户端-服务器示例未收到任何内容

    我试图在客户端接收数据 但没有收到任何数据 发送消息的服务器代码 client Socket Server gt gen tcp send Socket Please enter your name io format Sent confi
  • HTML5 输入类型=数字删除前导零

    在 Chrome 15 中 当使用元素作为文本字段时 即使输入的数字不违反验证规则 例如最小值 最大值 前导零 例如 011 也会被删除 是否有一个属性可以强制零在失去焦点后保留在字段中 其应用是数字数据 例如国际电话前缀
  • 在容器优化操作系统中以 JSON 形式注入日志

    我能够借助 Stackdriver 日志代理从容器优化操作系统将日志以 JSON 形式提取到 Google 日志查看器 它将日志作为值注入到消息中 但在默认配置下不作为 json 负载注入 我已经尝试过什么 我已将 etc stackdri
  • Android OpenGL:可能内存不足?

    几周来我一直在尝试解决这个问题 但我现在不知道该怎么办 我认为某些 Android 设备没有足够的内存来加载大量纹理 尽管这可能是其他原因导致的问题 正如我所说 我真的不知道该怎么办 有 28 个 PNG 正在加载 全部为 1024x102
  • 如何用Python绘制多边形?

    我有以下格式的 x y 坐标输入值 1 1 2 1 2 2 1 2 0 5 1 5 我想画多边形 但不知道怎么画 Thanks Using matplotlib pyplot import matplotlib pyplot as plt
  • 使用 JavaScript 或 jQuery 获取并替换字符串中的最后一个数字

    如果我有字符串 var myStr foo 0 bar 0 我想我们应该有一个名为getAndIncrementLastNumber str 所以如果我这样做 myStr getAndIncrementLastNumber str foo
  • iOS 13 增加了“修剪”功能。从 UIImagePickController 中选择的文件的前缀

    iOS 13 添加了一个trim 从照片中选择文件时的前缀 file private var mobile Containers Data PluginKitPlugin FPDLKFHEQ 4T56 3456 HTE2 39EK2KDJU
  • Java:从控制台读取直到出现空行

    我写了这个方法 永无休止 它没有打印我传递的内容 为什么 import java io BufferedReader import java io InputStreamReader import java util ArrayList c
  • java.util.Properties 编码

    我在两个不同的系统上得到不同的结果 但不知道为什么 Properties prop new Properties prop load new ByteArrayInputStream input input is byte 在两个系统上输入
  • 使用 Jackson 反序列化 Scala 列表

    我有一个返回的案例类看起来像这样 case class Response JsonDeserialize contentAs classOf java lang Long longList List Long null 我有一个客户 Obj
  • 使用 ODP.NET 从 PL/SQL 函数获取 RECORD,无需接触 PL/SQL 代码

    标题非常不言自明 从 C 应用程序 使用 ODP NET 我尝试调用一个 PL SQL 函数 该函数返回的不是一个简单的值 而是一条记录 不幸的是 我无权添加或更改 PL SQL 代码 因此尝试将函数包装在另一个返回不同类型的函数中对我来说
  • 十进制浮点数与二进制的相互转换

    简而言之 我的问题是 为什么浮点数中的舍入误差仅在计算后出现 而不是在存储文字时出现 我的意思是这样的 我知道在十进制与二进制相互转换时由于浮点数的舍入误差而出现的问题 例如 在 Java 中 double a 10 567 double
  • 相当于 C# 中 string.Format 的 CLR 函数

    我正在寻找一个 CLR 函数 它可以执行与 C 中的 String Format 相同的操作 作为示例 我想通过 CLR 函数执行以下操作 String Format My name is 0 and I live in 1 myName
  • 如何防止 org-mode 执行所有 babel 源代码块?

    我有一个 org 文件 里面有很多 babel 源代码块 只需要在代码更改时重新执行 如何防止 org 在导出期间执行所有块 换句话说 将它们全部设置为仅手动执行 我更喜欢单个全局选项 而不必单独编辑每个块 变量org export bab
  • C++ 异常二进制兼容性

    我的项目使用 2 个不同的 C 编译器 g 和 nvcc cuda 编译器 我注意到 g 对象文件中没有捕获从 nvcc 对象文件抛出的异常 C 异常应该在同一台机器上二进制兼容吗 什么会导致这种行为 try kernel new cuda
  • SQL 更新后,wso2 数据服务能否返回受影响的行?

    我已经使用 WSO2 数据服务连接到数据库一段时间了 一切都很完美 只是在 SQL 更新脚本之后我仍然无法获取受影响的行 我已经按照向导一遍又一遍地尝试 但没有找到解决方案 有谁知道如何获得吗 感谢您的提前回复 恐怕没有办法直接获取更新的行
  • makefile 的错误检查行为

    如果我的程序必须为不同的结果 主要是错误 返回不同的值 例如 0 1 2 3 等 则调用该程序的 makefile 将必须停止执行其余的 makefile 命令 即使该命令产生错误 返回非零值 是否有办法继续执行 makefile 谢谢你们
  • 当文件没有 .py 扩展名时为 python 运行 Flymake

    我根本不是一个 lisp 人 但我的主要脚本环境位于 emacs 上 当文件上没有 py 扩展名时 我需要一些帮助来运行我的 Flymake pyflakes 因为我工作中的一些脚本没有 py 扩展名 当我读取 编码扩展名为 py 的文件时