branch: externals/sql-indent
commit dc44adc8ae037acfadae344ab5c7c70fc91d76d5
Author: Pierre Téchoueyres <[email protected]>
Commit: Pierre Téchoueyres <[email protected]>
Add support for assignment and arrow (=>) in align.
Allow to align some keywords in sql statements.
Ex:
declare
function dummy(p_param_1 in varchar2,
p_param_2 in out varchar2,
p_param_2 out varchar2)
return boolean;
end dummy;
function dummy_2(p_param_1 out varchar2,
p_param_2 out varchar2,
p_param_2 out varchar2)
return boolean;
function dummy_3(p_param_1 varchar2,
p_param_2 in varchar2,
p_param_2 out varchar2)
return boolean;
var1 boolean := true;
var2 number := 1;
var42 varchar2(1) := 'Y';
begin
if dummy(p_param_1 => val1,
p_param_10 => val10) then
null;
end if;
end;
/
---
sql-indent.el | 42 +++++++++++++++++++++++++++++++-----------
1 file changed, 31 insertions(+), 11 deletions(-)
diff --git a/sql-indent.el b/sql-indent.el
index f92b1a7..ec78b29 100644
--- a/sql-indent.el
+++ b/sql-indent.el
@@ -1694,21 +1694,41 @@ determine how to indent each type of syntactic element."
;;; alignment rules
(defvar sqlind-align-rules
- ;; Line up he two sides of an equal sign in an update expression
- `((sql-update-lineup-equals
- (regexp . , ".*?\\(\\s *\\)=\\(\\s *\\).*")
- (modes . '(sql-mode))
- (group . (1 2))
+ '(;; Line up the two side of arrow =>
+ (sql-arrow-lineup
+ (regexp . "\\(\\s-*\\)=>\\(\\s-*\\)")
+ (modes quote (sql-mode))
+ (group 1 2)
(case-fold . t)
(repeat . t))
- ;; lineup the column aliases (the "as name" part) in a select statement
- (sql-sqlect-lineup-column-names
- (regexp . , ".*?\\(\\s +\\)as\\(\\s +\\).*")
- (modes . '(sql-mode))
- (group . (1 2))
+ ;; Line up the two sides of an assigment
+ (sql-assign-lineup
+ (regexp . "\\(\\s-*\\):=\\(\\s-*\\)")
+ (modes quote (sql-mode))
+ (group 1 2)
+ (case-fold . t)
+ (repeat . t))
+ ;; Line up the two sides of in / out / in out parameter
+ (sql-param-lineup-in-out
+ (regexp . "\\(\\s-+\\)\\(in out\\|in\\|out\\)\\(\\s-+\\)")
+ (modes quote (sql-mode))
+ (group 1 3)
(case-fold . t)
(repeat . t))
- )
+ ;; Line up the two sides of an equal sign in an update expression
+ (sql-equals
+ (regexp . "\\(\\s-*[^:]\\)=\\([^>]\\s-*\\)")
+ (modes quote (sql-mode))
+ (group 1 2)
+ (case-fold . t)
+ (repeat . t))
+ ;; lineup the column aliases (the "as name" part) in a select statement
+ (sql-select-lineup-column-names
+ (regexp . ".*?\\(\\s +\\)as\\(\\s +\\).*")
+ (modes quote (sql-mode))
+ (group 1 2)
+ (case-fold . t)
+ (repeat . t)))
"Align rules for SQL codes.
These rules help aligning some SQL statements, such as the column