问题标签 [flymake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
394 浏览

emacs - 使用远程(tramp)python文件但不是本地时,强制flycheck模式在emacs中关闭

我试图让 flycheck 在本地运行 Python 文件,但在远程机器上使用 python 文件时没有运行 flycheck。我的问题是 flycheck 减慢了保存速度,它似乎发送了第二个文件,有时最终会冻结 emacs。我在下面编写了两个函数,但它似乎无法正常工作。如果它是一个远程文件(通过tramp连接),我希望它禁用fly-check,或者为所有其他python文件启用flycheck-mode。目前,它只是为所有文件启用 flycheck 模式。

有什么办法可以修复这个脚本?还是另一种方法?

0 投票
0 回答
38 浏览

emacs - Flymake:使用 flymake.mk 时“没有规则来制作目标'检查语法'”

我正在尝试使用自定义初始化函数使 flymake 工作。首先,我需要它来使它在 linux 内核源代码上工作。我找到了一个stackoverflow 答案,它在项目的根目录中创建了一个 flymake.mk 并让 flymake 查找该文件,该文件仅包含 make 配方检查语法。

当然那没有用。Flymake 日志 说:*** No rule to make target 'check-syntax'. Stop.

所以我做了一个更简单的项目,只有一个 file.c 和一个 Makefile,使用默认的 flymake,效果很好。所以我从 Makefile 中删除了 check-syntax 部分,并将其放在 flymake.mk 中,所有三个文件都在同一个目录中。现在再次使用自定义初始化并且也不起作用。首先,我尝试查看是否选择了自定义 init,并且确实如此,当我运行时,(flymake-proc--get-file-name-mode-and-masks buffer-file-name)我得到了预期的结果:(flymake-kernel-make-init),但是当我运行时flymake-mode,“No rule to make target 'check-syntax'”错误产生然后当我(flymake-proc--get-file-name-mode-and-masks buffer-file-name)再次跑步时,我得到了零。这没有任何意义,因为 flymake-proc--get-file-name-mode-and-masks 仅取决于具有正则表达式和初始化函数的 alist。

有什么线索吗?

这是配置和flymake.mk

正则表达式是故意的,只是为了确保它可以工作。

如果我make -s -f flymake.mk -C ./ CHK_SOURCES=test.c SYNTAX_CHECK_MODE=1 check-syntax从外壳运行它,这将有效

0 投票
1 回答
40 浏览

emacs - Flymake在父目录中找不到Makefile

我正在使用 Flymake 进行 C 代码语法检查。如果 Makefile 和源文件位于同一目录下,则 Flymake 可以正常工作。但是如果 Makefile 在源代码的父目录中(就像在大多数 C 项目中一样),Flymake 似乎无法再找到 Makefile,并在*Flymake log*缓冲区中产生以下消息:

我使用的是 Flymake 的默认配置。用于测试的 C 源代码和 Makefile 列在本文末尾。我看到很多人都在为 Flymake 使用自定义的初始化函数。但我发现 Flymake 的默认初始化函数能够正确定位 Makefile,至少对于 C 项目是这样。例如,如果我flymake-proc-simple-make-initsrc/hello.c缓冲区内进行评估,我会收到以下消息:

"-C" "../"部分表示它知道 Makefile 位于上一级目录中。我不知道为什么它最终没有工作。

我想要实现的是:

  1. 使 Flymake 适用于下面测试项目中的所有源代码文件。
  2. 尽可能少的定制。

任何帮助,将不胜感激。

0 投票
0 回答
105 浏览

emacs - 访问具有合并冲突的文件时禁用或暂停flymake

当打开一个包含未解决的合并冲突的文件时,Emacs 默认启用 smerge-mode 以及其他模式(在这种情况下是 Python 模式 + EGlot 和朋友)。这也会触发 Flymake 运行,这会抱怨源代码控制或差异工具添加的合并冲突标头。

就在 Emacs 加载有合并问题的文件之后

禁用 flymake 时错误自然消失

flymake手动禁用

但是,再次启用 flymake 时,它​​没有显示语法错误。只是一个“等待”。也许flymake在启用后知道smerge-mode或类似的东西?

在此处输入图像描述

是否有人将他们的 Emacs 配置为在访问具有合并冲突(smerge 模式)和“重”模式(如 eglot)的文件时禁用 flymake 模式,或者您知道 flymake 是否足够聪明以检测到这一点?

我已经尝试了一些 elisp 来检测不同钩子上的 smerge 模式并相应地禁用 flymake,但它使缓冲区面“脏/损坏”,文本周围有 flymakes 错误标记。