Updated files with changes:

- adjusted fill-column to 78, per Noah
- added c-file-style, per Andrew
- support both "postgresql" and "postgres" directory names
- use defun instead of lambda, per Dimitri
- put Perl configuration back into emacs.samples, for Tom

I also added configuration of c-auto-align-backslashes as well as label
and statement-case-open to c-offsets-alist.  With those changes, the
result of indent-region is now very very close to pgindent, with the
main exception of the end-of-line de-indenting that pgindent does, which
nobody likes anyway.

;; see also src/tools/editors/emacs.samples for more complete settings

((c-mode . ((c-basic-offset . 4)
            (c-file-style . "bsd")
            (fill-column . 78)
            (indent-tabs-mode . t)
            (tab-width . 4)))
 (dsssl-mode . ((indent-tabs-mode . nil)))
 (nxml-mode . ((indent-tabs-mode . nil)))
 (perl-mode . ((perl-indent-level . 4)
               (perl-continued-statement-offset . 4)
               (perl-continued-brace-offset . 4)
               (perl-brace-offset . 0)
               (perl-brace-imaginary-offset . 0)
               (perl-label-offset . -2)
               (tab-width . 4)))
 (sgml-mode . ((fill-column . 78)
               (indent-tabs-mode . nil))))
;; -*- mode: emacs-lisp -*-

;; This file contains code to set up Emacs to edit PostgreSQL source
;; code.  Copy these snippets into your .emacs file or equivalent, or
;; use load-file to load this file directly.
;;
;; Note also that there is a .dir-locals.el file at the top of the
;; PostgreSQL source tree, which contains many of the settings shown
;; here (but not all, mainly because not all settings are allowed as
;; local variables).  So for light editing, you might not need any
;; additional Emacs configuration.


;;; C files

;; Style that matches the formatting used by
;; src/tools/pgindent/pgindent.  Many extension projects also use this
;; style.
(c-add-style "postgresql"
             '("bsd"
               (c-auto-align-backslashes . nil)
               (c-basic-offset . 4)
               (c-offsets-alist . ((case-label . +)
                                   (label . -)
                                   (statement-case-open . +)))
               (fill-column . 78)
               (indent-tabs-mode . t)
               (tab-width . 4)))

(add-hook 'c-mode-hook
          (defun postgresql-c-mode-hook ()
            (when (string-match "/postgres\\(ql\\)?/" buffer-file-name)
              (c-set-style "postgresql"))))


;;; Perl files

;; Style that matches the formatting used by
;; src/tools/pgindent/perltidyrc.
(defun pgsql-perl-style ()
  "Perl style adjusted for PostgreSQL project"
  (interactive)
  (setq perl-brace-imaginary-offset 0)
  (setq perl-brace-offset 0)
  (setq perl-continued-brace-offset 4)
  (setq perl-continued-statement-offset 4)
  (setq perl-indent-level 4)
  (setq perl-label-offset -2)
  (setq tab-width 4))

(add-hook 'perl-mode-hook
          (defun postgresql-perl-mode-hook ()
             (when (string-match "/postgres\\(ql\\)?/" buffer-file-name)
               (pgsql-perl-style))))


;;; documentation files

(add-hook 'sgml-mode-hook
          (defun postgresql-sgml-mode-hook ()
             (when (string-match "/postgres\\(ql\\)?/" buffer-file-name)
               (setq fill-column 78)
               (setq indent-tabs-mode nil)
               (setq sgml-basic-offset 1))))


;;; Makefiles

;; use GNU make mode instead of plain make mode
(add-to-list 'auto-mode-alist '("/postgresql/.*Makefile.*" . 
makefile-gmake-mode))
(add-to-list 'auto-mode-alist '("/postgresql/.*\\.mk\\'" . makefile-gmake-mode))
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to