Memformat kode SQL secara otomatis

15

Ada beberapa standar dan gaya pengkodean umum yang terkenal untuk SQL (mis., Menggunakan huruf besar untuk kata-kata khusus, menempatkan kata kunci utama dalam baris yang berbeda, dll.).

Apakah Emacs datang dengan mode apa pun untuk ini, atau apakah ada paket untuk memformat SQL agar mematuhi standar umum?

Amelio Vazquez-Reina
sumber

Jawaban:

3

Jika Anda tidak keberatan memanggil proses python, maka ini berfungsi ( pip install sqlparse):

(defun sqlparse-region (beg end)
  (interactive "r")
  (shell-command-on-region
   beg end
   "python -c 'import sys, sqlparse; print(sqlparse.format(sys.stdin.read(), reindent=True))'"
   t t))
ded7
sumber
1

Bukan jawaban lengkap untuk kueri Anda, tetapi untuk memanfaatkan kata-kata yang dipesan, saya memiliki beberapa definisi singkatan. Berikut ini adalah contoh singkat hanya untuk menunjukkan kepada Anda (tidak termasuk semua kata sql yang dicadangkan)

(define-abbrev-table 'sql-mode abbrev-table 
(mapcar #'(lambda (v) (list v (upcase v) nil 1))
'("absolute" "action" "add" "after" "all" "allocate" "alter" "and" "any" "are" "array" "as" "asc" "asensitive" )
))
Nsukami _
sumber
0

Dari versi 21.4a, Emacs hadir dengan sql-mode(sql.el) yang melakukan lekukan otomatis dan kunci font. Tidak ada linting bawaan, tetapi memungkinkan Anda untuk menentukan linter eksternal dengan variabel yang dapat disesuaikan sql-linter-program( M-x customize-group SQL)

bekerja
sumber