branch: externals/sql-indent
commit 3f35f073f6218751c938e8dddf7c2334fca5fc28
Author: Pierre Téchoueyres <[email protected]>
Commit: Alex Harsányi <[email protected]>
Add %type, %rowtype and table prefix in function's return type. (#33)
* Add %type, %rowtype and table prefix in function's return type.
Allow correct indenting after and function declaration like bellow:
declare
function dummy return my_user.my_table%rowtype;
function dummy2 return my_user.my_table.my_col%type;
var dummy3 number;
begin
null;
end;
* Add tests cases for PR #33.
---
sql-indent-test.el | 8 ++++++++
sql-indent.el | 2 +-
test-data/pr33-io-left.eld | 1 +
test-data/pr33-syn.eld | 27 +++++++++++++++++++++++++++
test-data/pr33.sql | 14 ++++++++++++++
5 files changed, 51 insertions(+), 1 deletion(-)
diff --git a/sql-indent-test.el b/sql-indent-test.el
index a8786b4..95fc875 100644
--- a/sql-indent-test.el
+++ b/sql-indent-test.el
@@ -311,4 +311,12 @@ information read from DATA-FILE (as generated by
(ert-deftest sqlind-ert-if-exists ()
(sqlind-ert-check-file-syntax "test-data/if-exists.sql"
"test-data/if-exists-syn.eld"))
+(ert-deftest sqlind-ert-pr33 ()
+ (sqlind-ert-check-file-syntax "test-data/pr33.sql" "test-data/pr33-syn.eld"))
+
+(ert-deftest sqlind-ert-pr33-io-left ()
+ (sqlind-ert-check-file-indentation
+ "test-data/pr33.sql" "test-data/pr33-io-left.eld"
+ sqlind-indentation-left-offsets-alist 2))
+
;;; sql-indent-test.el ends here
diff --git a/sql-indent.el b/sql-indent.el
index 5b25f8d..e77345f 100644
--- a/sql-indent.el
+++ b/sql-indent.el
@@ -680,7 +680,7 @@ See also `sqlind-beginning-of-block'"
(when (looking-at "(")
(ignore-errors (forward-sexp 1))
(sqlind-forward-syntactic-ws))
- (when (looking-at "return\\(?:[ \n\r\f]+\\)\\([a-z0-9_]+\\)")
+ (when (looking-at "return\\(?:[
\n\r\f]+\\)\\([a-z0-9_.]+\\(?:%\\(?:row\\)?type\\)?\\)")
(goto-char (match-end 0))
(sqlind-forward-syntactic-ws))
(when (looking-at ";")
diff --git a/test-data/pr33-io-left.eld b/test-data/pr33-io-left.eld
new file mode 100644
index 0000000..3a6f573
--- /dev/null
+++ b/test-data/pr33-io-left.eld
@@ -0,0 +1 @@
+(0 2 2 2 0 2 0 0 0 0 0 0 0 0 0)
diff --git a/test-data/pr33-syn.eld b/test-data/pr33-syn.eld
new file mode 100644
index 0000000..f0f4cb5
--- /dev/null
+++ b/test-data/pr33-syn.eld
@@ -0,0 +1,27 @@
+(((toplevel . 1))
+ ((declare-statement . 1))
+ ((declare-statement . 1))
+ ((declare-statement . 1))
+ (((block-start begin)
+ . 1)
+ (declare-statement . 1))
+ (((in-begin-block toplevel-block "")
+ . 135))
+ (((block-end toplevel-block "")
+ . 135)
+ ((in-begin-block toplevel-block "")
+ . 135))
+ ((toplevel . 1))
+ ((comment-start . 1)
+ (toplevel . 1))
+ ((comment-start . 1)
+ (toplevel . 1))
+ ((comment-start . 1)
+ (toplevel . 1))
+ ((comment-start . 1)
+ (toplevel . 1))
+ ((comment-start . 1)
+ (toplevel . 1))
+ ((comment-start . 1)
+ (toplevel . 1))
+ ((toplevel . 1)))
diff --git a/test-data/pr33.sql b/test-data/pr33.sql
new file mode 100644
index 0000000..d3dcf0c
--- /dev/null
+++ b/test-data/pr33.sql
@@ -0,0 +1,14 @@
+declare
+ function dummy return my_user.my_table%rowtype;
+ function dummy2 return my_user.my_table.my_col%type;
+ var dummy3 number;
+begin
+ null;
+end;
+
+-- Local Variables:
+-- mode: sql
+-- tab-width: 2
+-- indent-tabs-mode: nil
+-- sql-product: oracle
+-- End: