From e122cca29db01c19cd41372f3a9a0395aede892b Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Thu, 28 Dec 2017 22:30:53 +0200 Subject: [PATCH] Add previously missing SQL-indent --- config/functions.el | 6 +++--- config/packages.el | 4 ++++ init.el | 2 +- languages/sql.el | 20 ++++++++++++++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/config/functions.el b/config/functions.el index 45592f2..4d5fad5 100644 --- a/config/functions.el +++ b/config/functions.el @@ -40,16 +40,16 @@ nil t)) -(defun call-in-windowed-mode (callee) +(defun byte-compile-in-windowed-mode () "Call function passed as CALLEE only if run in window mode." (interactive) (if (display-graphic-p) (progn - (funcall callee)))) + (byte-compile-init-dir)))) ;; (call-in-windowed-mode 'byte-compile-init-dir) -(add-hook 'kill-emacs-hook 'byte-compile-init-dir) +(add-hook 'kill-emacs-hook 'byte-compile-in-windowed-mode) (add-hook 'emacs-lisp-mode-hook 'remove-elc-on-save) ;; Always start in fullscreen diff --git a/config/packages.el b/config/packages.el index f909aa0..572afbd 100644 --- a/config/packages.el +++ b/config/packages.el @@ -226,6 +226,10 @@ (unless (package-installed-p 'pyenv-mode) (package-install 'pyenv-mode)) +;; SQL +(unless (package-installed-p 'sql-indent) + (package-install 'sql-indent)) + ;; Javascript (unless (package-installed-p 'company-tern) (package-install 'company-tern)) diff --git a/init.el b/init.el index a735940..45399a1 100644 --- a/init.el +++ b/init.el @@ -27,7 +27,7 @@ ;; If there is more than one, they won't work right. '(package-selected-packages (quote - (json-mode terraform-mode flycheck-rust company-ghc company-ghci scion hlinum etags-select nvm tide yaml-mode window-purpose web-mode ujelly-theme toml-mode smart-mode-line scala-mode rvm ruby-end rspec-mode robe rainbow-mode rainbow-delimiters racer pyenv-mode noctilux-theme monokai-theme markdown-mode less-css-mode json-reformat jade-mode indent-guide helm-themes helm-projectile helm-ag haskell-mode haml-mode groovy-mode flymake-ruby flymake-cursor flycheck flatui-theme exec-path-from-shell evil-nerd-commenter evil-magit evil-leader elpy dumb-jump dockerfile-mode diff-hl dash-at-point company-tern company-racer company-jedi column-enforce-mode color-theme-approximate base16-theme atom-one-dark-theme alchemist aggressive-indent ag))) + (sql-indent json-mode terraform-mode flycheck-rust company-ghc company-ghci scion hlinum etags-select nvm tide yaml-mode window-purpose web-mode ujelly-theme toml-mode smart-mode-line scala-mode rvm ruby-end rspec-mode robe rainbow-mode rainbow-delimiters racer pyenv-mode noctilux-theme monokai-theme markdown-mode less-css-mode json-reformat jade-mode indent-guide helm-themes helm-projectile helm-ag haskell-mode haml-mode groovy-mode flymake-ruby flymake-cursor flycheck flatui-theme exec-path-from-shell evil-nerd-commenter evil-magit evil-leader elpy dumb-jump dockerfile-mode diff-hl dash-at-point company-tern company-racer company-jedi column-enforce-mode color-theme-approximate base16-theme atom-one-dark-theme alchemist aggressive-indent ag))) '(safe-local-variable-values (quote ((encoding . utf-8))))) (custom-set-faces ;; custom-set-faces was added by Custom. diff --git a/languages/sql.el b/languages/sql.el index 0f614dd..b5837ca 100644 --- a/languages/sql.el +++ b/languages/sql.el @@ -22,6 +22,26 @@ (add-hook 'sql-mode-hook 'editor-config-sql) (add-hook 'sql-mode-hook 'completion-config-sql) +(require 'sql-indent) + +;;========== Functions ===================== +(defun sql-indent-string () + "Indents the string under the cursor as SQL." + (interactive) + (save-excursion + (er/mark-inside-quotes) + (let* ((text (buffer-substring-no-properties (region-beginning) (region-end))) + (pos (region-beginning)) + (column (progn (goto-char pos) (current-column))) + (formatted-text (with-temp-buffer + (insert text) + (delete-trailing-whitespace) + (sql-indent-buffer) + (replace-string "\n" (concat "\n" (make-string column (string-to-char " "))) nil (point-min) (point-max)) + (buffer-string)))) + (delete-region (region-beginning) (region-end)) + (goto-char pos) + (insert formatted-text)))) ;;; sql.el ends here.