mirror of
https://github.com/postgres/postgres.git
synced 2025-10-12 07:05:03 +03:00
Now that the documentation sources are in XML rather than SGML, some of the documentation about the editor, or more specifically Emacs, setup needs updating. The updated instructions recommend using nxml-mode, which works mostly out of the box, with some small tweaks in emacs.samples and .dir-locals.el. Also remove some obsolete stuff in .dir-locals.el. I did, however, leave the sgml-mode settings in there so that someone using Emacs without emacs.samples gets those settings when editing a *.sgml file.
89 lines
3.2 KiB
Plaintext
89 lines
3.2 KiB
Plaintext
;; -*- 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")
|
|
;; Don't override the style we just set with the style in
|
|
;; `dir-locals-file'. Emacs 23.4.1 needs this; it is obsolete,
|
|
;; albeit harmless, by Emacs 24.3.1.
|
|
(set (make-local-variable 'ignored-local-variables)
|
|
(append '(c-file-style) ignored-local-variables)))))
|
|
|
|
|
|
;;; 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 2)
|
|
(setq perl-indent-level 4)
|
|
(setq perl-label-offset -2)
|
|
(setq indent-tabs-mode t)
|
|
(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
|
|
|
|
;; *.sgml files are actually XML
|
|
(add-to-list 'auto-mode-alist '("/postgres\\(ql\\)?/.*\\.sgml\\'" . nxml-mode))
|
|
|
|
(add-hook 'nxml-mode-hook
|
|
(defun postgresql-xml-mode-hook ()
|
|
(when (string-match "/postgres\\(ql\\)?/" buffer-file-name)
|
|
(setq fill-column 78)
|
|
(setq indent-tabs-mode nil))))
|
|
|
|
;; The *.xsl files use 2-space indent, which is consistent with
|
|
;; docbook-xsl sources and also the nxml-mode default. But the *.sgml
|
|
;; files use 1-space indent, mostly for historical reasons at this
|
|
;; point.
|
|
(add-hook 'nxml-mode-hook
|
|
(defun postgresql-xml-src-mode-hook ()
|
|
(when (string-match "/postgres\\(ql\\)?/.*\\.sgml\\'" buffer-file-name)
|
|
(setq nxml-child-indent 1))))
|
|
|
|
|
|
;;; Makefiles
|
|
|
|
;; use GNU make mode instead of plain make mode
|
|
(add-to-list 'auto-mode-alist '("/postgres\\(ql\\)?/.*Makefile.*" . makefile-gmake-mode))
|
|
(add-to-list 'auto-mode-alist '("/postgres\\(ql\\)?/.*\\.mk\\'" . makefile-gmake-mode))
|