branch: externals/sql-indent
commit 23587a3593c6671da292eadeac468b933a4ad6c7
Author: Pierre Téchoueyres <[email protected]>
Commit: Alex Harsányi <[email protected]>
Improve left indentation of case statement. (#34)
---
sql-indent-left.el | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/sql-indent-left.el b/sql-indent-left.el
index f430b27..961fd60 100644
--- a/sql-indent-left.el
+++ b/sql-indent-left.el
@@ -52,6 +52,16 @@
(require 'sql-indent)
+(defun indent-case-statement-items (syntax base-indentation)
+ ;; Look for a syntax of ((block-start when) (in-block case "") ...)
+ ;; or ((block-start else) (in-block case "") ...)
+ (let ((outer (sqlind-outer-context syntax)))
+ (if (and (eq 'in-block (sqlind-syntax-symbol outer))
+ (eq 'case (sqlind-syntax-keyword outer))
+ (eq 'block-start (sqlind-syntax-symbol syntax))
+ (memq (sqlind-syntax-keyword syntax) '(when else)))
+ (+ base-indentation sqlind-basic-offset)
+ base-indentation)))
(defvar sqlind-indentation-right-offsets-alist
`((select-column-continuation sqlind-indent-select-column
@@ -166,6 +176,7 @@ select aaa,
(delete-clause 0)
(update-clause 0)
(case-clause-item-cont 0)
+ (block-start indent-case-statement-items)
(begin-block 0)
(case-clause +)
(package +)