diff --git a/doc/src/FAQ/FAQ_DEV.html b/doc/src/FAQ/FAQ_DEV.html
index 5a99a0badc4..d68bf48041f 100644
--- a/doc/src/FAQ/FAQ_DEV.html
+++ b/doc/src/FAQ/FAQ_DEV.html
@@ -370,7 +370,7 @@
less:
less -x4
-
The tools directory of the latest sources contains sample
+
The tools/editors directory of the latest sources contains sample
settings that can be used with the emacs, xemacs and vim
editors, that assist in keeping to PostgreSQL coding standards.
diff --git a/doc/src/sgml/sources.sgml b/doc/src/sgml/sources.sgml
index 8187f05546c..58d5d5635ce 100644
--- a/doc/src/sgml/sources.sgml
+++ b/doc/src/sgml/sources.sgml
@@ -1,4 +1,4 @@
-
+
PostgreSQL Coding Conventions
@@ -21,44 +21,11 @@
- For Emacs, add the following (or
- something similar) to your ~/.emacs
- initialization file:
-
-
-;; check for files with a path containing "postgres" or "pgsql"
-(setq auto-mode-alist
- (cons '("\\(postgres\\|pgsql\\).*\\.[ch]\\'" . pgsql-c-mode)
- auto-mode-alist))
-(setq auto-mode-alist
- (cons '("\\(postgres\\|pgsql\\).*\\.cc\\'" . pgsql-c-mode)
- auto-mode-alist))
-
-(defun pgsql-c-mode ()
- ;; sets up formatting for PostgreSQL C code
- (interactive)
- (c-mode)
- (setq-default tab-width 4)
- (c-set-style "bsd") ; set c-basic-offset to 4, plus other stuff
- (c-set-offset 'case-label '+) ; tweak case indent to match PG custom
- (setq indent-tabs-mode t)) ; make sure we keep tabs when indenting
-
-
-
-
- For vi, your
- ~/.vimrc or equivalent file should contain
- the following:
-
-
-set tabstop=4
-
-
- or equivalently from within vi, try
-
-
-:set ts=4
-
+ The src/tools directory contains sample settings
+ files that can be used with the emacs,
+ xemacs or vim
+ editors to help ensure that they format code according to these
+ conventions.
diff --git a/src/tools/editors/emacs.samples b/src/tools/editors/emacs.samples
new file mode 100644
index 00000000000..a4d00bedc4f
--- /dev/null
+++ b/src/tools/editors/emacs.samples
@@ -0,0 +1,78 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;
+;;; This file contains several examples of how to set up emacs and/or xemacs
+;;; to edit PostgreSQL code.
+;;;
+;;; Whichever set you choose would go in your .emacs file or equivalent.
+;;;
+;;; You only need one of these.
+;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; This set is known to work with old versions of emacs
+
+(setq auto-mode-alist
+ (cons '("\\(postgres\\|pgsql\\).*\\.[ch]\\'" . pgsql-c-mode)
+ auto-mode-alist))
+(setq auto-mode-alist
+ (cons '("\\(postgres\\|pgsql\\).*\\.cc\\'" . pgsql-c-mode)
+ auto-mode-alist))
+
+(defun pgsql-c-mode ()
+ ;; sets up formatting for PostgreSQL C code
+ (interactive)
+ (c-mode)
+ (setq-default tab-width 4)
+ (c-set-style "bsd") ; set c-basic-offset to 4, plus other stuff
+ (c-set-offset 'case-label '+) ; tweak case indent to match PG custom
+ (setq indent-tabs-mode t)) ; make sure we keep tabs when indenting
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Similar approach, known to work with xemacs
+;;; Use of a named style makes it easy to use the style elsewhere
+
+(c-add-style "pgsql"
+ '("bsd"
+ (indent-tabs-mode . t)
+ (c-basic-offset . 4)
+ (tab-width . 4)
+ (c-offsets-alist .
+ ((case-label . +)))
+ )
+ nil ) ; t = set this mode, nil = don't
+
+(defun pgsql-c-mode ()
+ (c-mode)
+ (c-set-style "pgsql")
+)
+
+(setq auto-mode-alist
+ (cons '("\\(postgres\\|pgsql\\).*\\.[chyl]\\'" . pgsql-c-mode)
+ auto-mode-alist))
+(setq auto-mode-alist
+ (cons '("\\(postgres\\|pgsql\\).*\\.cc\\'" . pgsql-c-mode)
+ auto-mode-alist))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Slightly different approach - use a hook instead of a mode
+
+(add-hook 'c-mode-hook
+ (function
+ (lambda nil
+ (if (string-match "pgsql" buffer-file-name)
+ (progn
+ (c-set-style "bsd")
+ (setq c-basic-offset 4)
+ (setq tab-width 4)
+ (c-set-offset 'case-label '+)
+ (setq indent-tabs-mode t)
+ )
+ ))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/src/tools/editors/vim.samples b/src/tools/editors/vim.samples
new file mode 100644
index 00000000000..210d9a360aa
--- /dev/null
+++ b/src/tools/editors/vim.samples
@@ -0,0 +1,18 @@
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"
+" These settings are appropriate for editing PostgreSQL code with vim
+"
+" You would copy this into your .vimrc or equivalent
+"
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+:if match(getcwd(), "/pgsql") >=0 || match(getcwd(), "/postgresql") >= 0
+
+: set cinoptions=(0
+: set tabstop=4
+: set shiftwidth=4
+
+:endif
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""