5.4 KiB
SQL layer
Description
This layer adds support for a wide range of SQL dialects to Spacemacs.
Features:
-
Syntax highlighting for the following SQL dialects
- ANSI
- DB2
- Informix
- Ingres
- Interbase
- Linter
- Microsoft
- MySQL
- Oracle
- Postgres
- Solid
- SQLite
- Sybase
- Vertica
- Syntax-checking via sqlint for ANSI SQL.
- Format code with
sqlfmt
- Snippet insertion for the more general SQL constructs.
- REPL support via
SQLi
buffer. - Automatic capitalization of keywords.
Install
To use this configuration layer, add it to your ~/.spacemacs
. You will need to
add sql
to the existing dotspacemacs-configuration-layers
list in this
file.
For syntax-checking you also need to install ruby as well as sqlint
.
gem install sqlint
SQL Keywords Capitalization
SQL, by convention, uses upper-case keywords, although lower-case works just as well. As humans, the separation between upper-case and lower-case helps scan and parse the code much more quickly.
To install sqlup-mode which enables auto capitalization in sql mode
set the
variable sql-capitalize-keywords
to t
.
(setq-default dotspacemacs-configuration-layers '(
(sql :variables sql-capitalize-keywords t)))
SQL Interactive Mode
If you want capitalization only in sql-mode
and not in sql-interactive-mode
you can set the variable sql-capitalize-keywords-disable-interactive
to t
.
Blacklisting keywords
sqlup-mode can be configured to ignore certain keywords. For example if you use
name
as column name it would be annoying to have it upcased. You can prevent
this behaviour by setting the variable sql-capitalize-keywords-blacklist
to
a list with keywords to ignore, e.g.
(setq-default dotspacemacs-configuration-layers '(
(sql :variables
sql-capitalize-keywords t
sql-capitalize-keywords-blacklist '("name" "varchar"))))
This layer is blacklisting name
by default as it is a very common name for
column and NAME is non-reserved SQL keyword.
Auto-Indent
This mode use sql-indent to indent the code. You can check the package’s README
to adjust the rules. If that’s not what you want, you can also disable
auto-indent by setting the variable sql-auto-indent
to nil
.
(setq-default dotspacemacs-configuration-layers '(
(sql :variables sql-auto-indent nil)))
Key bindings
Highlighting
Key binding | Description |
---|---|
SPC m h k |
select a SQL dialect to highlight |
Inferior Process Interactions (SQLi)
Key binding | Description |
---|---|
SPC m b b |
show the SQLi buffer name |
SPC m b s |
set the SQLi buffer |
SPC m l a |
List all objects |
SPC m l t |
list all objects in a table |
Send SQL queries to SQLi:
Key binding | Description |
---|---|
SPC m s b |
Send the whole buffer to the SQLi buffer |
SPC m s B |
Send the whole buffer to the SQLi buffer and switch to it in insert state |
SPC m s i |
Start the SQLi process |
SPC m s f |
Send the paragraph around point to the SQLi buffer |
SPC m s F |
Send the paragraph around point to the SQLi buffer and switch to it in insert state |
SPC m s q |
Prompt for a string to send to the SQLi buffer |
SPC m s Q |
Prompt for a string to send to the SQLi buffer and switch to it in insert state |
SPC m s r |
Send the selected region to the SQLi buffer |
SPC m s R |
Send the selected region to the SQLi buffer and switch to it in insert state |
SQLi buffer
Key binding | Description |
---|---|
SPC m b r |
rename buffer (follow up in the SQL buffer with SPC m b s ) |
SPC m b S |
save the current connection |
Code Formatting
SPC m = c |
capitalize SQL keywords in region (if capitalize is enabled) |