sql-mode如何格式化代码

打开sql文件,自动使用了sql-mode,但是没法格式化代码.

看了一下sql layer文档http://develop.spacemacs.org/layers/+lang/sql/README.html#install, 里面提到format with sqlfmt,后面也提到快捷键 SPC m = c 问题是sqlfmt怎么配置?里面没提到,快捷键也有 SPC m = c设置。。。

(add-hook 'sql-mode-hook (lambda ()
  (sql-highlight-sqlite-keywords)
  (format-all-mode)
))

python安装pip install sqlparse 然后有一个sqlformat.exe,看format-all-mode的文档,是保存sql文件时自动格式化代码,不过我不用spacemacs

貌似没有效果:sob:

通常major mode会设置indent-region-functionindent-line-function,所以你在任何major mode里使用indent-line indent-region或者indent插件如evil-nerd-commentor应该都能正常工作(因为它们会按convention去调前述两个变量的值),除非major mode作者没有设置好。

好像没说清楚,我是melpa安装了format-all这个包 https://github.com/lassik/emacs-format-all-the-code 不过好多功能都没用过,只用到格式化json和sql

SQL有太多方言了,暂时还真没找到一个好的(我用Postgres为主)。感觉相对较好的是 sqlformat,这是我的配置 https://github.com/zhenwenc/.emacs.d/blob/master/lisp/zc-sql-funcs.el#L5

找了一圈确实发现还是sqlformat好用,format-all没法针对range进行格式化,所以放弃了。

后来发现原来sqlformat是purcell大神写的,贴一下他的这个配置 https://github.com/purcell/sqlformat/blob/master/sqlformat.el

嗯,都只是一个简单的wrapper,主要还是选择引用哪个后端。 我也就是偶尔用用,一遇到复杂的query结果就一塌糊涂。