;;; prog-conf.el ---
(setq-default indent-tabs-mode nil)
;;====
(message "Configuration Perl")
(setq-default
cperl-electric-parens t
cperl-electric-keywords t
cperl-indent-level 4
cperl-hairy t
cperl-auto-newline t
cperl-mode-map nil
cperl-extra-newline-before-brace nil
)
;;====
(message "Configuration du mode C")
(setq-default
c-basic-offset 4
c-default-style "user"
; c-default-style "ellemtel"
)
(defconst st::c-style
'((c-tab-always-indent . t)
(c-hanging-braces-alist . ((substatement-open after)
(brace-list-open)))
(c-hanging-colons-alist . ((member-init-intro before)
(inher-intro)
(case-label after)
(label after)
(access-label after)))
(c-cleanup-list . (scope-operator
empty-defun-braces defun-close-semi))
(c-echo-syntactic-information-p . t) )
"Seb's C Programming Style")
(defun st::c-mode-common-hook ()
;; add my personal style and set it for the current buffer
(c-add-style "PERSONEL" st::c-style t)
;; offset customizations not in my-c-style
(c-set-offset 'case-label 0)
(setq c-tab-always-indent t
tab-width 8)
; (c-set-offset 'brace-list-entry 0)
;; we like auto-newline and hungry-delete
(c-toggle-auto-hungry-state 1)
;; keybindings for all supported languages. We can put these in
;; c-mode-base-map because c-mode-map, c++-mode-map, objc-mode-map,
;; java-mode-map, and idl-mode-map inherit from it.
(define-key c-mode-base-map "\C-m" 'newline-and-indent)
)
(defconst st::c-protection-key
"\\<\\(signals\\|\\(\\(public\\|protected\\|private\\)\\([ \t]+slots\\)?\\)\\)\\>")
(defun st::c++-mode-hook ()
(font-lock-mode)
(c-set-offset 'member-init-intro '++)
(c-set-offset 'access-label '/)
(c-set-offset 'inline-open 0)
(setq c-hanging-comment-ender-p nil)
(setq c-access-key (concat st::c-protection-key "[ \t]*:"))
)
(add-hook 'c-mode-common-hook 'st::c-mode-common-hook)
;(add-hook 'c-mode-common-hook
; '(lambda () (c-toggle-auto-hungry-state 1)))
(defun my-activate-ctypes () (require 'ctypes))
(add-hook 'c-mode-hook 'my-activate-ctypes)
(add-hook 'c++-mode-hook 'my-activate-ctypes)
(add-hook 'c++-mode-hook 'st::c++-mode-hook)
;; Tell cc-mode not to check for old-style (K&R) function declarations.
;; This speeds up indenting a lot.
(setq c-recognize-knr-p nil)
;;====
(message "Configuration du mode SQL")
;; le mode SQL est un peu lourd. On ne le charge que sur demande.
(defun st::register-sql-mode ()
(setq sql-lisp-dir (expand-file-name "~/.elisp/sql-mode/"))
(setq load-path (append load-path (list sql-lisp-dir)))
(require 'sql-mode)
(sql-initialize)
(autoload 'sql-mode "sql-mode" "SQL Editing Mode" t)
(setq auto-mode-alist
(append '(("\\.sql$" . sql-mode)
("\\.tbl$" . sql-mode)
("\\.sp$" . sql-mode))
auto-mode-alist))
)
;;====
(message "Configuration du mode ADA")
(setq-default
ada-indent 4
ada-case-keyword 'upcase-word
ada-case-identifier 'downcase-word
)
;;=====
; Si le fichier du module existe (paquet pm3-extra sur une potato,
; par exemple), on introduit sa config.
(let ((st::modula3-mode-file
"/usr/share/emacs/site-lisp/pm3/modula3.el"))
(if (file-exists-p st::modula3-mode-file)
(progn
(setq-default m3::electric-end 'all)
(autoload 'modula-3-mode
st::modula3-mode-file nil t)
(setq auto-mode-alist
(cons '("\\.m3\\'" . modula-3-mode) auto-mode-alist)))))
;;; prog-conf.el ends here