sqlup-mode.el
sqlup-mode.el copied to clipboard
An emacs minor mode to upcase SQL keyword and functions
sqlup-mode
sqlup-mode
is a minor mode for emacs. Its sole purpose is to make
your life easier when writing SQL.
Purpose
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.
This mode has been extended to upcase keywords when using redis-mode
as well.
Pronunciation
I gave a talk (slides) at the
emacs NYC meetup, and it was decided that sqlup
is pronounced skloop
.
Installation
Manually
Content TK. Pull request welcome. Same as all other emacs packages, really.
MELPA
Marmalade
sqlup-mode is NOT YET on Marmalade.
Usage
Basic setup
Here follows an example setup to activate sqlup-mode
automatically when entering sql-mode or sql-interactive-mode:
;; Capitalize keywords in SQL mode
(add-hook 'sql-mode-hook 'sqlup-mode)
;; Capitalize keywords in an interactive session (e.g. psql)
(add-hook 'sql-interactive-mode-hook 'sqlup-mode)
;; Set a global keyword to use sqlup on a region
(global-set-key (kbd "C-c u") 'sqlup-capitalize-keywords-in-region)
Blacklisting words
Sqlup can be configured to ignore certain keywords by adding them to the list
sqlup-blacklist
. For example if you use name
as a column name it would be
annoying to have it upcased so you can prevent this by adding
(add-to-list 'sqlup-blacklist "name")
to your config (or do the equivalent through the M-x customize
interface).
Normal typing (e.g. SQL REPL)
Activate the minor mode with M-x sqlup-mode
and you can just start
typing. The minor mode will be triggered by the following keys:
-
SPC
-
(
-
,
-
;
-
RET
-
'
Work with a region
Select a region and just call M-x sqlup-capitalize-keywords-in-region
.
Magic.
Work with a whole buffer
Just call M-x sqlup-capitalize-keywords-in-buffer
.
Implementation choices
I made the choice of only triggering the word-scanning when a particular keypress happens specifically because I don't want to see the word "ORde" typed when I'm typing "ORDER", and I didn't know a simple way to do it. I believe that in practice, this is good enough.