diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-10-16 16:24:19 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-10-16 16:24:19 -0400 |
commit | 78c1a4cd0f7766327190268b8e3609c854ebfa54 (patch) | |
tree | 47c17bbfc5f80908d39e5a32df30437512e5d6d2 | |
parent | 0a66597b3498f5863620c3ca5e2713e45eed47f8 (diff) |
Indenting simple DML properly
-rw-r--r-- | src/elisp/urweb-mode.el | 13 | ||||
-rw-r--r-- | tests/sql_indent.ur | 9 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/elisp/urweb-mode.el b/src/elisp/urweb-mode.el index 5e217e1a..fb3db560 100644 --- a/src/elisp/urweb-mode.el +++ b/src/elisp/urweb-mode.el @@ -512,9 +512,16 @@ If anyone has a good algorithm for this..." (beginning-of-line) (current-indentation))) +(defconst urweb-sql-main-starters + '("SELECT" "INSERT" "UPDATE" "DELETE")) + (defconst urweb-sql-starters - '("FROM" "WHERE" "GROUP" "ORDER" "HAVING" "LIMIT" "OFFSET")) + (append urweb-sql-main-starters + '("^\\s-+FROM" "WHERE" "GROUP" "ORDER" "HAVING" "LIMIT" "OFFSET" + "VALUES" "SET"))) +(defconst urweb-sql-main-starters-re + (urweb-syms-re urweb-sql-main-starters)) (defconst urweb-sql-starters-re (urweb-syms-re urweb-sql-starters)) @@ -575,7 +582,9 @@ If anyone has a good algorithm for this..." (and (looking-at urweb-sql-starters-re) (save-excursion (and (re-search-backward urweb-sql-starters-re nil t) - (current-indentation)))) + (if (looking-at urweb-sql-main-starters-re) + (current-column) + (current-indentation))))) (and (setq data (assoc sym urweb-close-paren)) (urweb-indent-relative sym data)) diff --git a/tests/sql_indent.ur b/tests/sql_indent.ur index c4a46d71..e312dc3b 100644 --- a/tests/sql_indent.ur +++ b/tests/sql_indent.ur @@ -3,3 +3,12 @@ table t1 : {A : int, B : string, C : float} val q1 = (SELECT * FROM t1 WHERE A = 0) + +val a1 = (INSERT INTO t1 + VALUES (0, "1", 2.0)) + +val a2 = (UPDATE t1 + SET A = 3, B = "4", C = 5.0) + +val a3 = (DELETE FROM t1 + WHERE B <> "good") |