See here for unformatted version.
(defun c-key-settings ()
  (define-key c-mode-base-map "\C-m" 'newline-and-indent))

(add-hook 'c-mode-common-hook 'c-key-settings)

(defun perl-key-settings ()
  (interactive)
  (define-key cperl-mode-map "\C-m" 'newline-and-indent))
;  (define-key cperl-mode-map "DEL" 'delete-char))
;  (local-set-key [delete] 'delete-char))

(defun fortran-key-settings ()
  (interactive)
  (define-key fortran-mode-map "\C-m" 'newline-and-indent)
;  (local-set-key '(meta return) 'fortran-split-line))
  (define-key fortran-mode-map "\M-\C-m" 'fortran-split-line))

(defun f90-key-settings ()
  (interactive)
  (define-key f90-mode-map "\C-m" 'newline-and-indent)
  (define-key f90-mode-map "\M-\C-m" 'f90-break-line))

;; auto wraparound
;;(defun tex-mode-hook-fn ()
;;   (auto-fill-mode 1))
;;(add-hook 'tex-mode-hook 'tex-mode-hook-fn)
;;(setq tex-mode-hook 'tex-mode-hook-fn)
;;(add-hook 'latex-mode-hook 'tex-mode-hook-fn)

(defun emacs-lisp-key-settings ()
  (interactive)
  (define-key emacs-lisp-mode-map "\C-m" 'newline-and-indent))


(add-hook 'emacs-lisp-mode-hook 'emacs-lisp-key-settings)
(add-hook 'cperl-mode-hook  'perl-key-settings)
(add-hook 'fortran-mode-hook 'fortran-key-settings)
(add-hook 'f90-mode-hook 'f90-key-settings)

;;disable the ctrl c ctrl z combination that minimises all windows - very very annoying
;;(global-set-key "\C-x\C-z" nil)
(global-unset-key "\C-x\C-z")

(global-set-key "\C-x\C-b" 'electric-buffer-list)