Plpg SQL Mode

Motivation

Editing large chunks of plpgsql code can be a pain if you are hunting for your procedure and function definitions.

Add the following lines to your own file mysql.emf which should be in our personal microemacs/user directory:

set-variable .fhook-sql.collapse-open  "\\$\\$$"
set-variable .fhook-sql.collapse-close "^\\$\\$"
set-variable .fhook-sql.collapse-mclose "1"
set-variable .fhook-sql.collapse-mnext "-1"
buffer-bind-key "collapse-current" "f2"
buffer-bind-key "collapse-all" "f3"
set-variable .fhook-sql.item-list-s1 "^CREATE .+FUNCTION[\t ]+\\([A-Za-z0-9_]*\\)[\t ]*"
set-variable .fhook-sql.item-list-r1 "Func \ecB\\1\ecA"
set-variable .fhook-sql.item-list-s2 "^CREATE .+VIEW[\t ]+\\([A-Za-z0-9_]*\\)[\t ]*"
set-variable .fhook-sql.item-list-r2 "View \ecB\\1\ecA"
set-variable .fhook-sql.item-list-s3 "^CREATE +TYPE[\t ]+\\([A-Za-z0-9_]*\\)[\t ]*"
set-variable .fhook-sql.item-list-r3 "Type \ecB\\1\ecA"
hilight .hilight.sql 1 "replace"               .scheme.keyword
hilight .hilight.sql 1 "returns"               .scheme.keyword
hilight .hilight.sql 1 "return"               .scheme.keyword
hilight .hilight.sql 1 "setof"               .scheme.keyword
hilight .hilight.sql 1 "elsif"               .scheme.keyword
hilight .hilight.sql 1 "raise"               .scheme.keyword
hilight .hilight.sql 1 "notice"               .scheme.keyword
hilight .hilight.sql 1 "loop"               .scheme.keyword
define-macro sql-copy-function
    set-alpha-mark "p"
    search-backward "^CREATE"
    beginning-of-line
    set-mark
    search-forward "^$$"
    exchange-point-and-mark
    copy-region
    goto-alpha-mark "p"
!emacro