;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; File name: ` ~/.gnu-emacs ' ;;; --------------------- ;;; ;;; Note: This file is for GNU-Emacs only ... ;;; GNU-Emacs is incompatible to X-Emacs. Therefore your ;;; personal ~/.emacs should load this file if your runnning ;;; the good old GNU-emacs. ;;; ;;; If you need your own personal ~/.gnu-emacs ;;; please make a copy of this file ;;; an placein your changes and/or extension. ;;; ;;; For emacs commands have a look onto the ;;; `emacs-revcard' in the directory /usr/doc/packages/emacs/ ;;; ;;; Copyright 1993-2001 Werner Fink ;;; Copyright (c) 1996-2001 SuSE Gmbh Nuernberg, Germany. ;;; All rights reserved. ;;; ;;; Author: Werner Fink, 1993-2001 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; No splash screen at all ;; ----------------------- (if (and (file-exists-p "~/.inhibit-splash-screen") (boundp 'inhibit-splash-screen)) (setq-default inhibit-splash-screen t)) ;; ;; Debuging only ;; ------------- ; (open-dribble-file "~/.dribble") ; (open-termscript "~/.termscript") ;; ;; Emacs makes backup by moving original files, to ;; avoid trouble with hardlinked files we may use: ;; ----------------------------------------------- ; (defconst backup-by-copying-when-linked t) ;; ;; Rmail: We will place all Mail's an Mail-folders into ~/Mail ;; ----------------------------------------------------------- (if (file-accessible-directory-p "~/Mail/") (setq rmail-secondary-file-directory "~/Mail/")) ;; ;; Prefix for mail-mode ;; --------------------- (setq mail-yank-prefix "> ") ; (setq mail-archive-file-name "~/Mail/.CarbonCopy") (setq mail-self-blind nil) (setq mail-default-headers nil) (setq mail-signature nil) ;; ;; Settings for message-mode ;; ------------------------- (setq message-from-style "angles") (if (null mail-host-address) (let ((tmph (getenv "HOSTNAME")) (tmpf (getenv "FROM_HEADER"))) (if (or (null tmph) (not (string-match "\\." tmph))) (setq tmph (system-name))) (if (not (string-match "\\." tmph)) (setq mail-host-address "our.domain.is.not.set") (string-match "\\." tmph) (setq mail-host-address (substring tmph (match-end 0)))) (if (stringp tmpf) (setq mail-host-address tmpf))) (setq tmpf nil tmph nil)) ;; ;; RMAILGEN: Folder im Rmail-Mode :-) ;; ---------------------------------- ;; ;; 1. I want to define a mail directory that isn't `~/' (if (file-accessible-directory-p "~/Mail/") (setq rmailgen-default-directory "~/Mail/")) ; must end in slash ;;; ;; 2. I want 78 column (add-hook 'mail-mode-hook (function (lambda () (setq fill-column 78)))) (if (file-exists-p "~/.abbrev_defs") (progn (read-abbrev-file "~/.abbrev_defs") (add-hook 'mail-setup-hook 'mail-abbrevs-setup))) ;;; ;; 3. By default, if mail-archive-file-name is non-nil then ;; archive file names will be generated automatically based on ;; the message to which a reply is being constructed. If I ;; wanted to turn this off I would put in a statement like (setq rmailgen-archive-file-name nil) ;;; ;; 4. By default, rmailgen.el downcases generated filenames ;; If I wanted uppercase I would put in a statement like here. (setq rmailgen-downcase "dummy") ;;; ;; 5. By default, rmailgen.el does not append `.gz' to generated ;; filenames. If I wanted such an extension I would put in a statement ;; like ;;(setq rmailgen-gzip-file-name t) ;;; ;; 6. By default, rmailgen.el will use generated FCC filenames even ;; if the file does not exist. If I wanted to FCC only if the file ;; already exists I would put in a statement like ;; (setq rmailgen-archive-only-if-exists t) ;;; ;; 7. Add my own personal output list for specific friends ;; and special subjects. ;;; ;; First define rmail-output-file-alist, just in case this ;; is not already defined. That is, may be ;; ../lisp/rmailout.el has not been loaded yet. (if (not (boundp 'rmail-output-file-alist)) (defvar rmail-output-file-alist nil)) ;;; (setq rmail-output-file-alist (append (list ; ;; For my friends (some have strange account names). ; '("^From:[ \t]*.*jones.*" . "jmjones") ; '("^From:[ \t]*.*Joe[ \t]*Smith.*" . "joe") ; ; ;; Special subject lines. ; '("^Subject:[ \t]*.*crypt.*" . "crypt++") ; '("^Subject:[ \t]*.*rmailgen.*" . "genrmail") ; '("^Subject:[ \t]*.*dired-x.*" . "dired-x") ; '("^Subject:[ \t]*.*GNU Emacs 19 RMAIL Poll.*" . "rmail") ; ; ;; Add more entries here... ) ;;; ;; In case rmail-output-file-alist has been defined ;; already elsewhere. rmail-output-file-alist)) ;;; ;; 8. Load package [REQUIRED]. (if (file-exists-p "/usr/share/emacs/site-lisp/rmailgen.el") (require 'rmailgen)) ;; ;; Base text mode ;; ---------------------- (setq default-major-mode 'text-mode) (line-number-mode 1) (global-set-key "\e\?" 'goto-line) (column-number-mode 1) ;; ;; User can cutomize that: Just show e.g. DOS files with CR/NL ;; ---------------------- ; (setq-default inhibit-eol-conversion t) (setq-default require-final-newline "ask") ;; ;; Specials for X Window System ;; ------------------------- (if (not window-system) ;; ispell ;; ---------------------- ;; (A few changes on ispell) (setq ispell-highlight-face 'underline);) ;; ;; Geomtry and layout ;; ; (setq initial-frame-alist ; '((vertical-scroll-bars . right) (height . 34) (width . 80))) ; (setq default-frame-alist ; '((vertical-scroll-bars . right) (height . 34) (width . 80))) ;; ;; Some fonts ;; ----------------------- (if (> emacs-major-version 20) (require 'xfonts)) ;; ;; New in Emacs 21: tool bar menu, you may switch it of ;; ---------------------------------------------------- ; (if (fboundp 'tool-bar-mode) (tool-bar-mode 0)) ;; ;; mouse as arrow ;; -------------- (setq x-pointer-shape x-pointer-left-ptr) (if (x-display-color-p) (set-mouse-color "RoyalBlue") (set-mouse-color (cdr (assq 'mouse-color (frame-parameters))))) ;; ;; Automatically replacing of fore- and background. (if (not (x-display-color-p)) (progn (set-face-background 'region (cdr (assq 'foreground-color (frame-parameters )))) (set-face-foreground 'region (cdr (assq 'background-color (frame-parameters )))) ;; ispell ;; ---------------------- ;; (A few changes on ispell) (setq ispell-highlight-face 'underline))) ;; ;; Highlighting of special emacs modes ;; ----------------------------------- ;; We use font lock mode ;; Darken greyed strings in font lock mode (custom-declare-face 'font-lock-string-face '((((class grayscale) (background light)) (:foreground "gray37" :italic t)) (((class grayscale) (background dark)) (:foreground "LightGray" :italic t)) (((class color) (background light)) (:foreground "gray37")) (((class color) (background dark)) (:foreground "LightGray")) (t (:italic t))) "Font Lock mode face used to highlight strings." :group 'font-lock-highlighting-faces) ;; Enable font lock support (require 'font-lock) (cond ((and (boundp 'jit-lock-mode) (symbol-value 'jit-lock-mode)) (setq font-lock-support-mode '((latex-mode . fast-lock-mode) (t . jit-lock-mode)))) ((and (boundp 'lazy-lock-mode) (symbol-value 'lazy-lock-mode)) (setq font-lock-support-mode '((latex-mode . fast-lock-mode) (t . lazy-lock-mode))))) (add-hook 'after-init-hook #'(lambda () (global-font-lock-mode 1))) ;; ;; Some dialog ;; ------------------ (setq use-dialog-box t) ;; ;; less dialog ;; ----------- ;(menu-prompting nil) ;; ;; Set X synchrone ;; --------------- ;; Speed up (setq mouse-scroll-delay 0) (setq x-selection-timeout 0) ;; ;; We use a wrapper script for netscape ;; (if (file-executable-p "/usr/X11R6/bin/Netscape") (setq browse-url-netscape-program "/usr/X11R6/bin/Netscape")) ) ;; ;; emacsclient: automatical popup under X11 ;; ------------------------------------------ ;(defun server-make-window-visible () ; "Try to make this window even more visible." ;(if window-system ; (progn ; (let ((foo (selected-frame))) ; (sit-for 0) ; (make-frame-visible foo)) ; (accept-process-output)))) ;(add-hook 'server-switch-hook #'(lambda () (server-make-window-visible))) ;(add-hook 'server-visit-hook #'(lambda () (server-make-window-visible))) ;; Start it for popup ;(server-start) ;; ;; Emacs experts like this ;; ----------------------- (put 'eval-expression 'disabled nil) ;; ;; Working on parts of text ;; ------------------------ ;; NB: `C-x n n' is narrow-to-region ;; `C-x n p' is narrow-to-page ;; `C-x n w' is widen ;(put 'narrow-to-region 'disabled nil) ;(put 'narrow-to-page 'disabled nil) ;; ;; GNUS ;; ---- ;; Sorting (if (or (and (= emacs-major-version 19) (> emacs-minor-version 29)) (> emacs-major-version 19)) (add-hook 'gnus-select-group-hook #'(lambda () (setq-default gnus-auto-select-first nil) (setq-default gnus-auto-center-summary nil) (setq gnus-thread-sort-functions '(gnus-thread-sort-by-number gnus-thread-sort-by-subject gnus-thread-sort-by-date gnus-thread-sort-by-score)))) (add-hook 'gnus-select-group-hook #'(lambda () (setq-default gnus-auto-select-first nil) (setq-default gnus-auto-center-summary nil) ;; First of all, sort by date. (gnus-keysort-headers (function string-lessp) (function (lambda (a) (gnus-sortable-date (gnus-header-date a))))) ;; Then sort by subject string ignoring `Re:'. ;; If case-fold-search is non-nil, case of letters is ignored. (gnus-keysort-headers (function string-lessp) (function (lambda (a) (if case-fold-search (downcase (gnus-simplify-subject (gnus-header-subject a) t)) (gnus-simplify-subject (gnus-header-subject a) t))))) )) ) ;; highlighting, menus, and subscribing in GNUS (add-hook 'gnus-startup-hook #'(lambda () (setq gnus-subscribe-newsgroup-method #'(lambda (newsgroup) (gnus-subscribe-newsgroup newsgroup) (gnus-kill-newsgroup newsgroup))) (setq gnus-use-generic-from t) ;; highlighting and menu in GNUS (if (or (and (= emacs-major-version 19) (> emacs-minor-version 29)) (> emacs-major-version 19)) (progn (setq gnus-visual '(highlight menu)) (setq gnus-group-highlight '(;; News. ((and (> unread 100) (not mailp)) . gnus-summary-high-ticked-face) ((and (> unread 0) (not mailp)) . gnus-summary-high-read-face) ((and (= unread 0) (not mailp)) . gnus-summary-high-ancient-face) ((not mailp) . gnus-summary-normal-ancient-face) ;; Mail. ((and (= unread 0) (eq level 1)) . gnus-group-mail-1-empty-face) ((eq level 1) . gnus-group-mail-1-face) ((and (= unread 0) (eq level 2)) . gnus-group-mail-2-empty-face) ((eq level 2) . gnus-group-mail-2-face) ((and (= unread 0) (eq level 3)) . gnus-group-mail-3-empty-face) ((eq level 3) . gnus-group-mail-3-face) ((= unread 0) . gnus-group-mail-low-empty-face) (t . gnus-group-mail-low-face))) ))) ) ;; ;; Common to all C modes ;; --------------------- ;(autoload 'hideshowvis-enable "hideshowvis" "Highlight foldable regions") ;(add-hook 'c-mode-common-hook ; #'(lambda () (c-set-style "linux") ; (c-set-offset 'case-label 4) ; (setq c-basic-offset 4))) ;; ;; Auto fill mode ;; -------------- (add-hook 'text-mode-hook 'turn-on-auto-fill) ;; ;; Fill-column ;; ----------- ;; Fill-column ist hier auf 78 Charakter gesetzt, nach Wunsch "andern! (setq-default fill-column 78) (add-hook 'TeX-mode-hook #'(lambda () (setq fill-column 78))) ;; ;; AUC-TeX ;; ---------------------------- (if (boundp 'AUCTeX-version) (progn (let* ((version (split-string AUCTeX-version "\\.")) (major (string-to-number (car version))) (minor (string-to-number (car (cdr version))))) (if (or (> major 11) (and (eq major 11) (>= minor 86))) (custom-set-default 'TeX-master nil) (setq-default TeX-master nil))) ; ; Users private libaries ; (if (boundp 'AUCTeX-version) ; (progn ; (setq TeX-macro-private '("~/lib/tex-lib/")) ; (setq TeX-style-private "~/lib/site-lisp/auctex/style/") ; AUC-TeX-Macros ; (setq TeX-auto-private "~/lib/site-lisp/auctex/auto/"))) ; Autom. Auc-TeX-Macros (if (and window-system (featurep 'font-lock)) (progn (add-hook 'latex-mode-hook 'turn-on-font-lock) (if (boundp 'AUCTeX-version) (progn (add-hook 'LaTeX-mode-hook 'turn-on-font-lock) (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) (add-hook 'after-init-hook #'(lambda () (load "auctex/font-latex" nil t))))))) )) ;; ;; Brace macros ;; ------------ (defun TeX-Inserting (sta stb stc) (if (= (preceding-char) sta ) (insert stb) (progn (insert stc) (backward-char 1)))) (defun TeX-schweif () (interactive "*") (TeX-Inserting ?\\ "{" "{}")) (defun TeX-rundekl () (interactive "*") (TeX-Inserting ?\\ "(" "()")) (defun TeX-eckigek () (interactive "*") (TeX-Inserting ?\\ "[" "[]")) (defun TeX-exponen () (interactive "*") (TeX-Inserting ?\\ "^" "^{}")) (defun TeX-subscri () (interactive "*") (TeX-Inserting ?\\ "_" "_{}")) (defun TeX-dollarm () (interactive "*") (TeX-Inserting ?\\ "$" "$$")) (defun TeX-REVbbox () (interactive "*") (TeX-Inserting ?\\ "bbox{" "\\bbox{}")) (add-hook 'LaTeX-mode-hook #'(lambda () ;; Uncomment this for automatic bracket closing ;; Begin bracket closing ; (local-set-key "{" 'TeX-schweif) ; (local-set-key "(" 'TeX-rundekl) ; (local-set-key "[" 'TeX-eckigek) ; (local-set-key "^" 'TeX-exponen) ; (local-set-key "_" 'TeX-subscri) ; (local-set-key "$" 'TeX-dollarm) ; (local-set-key "\C-b" 'TeX-REVbbox) ;; ;; It's german: ;; Deutsche Tastatur im LaTeX-German-Style/Babel-Class ;; --------------------------------------------------- ;; Aktivierung mit `M-x german-mode' -> man dr"ucke ;; *nacheinander* , <">, und staune! ;; ACHTUNG: Bei grossen Files sehr LANGSAM beim Abspeichern ;; das ist vom Prinzip her bedingt! Hier gibt's keinen Support! ; (require 'ger-keys) ;; End bracket closing ;; For ISO Latin standard: Macro out of `ger-keys' ;; ger-keys should be loaded ; (german-mode) ;; For german style usage: ; (modify-syntax-entry ?" "w") ; (local-set-key "\"" 'self-insert-command) ;; Deutsche Belegung amerikanischer Tastaturen: aus `ger-keys' ; (german-keyboard) )) ;; ;; Provide some usefull function keys ;; ---------------------------------- ;; Have a look on /usr/share/emacs/site-lisp/function-keys.el ;; Extensions or changes of the keymap ;; original definitions will found in loaddefs.el. ;;(global-set-key [escape] [?\e]) ; Escape ;; (global-set-key [M-left] 'backward-word) (global-set-key [M-right] 'forward-word) (global-set-key [M-up] 'beginning-of-line) (global-set-key [M-down] 'end-of-line) ;; ; (global-set-key [C-left] 'backward-char) ; (global-set-key [C-right] 'forward-char) ; (global-set-key [C-up] 'previous-line) ; (global-set-key [C-down] 'next-line) ;; ; (global-set-key [S-left] 'backward-char) ; (global-set-key [S-right] 'forward-char) ; (global-set-key [S-up] 'previous-line) ; (global-set-key [S-down] 'next-line) ;; (global-set-key [find] 'isearch-forward) ; Search (global-set-key [select] 'set-mark-command) ; Mark ;; (global-set-key [S-next] 'end-of-buffer) (global-set-key [S-prior] 'beginning-of-buffer) (global-set-key [S-find] 'find-file) (global-set-key [S-select] 'switch-to-buffer) (global-set-key [S-insert] 'insert-file) ;; (if (and (= emacs-major-version 19) (= emacs-minor-version 29)) (define-key key-translation-map [f1] nil)) ; 19.29+ (global-set-key [S-f1] 'find-file) (global-set-key [M-f1] 'find-file) (global-set-key [f1] 'help-for-help) ; `Help' (global-set-key [pause] 'toggle-read-only) ; `HoldScreen' ;; (if (global-key-binding [f2]) (progn (global-set-key [S-f2] 'split-window) (global-set-key [M-f2] 'split-window)) (global-set-key [f2] 'split-window)) (if (global-key-binding [f2]) (progn (global-set-key [S-f2] 'split-window) (global-set-key [M-f2] 'split-window)) (global-set-key [f2] 'split-window)) (if (global-key-binding [f3]) (progn (global-set-key [S-f3] 'isearch-forward) (global-set-key [M-f3] 'isearch-forward)) (global-set-key [f3] 'isearch-forward)) (if (global-key-binding [f4]) (progn (global-set-key [S-f4] 'query-replace-regexp) (global-set-key [M-f4] 'query-replace-regexp)) (global-set-key [f4] 'query-replace-regexp)) (if (global-key-binding [f5]) (progn (global-set-key [S-f5] 'save-buffer) (global-set-key [M-f5] 'save-buffer)) (global-set-key [f5] 'save-buffer)) (if (global-key-binding [f6]) (progn (global-set-key [S-f6] 'find-file) (global-set-key [M-f6] 'find-file)) (global-set-key [f6] 'find-file)) (if (global-key-binding [f7]) (progn (global-set-key [S-f7] 'buffer-menu) (global-set-key [M-f7] 'buffer-menu)) (global-set-key [f7] 'buffer-menu)) (if (global-key-binding [f8]) (progn (global-set-key [S-f8] 'repeat-complex-command) (global-set-key [M-f8] 'repeat-complex-command)) (global-set-key [f8] 'repeat-complex-command)) (if (global-key-binding [f9]) (progn (global-set-key [S-f9] 'execute-extended-command) (global-set-key [M-f9] 'execute-extended-command)) (global-set-key [f9] 'execute-extended-command)) (if (global-key-binding [f10]) (progn (global-set-key [S-f10] 'eval-expression) (global-set-key [M-f10] 'eval-expression)) (global-set-key [f10] 'eval-expression)) ;; ;;(global-set-key [f11] [?\e]) ; Escape (global-set-key [f11] esc-map) ; Escape ;; (global-set-key [f12] 'backward-delete-char-untabify) ; Backspace ;; ;; DEC keyboard: f13 up to f20 (global-set-key [f13] 'newline) ; Linefeed (global-set-key [linefeed] 'newline) ; Linefeed ;; (global-set-key [f14] 'switch-to-buffer) ;; ;; Emacs original key binding ;; ; (global-set-key [home] 'beginning-of-buffer) ; ; (global-set-key [end] 'end-of-buffer) ; ;; (global-set-key [help] 'info) ; Help (global-set-key [M-help] 'repeat-complex-command) ; Redo (global-set-key [menu] 'execute-extended-command) ; Do (global-set-key [M-menu] 'eval-expression) ; eval ;; (global-set-key [f17] 'beginning-of-buffer) (global-set-key [f18] 'end-of-buffer) (global-set-key [f19] 'save-buffer) (global-set-key [f20] 'find-file) ;; ;; Translate `C-h' to DEL. ; (keyboard-translate ?\C-h ?\C-?) ;; ;; Translate DEL to `C-h'. ; (keyboard-translate ?\C-? ?\C-h) ;;;;;;;;;; ;; the end