This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+lang/sql/packages.el

120 lines
4.2 KiB
EmacsLisp
Raw Normal View History

2015-04-13 22:33:27 +00:00
;;; packages.el --- sql Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2014 Sylvain Benner
;; Copyright (c) 2014-2015 Brian Hicks & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(defvar sql-packages '(sql sql-indent))
(defvar sql-excluded-packages '())
(defun sql/init-sql ()
(use-package sql
:defer t
2015-04-25 04:26:44 +00:00
:config
2015-04-13 22:33:27 +00:00
(progn
2015-04-25 04:26:44 +00:00
(setq spacemacs-sql-highlightable sql-product-alist
spacemacs-sql-startable (remove-if-not
(lambda (product) (sql-get-product-feature (car product) :sqli-program))
sql-product-alist)
;; should not set this to anything else than nil
;; the focus of SQLi is handled by spacemacs conventions
sql-pop-to-buffer-after-send-region nil)
(defun spacemacs//sql-source (products)
"return a source for helm selection"
`((name . "SQL Products")
(candidates . ,(mapcar (lambda (product)
(cons (sql-get-product-feature (car product) :name)
(car product)))
products))
(action . (lambda (candidate) (helm-marked-candidates)))))
(defun spacemacs/sql-highlight ()
"set SQL dialect-specific highlighting"
(interactive)
(let ((product (car (helm
:sources (list (spacemacs//sql-source spacemacs-sql-highlightable))))))
(sql-set-product product)))
(defun spacemacs/sql-start ()
"set SQL dialect-specific highlighting and start inferior SQLi process"
(interactive)
(let ((product (car (helm
:sources (list (spacemacs//sql-source spacemacs-sql-startable))))))
(sql-set-product product)
(sql-product-interactive product)))
2015-04-24 05:05:06 +00:00
(defun spacemacs/sql-send-string-and-focus ()
"Send a string to SQLi and switch to SQLi in `insert state'."
(interactive)
(let ((sql-pop-to-buffer-after-send-region t))
(call-interactively 'sql-send-string)
(evil-insert-state)))
(defun spacemacs/sql-send-buffer-and-focus ()
"Send the buffer to SQLi and switch to SQLi in `insert state'."
(interactive)
(let ((sql-pop-to-buffer-after-send-region t))
(sql-send-buffer)
(evil-insert-state)))
(defun spacemacs/sql-send-paragraph-and-focus ()
"Send the paragraph to SQLi and switch to SQLi in `insert state'."
(interactive)
(let ((sql-pop-to-buffer-after-send-region t))
(sql-send-paragraph)
(evil-insert-state)))
(defun spacemacs/sql-send-region-and-focus (start end)
"Send region to SQLi and switch to SQLi in `insert state'."
(interactive "r")
(let ((sql-pop-to-buffer-after-send-region t))
(sql-send-region start end)
(evil-insert-state)))
(spacemacs/set-leader-keys-for-major-mode 'sql-mode
2015-04-13 22:33:27 +00:00
;; sqli buffer
"bb" 'sql-show-sqli-buffer
"bs" 'sql-set-sqli-buffer
2015-04-13 22:33:27 +00:00
;; dialects
"hk" 'spacemacs/sql-highlight
2015-04-13 22:33:27 +00:00
;; interactivity
"sb" 'sql-send-buffer
"sB" 'spacemacs/sql-send-buffer-and-focus
"si" 'spacemacs/sql-start
2015-04-24 05:05:06 +00:00
;; paragraph gets "f" here because they can be assimilated to functions.
2015-04-25 04:26:44 +00:00
;; If you separate your commands in a SQL file, this key will send the
;; command under the point, which is what you probably want.
"sf" 'sql-send-paragraph
"sF" 'spacemacs/sql-send-paragraph-and-focus
"sq" 'sql-send-string
"sQ" 'spacemacs/sql-send-string-and-focus
"sr" 'sql-send-region
"sR" 'spacemacs/sql-send-region-and-focus
2015-04-13 22:33:27 +00:00
;; listing
"la" 'sql-list-all
"lt" 'sql-list-table)
2015-04-13 22:33:27 +00:00
(spacemacs/set-leader-keys-for-major-mode 'sql-interactive-mode
2015-04-13 22:33:27 +00:00
;; sqli buffer
"br" 'sql-rename-buffer
"bS" 'sql-save-connection)
2015-04-13 22:33:27 +00:00
(add-hook 'sql-interactive-mode-hook
(lambda () (toggle-truncate-lines t))))))
(defun sql/init-sql-indent ()
(use-package sql-indent
:defer t))