;; Poor man's paredit-mode for Delphi. (add-hook 'pascal-mode-hook (lambda () (setq skeleton-pair t) (mapcar (lambda (c) (local-set-key (eval `(kbd ,c)) 'skeleton-pair-insert-maybe)) '("[" "(" "{" "'")))) (add-hook 'pascal-mode-hook 'yas/minor-mode-on) (setq auto-mode-alist (append '(("\\.dpr\\'" . pascal-mode)) auto-mode-alist)) (yas/define-snippets 'pascal-mode '( ("tryf" "try $0 finally $1 end;" "try...finally") ("begin" "begin $0 end;" "begin...end") ("case" "case ${1:expr} of $0 end;" "case") ("for" "for ${1:i} := ${2:0} to ${3:count} - 1 do $0" "for (no begin/end)") ("for.block" "for ${1:i} := ${2:0} to ${3:count} - 1 do begin $0 end;" "for loop") ("for.in" "for ${1:ident} in ${2:collection} do begin $0 end;" "for in loop") ("function" "function ${1:name}(${2:parms}) : ${3:retval}; begin $0 end; { $1 }" "function definition") ("procedure" "procedure ${1:name}(${2:parms}); begin $0 end; { $1 }" "procedure definition") ("if" "if ${1:expr} then $0" "if (no begin/end)") ("if.block" "if ${1:expr} then begin $0 end;" "if statement") ("if.else" "if ${1:expr} then ${2:thencode} else $0" "if then else (no begin/end)") ("if.else-block" "if ${1:expr} then begin ${2:thencode} end else begin $0 end;" "if then else") ("try.free" "${1:variable} := ${2:class}.Create$3; try $0 finally FreeAndNil($1); end;" "try finally (with Create/Free)") ("try.finally" "try $0 finally end;" "try finally") ("try.except" "try $0 except on ${1:var}: ${2:exception} do end;" "try except") ("while" "while ${1:expr} do $0" "while (no begin/end)") ("while.block" "while ${1:expr} do begin $0 end;" "while statement") ("errordlg" "MessageDlg('${1:message}', mtError, [mbOk], 0);" "error dialog"))) (provide 'pmg-pascal)