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:

Reply via email to