]> git.eshelyaron.com Git - emacs.git/commitdiff
Automate support for `sql-indent' ELPA package
authorMichael R. Mauger <michael@mauger.com>
Mon, 1 Oct 2018 04:12:51 +0000 (00:12 -0400)
committerMichael R. Mauger <michael@mauger.com>
Mon, 1 Oct 2018 04:17:23 +0000 (00:17 -0400)
* progmodes/lisp/sql.el (sql-use-indent-support): New variable.
(sql-is-indent-available): New function.
(sql-indent-enable): Use above.
(sql-mode-hook, sql-interactive-mode-hook): Add `sql-indent-enable'.

etc/NEWS
lisp/progmodes/sql.el

index a54abd7a638df0ceed60a62bfbb05107a371e495..daacf49e62d6d2f3611bacc72a174aa019fdd826 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -365,6 +365,29 @@ better emulate 'M-.' in both Bash and zsh, since the former counts
 from the beginning of the arguments, while the latter counts from the
 end.
 
+** SQL
+
+*** Installation of 'sql-indent' from ELPA is strongly encouraged.
+This package support sophisticated rules for properly indenting SQL
+statements.  SQL is not like other programming languages like C, Java,
+or Python where code is sparse and rules for formatting are fairly
+well established. Instead SQL is more like COBOL (from which it came)
+and code tends to be very dense and line ending decisions driven by
+syntax and line length considerations to make readable code.
+Experienced SQL developers may prefer to rely upon existing Emacs
+facilities for formatting code but the 'sql-indent' package provides
+facilities to aid more casual SQL developers layout queries and
+complex expressions.
+
+*** 'sql-use-indent-support' (default t) enables SQL indention support.
+The `sql-indent' package from ELPA must be installed to get the
+indentation support in 'sql-mode' and 'sql-interactive-mode'.
+
+*** 'sql-mode-hook' and 'sql-interactive-mode-hook' changed.
+Both hook variables have had 'sql-indent-enable' added to their
+default values. If youhave existing customizations to these variables,
+you should make sure that the new default entry is included.
+
 ** Term
 
 ---
index ba180c2b26c8f0e1bd088fe983717330608f93a6..1cdae35ac302bdd3dc568f0d2d27e6db55883326 100644 (file)
 ;; Drew Adams <drew.adams@oracle.com> -- Emacs 20 support
 ;; Harald Maier <maierh@myself.com> -- sql-send-string
 ;; Stefan Monnier <monnier@iro.umontreal.ca> -- font-lock corrections;
-;;      code polish
+;;      code polish; on-going guidance and mentorship
 ;; Paul Sleigh <bat@flurf.net> -- MySQL keyword enhancement
 ;; Andrew Schein <andrew@andrewschein.com> -- sql-port bug
 ;; Ian Bjorhovde <idbjorh@dataproxy.com> -- db2 escape newlines
 ;; Mark Wilkinson <wilkinsonmr@gmail.com> -- file-local variables ignored
 ;; Simen Heggestøyl <simenheg@gmail.com> -- Postgres database completion
 ;; Robert Cochran <robert-emacs@cochranmail.com> -- MariaDB support
+;; Alex Harsanyi <alexharsanyi@gmail.com> -- sql-indent package and support
 ;;
 
 \f
@@ -723,6 +724,30 @@ This allows highlighting buffers properly when you open them."
   :group 'SQL
   :safe 'symbolp)
 
+;; SQL indent support
+
+(defcustom sql-use-indent-support t
+  "If non-nil then use the SQL indent support features of sql-indent.
+The `sql-indent' package in ELPA provides indentation support for
+SQL statements with easy customizations to support varied layout
+requirements.
+
+The package must be available to be loaded and activated."
+  :group 'SQL
+  :link '(url-link "https://elpa.gnu.org/packages/sql-indent.html")
+  :type 'booleanp
+  :version "27.1")
+
+(defun sql-is-indent-available ()
+  "Check if sql-indent module is available."
+  (when (locate-library "sql-indent")
+    (fboundp 'sqlind-minor-mode)))
+
+(defun sql-indent-enable ()
+  "Enable `sqlind-minor-mode' if available and requested."
+  (when (sql-is-indent-available)
+    (sqlind-minor-mode (if sql-use-indent-support +1 -1))))
+
 ;; misc customization of sql.el behavior
 
 (defcustom sql-electric-stuff nil
@@ -850,15 +875,17 @@ commands when the input history is read, as if you had set
 
 ;; The usual hooks
 
-(defcustom sql-interactive-mode-hook '()
+(defcustom sql-interactive-mode-hook '(sql-indent-enable)
   "Hook for customizing `sql-interactive-mode'."
   :type 'hook
-  :group 'SQL)
+  :group 'SQL
+  :version "27.1")
 
-(defcustom sql-mode-hook '()
+(defcustom sql-mode-hook '(sql-indent-enable)
   "Hook for customizing `sql-mode'."
   :type 'hook
-  :group 'SQL)
+  :group 'SQL
+  :version "27.1")
 
 (defcustom sql-set-sqli-hook '()
   "Hook for reacting to changes of `sql-buffer'.