我在 Emacs 25.2 上启用了 js2-mode 和 flycheck/eslint。
当前按制表符(或换行符)将根据 js2-mode-js-indent-level 缩进。
我希望它是动态的以匹配 flycheck/eslint 设置
有没有办法做到这一点 ?
Emacs 已经具备解析工具json
(eslint
在本例中为 config )。
解析配置并将缩进配置设置为js-indent-level
:
(defun js2-mode-use-eslint-indent ()
(let ((json-object-type 'hash-table)
(json-config (shell-command-to-string (format "eslint --print-config %s"
(shell-quote-argument
(buffer-file-name))))))
(ignore-errors
(setq js-indent-level
(aref (gethash "indent" (gethash "rules" (json-read-from-string json-config))) 1)))))
(add-hook 'js2-mode-hook #'js2-mode-use-eslint-indent)