Emacs26中 flymake 号称完全重写了,更好的架构更快的速度。有人从 flycheck 转为 flymake 了吗?
最新版的 flymake 配置能分享下吗?我发现 flymake 找不到load-path
里的包,检查 elisp 各种报错,也没找到合适的文档参考,使用起来还是不太方便。如果有用过的童鞋,请对比下和 flycheck 的优缺点,分享下心得吧。谢谢!
Emm,我看lsp默认转成了flymake,然后flycheck反正也不支持同时run多个checker(不确定flymake可不可以),然后我就开始flycheck, flymake同时用了。不过我也没研究和配置过flymake的东西,你可以参考参考lsp的代码?
两个月前用过一次eglot加flymake,竟然把语法错误标错位置,比如第二行的错误标记到第三行,低级bug,后来就没再用过
我也经常遇到,不过好像flycheck也有这种情况
配了会儿没搞明白,于是继续用着 flycheck。除非发现它有什么杀手锏级别的应用出现再考虑用它。
我觉得是eglot的问题,不过eglot又不支持flycheck,难说
这个感觉不像是flymake的锅
flymake感觉就没标对过位置,而且,一标就是一大片,毫无准确性可言。另外,开始的时候我也纠结过多个checker的问题。后来发现pylnit实在比flake8慢太多了,flycheck这种add-next-checker的机制,正好缓解了这个问题。。
语言:python
考慮lsp-mode lsp-ui
yyoncho加了flymake支援後我改成預設flymake是基於兩個原因
(defcustom lsp-prefer-flymake t
"Auto-configure to prefer `flymake' over `lsp-ui' if both are present."
:type 'boolean
:group 'lsp-mode)
-
flycheck有滯留diagnostics問題: [lsp-ui-flycheck] Clear overlays before calling (flycheck-buffer) by MaskRay · Pull Request #214 · emacs-lsp/lsp-ui · GitHub 調用
(flycheck-clear t)
能緩解。但作者有疑慮,需要更多data points -
flycheck性能問題 lsp-ui-flycheck is (sometimes) slow · Issue #45 · emacs-lsp/lsp-ui · GitHub 不知道現在是否改善了
但我用flymake也碰到問題。lingering diagnostics可能有時仍然存在(需要更多data points)
預設開啓的flymake-proc
會創建臨時檔案a_flymake.cc
等,很煩: (setq-default flymake-diagnostic-functions nil)
沒有flymake-posframe,我自己隨手塗了一個 Config/config.el at master · MaskRay/Config · GitHub
这有个
看来大家用 flymake 都遇到了困难。有人配置检查 elisp 成功的吗?其他语言可以用 lsp-mode 解决,但最基本的 elisp 检查我都用不起来真是郁闷。
我也只是通过 lsp 用 flymake,自己没有配过,也不太会配置。
这里有一个对比,稍微看了一下最大的区别是语言的支持数量,不过随着 lsp 的普及,这方面的差距会慢慢变小吧。
http://www.flycheck.org/en/latest/user/flycheck-versus-flymake.html
Flycheck | Flymake | |
---|---|---|
Supports Emacs versions | 24.3+ | 26.1+ |
Built-in | no [1] | yes |
Supported languages | >50 | >4 |
Automatic syntax checking | built-in | manual |
Checks after | save, newline, change | save, newline, change |
Checks asynchronously | yes | yes |
Automatic syntax checker selection | by major mode and custom predicates | user-defined [2] |
Manual syntax checker selection | yes | yes |
Multiple syntax checkers per buffer | yes | yes |
Checking remote files via Tramp | said to work, but not officially supported [3] | partly? |
Definition of new syntax checkers | single declarative function/macro | function definition [4] |
Error levels | errors, warnings, infos, custom levels | errors, warnings, notes, custom levels |
Error identifiers | yes | no |
Error parsing helpers | for regexp, JSON and XML | none |
Error highlighting in buffers | yes | yes |
Fringe icons for errors | yes | yes |
Error message display | tooltip, echo area, fully customizable | tooltip, echo area |
List of all errors | yes; filterable by error level | yes |
嗨,您好。
这不成立,http://www.flycheck.org/en/27/_downloads/flycheck.html#Applying-multiple-checkers:
Frequently, we would like to use multiple syntax checkers in a buffer. For instance, we might want to check the syntax of a script with
sh-zsh
from the previous section, and then use Shellcheck to check for questionable code such as unquoted variable expansions, if there are no syntax errors. Flycheck supports this scenario by chaining syntax checkers.
它是用把checkers chain在一起,只有第一个完全没有error了,才会跳到第二个去check。
你这两个warning不都是lsp-ui checker的吗?如果你吧这两个warning 解决了,你看看其他的checker的内容会不会多出来
add-next-checker的时候不是可以指定level吗
RIP,好像还真是,把level设置成t就可以一起用了~多谢
解决(require)
报错的问题:
(setq elisp-flymake-byte-compile-load-path
(append elisp-flymake-byte-compile-load-path load-path))
这flymake居然不用自己的前缀定义变量,很勇哦?