summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2013-08-14 00:08:44 +0000
committerPeter Eisentraut2013-08-14 00:08:44 +0000
commit5e3e8e4daaefba47ad7a8b82320531992470b5df (patch)
tree0bd05df9de6763a60aee7abf883268ee7b33f376
parent3d5282c6f0edbdcb78dd2a6e8068f829fcb2882f (diff)
Update Emacs configuration
Update emacs.samples with new configuration snippets that match pgindent et al. formatting more accurately and follow Emacs Lisp best practices better. Add .dir-locals.el with a subset of that configuration for casual editing and viewing. Reviewed-by: Dimitri Fontaine <[email protected]> Reviewed-by: Noah Misch <[email protected]>
-rw-r--r--.dir-locals.el18
-rw-r--r--src/tools/editors/emacs.samples158
2 files changed, 72 insertions, 104 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644
index 0000000000..bc1bc7b16e
--- /dev/null
+++ b/.dir-locals.el
@@ -0,0 +1,18 @@
+;; 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))))
diff --git a/src/tools/editors/emacs.samples b/src/tools/editors/emacs.samples
index c8d8d07a20..e469d5525e 100644
--- a/src/tools/editors/emacs.samples
+++ b/src/tools/editors/emacs.samples
@@ -1,121 +1,71 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;
-;;; 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.
-;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;; Mode for C files to match src/tools/pgindent/pgindent formatting
-
-;;; 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 fill-column 79) ; matches what pgindent does
- (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"
- (fill-column . 79)
- (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
+;; -*- 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
- (function
- (lambda nil
- (if (string-match "postgresql" buffer-file-name)
- (progn
- (c-set-style "bsd")
- (setq c-basic-offset 4)
- (setq tab-width 4)
- (c-set-offset 'case-label '+)
- (setq fill-column 79)
- (setq indent-tabs-mode t)
- )
- ))))
+ (defun postgresql-c-mode-hook ()
+ (when (string-match "/postgres\\(ql\\)?/" buffer-file-name)
+ (c-set-style "postgresql"))))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Mode for Perl files to match src/tools/pgindent/perltidyrc formatting
+;;; 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 tab-width 4)
- (setq perl-indent-level 4)
- (setq perl-continued-statement-offset 4)
- (setq perl-continued-brace-offset 4)
- (setq perl-brace-offset 0)
(setq perl-brace-imaginary-offset 0)
- (setq perl-label-offset -2))
+ (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
- (lambda ()
- (if (string-match "postgresql" buffer-file-name)
- (pgsql-perl-style))))
+ (defun postgresql-perl-mode-hook ()
+ (when (string-match "/postgres\\(ql\\)?/" buffer-file-name)
+ (pgsql-perl-style))))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; To work on the documentation, the following (or a variant, as above)
-;;; can be helpful.
+;;; documentation files
-(defun pgsql-sgml-mode ()
- "SGML mode adjusted for PostgreSQL project"
- (interactive)
- (sgml-mode)
+(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))))
- (setq indent-tabs-mode nil)
- (setq sgml-basic-offset 1)
-)
-(setq auto-mode-alist
- (cons '("\\(postgres\\|pgsql\\).*\\.sgml\\'" . pgsql-sgml-mode)
- auto-mode-alist))
+;;; 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))