--- /dev/null
+
+(setq tfheen-color-preference 'light) ; light or dark
+
+(if (not (string-match "Lucid" emacs-version))
+ (setq xemacsp nil))
+
+(if (not xemacsp)
+ (save-excursion
+ (if (string< "21" emacs-version )
+ (set-language-environment "Latin-1")
+ (let ()
+ (standard-display-european t)
+ (if (string< emacs-version "20")
+ (load-library "iso-syntax") ; emacs 19.x
+ (require 'latin-1)) ; emacs 20.x
+ (set-input-mode (car (current-input-mode))
+ (nth 1 (current-input-mode))
+ 0)))))
+
+;(prefer-coding-system "utf-8")
+
+
+(add-to-list 'Info-default-directory-list (expand-file-name "~/usr/info"))
+;(add-to-list 'Info-default-directory-list
+; (expand-file-name "~/data/emacs/lisp/tramp/texi"))
+
+(add-to-list 'load-path (expand-file-name "~/data/emacs/lisp"))
+;(add-to-list 'load-path (expand-file-name "~/data/emacs/lisp/tramp/lisp"))
+
+(require 'bbdb)
+
+(setq tramp-default-method "rsync")
+
+(bbdb-initialize 'gnus 'message 'w3)
+
+(setq bbdb-use-pop-up nil
+ bbdb-quiet-about-name-mismatches t
+ bbdb-default-area-code nil
+ bbdb-north-american-phone-numbers-p nil
+ bbdb-user-mail-names "\(tollef|tfheen\)"
+ bbdb-offer-save 1
+ bbdb-use-pop-up nil
+ mail-setup-hook 'bbdb-insinuate-sendmail)
+(add-hook mail-setup-hook 'bbdb-define-all-aliases)
+
+(setq default-major-mode 'text-mode)
+(add-hook 'text-mode-hook 'turn-on-auto-fill)
+
+(defun dos-to-unix ()
+ (interactive)
+ (save-excursion
+ (goto-char (point-min))
+ (replace-string "\91" "æ")
+ (replace-string "\9b" "ø")
+ (replace-string "\86" "å")
+ (replace-string "\92" "Æ")
+ (replace-string "\9d" "Ø")
+ (replace-string "\8f" "Å")
+ (replace-string "\r" "")
+ (replace-string "\1a" "")
+ )
+ )
+
+
+(defun text-to-html ()
+ (interactive)
+ (save-excursion
+ (goto-char (point-min))
+ (replace-string "æ" "æ")
+ (replace-string "æ" "ø")
+ (replace-string "å" "å")
+ (replace-string "Æ" "Æ")
+ (replace-string "Ø" "Ø")
+ (replace-string "Å" "Å")
+ )
+ )
+
+(fset 'yes-or-no-p 'y-or-n-p)
+
+(load-library "mailcrypt")
+(mc-setversion "gpg")
+
+(autoload 'mc-install-write-mode "mailcrypt" nil t)
+(autoload 'mc-install-read-mode "mailcrypt" nil t)
+(add-hook 'mail-mode-hook 'mc-install-write-mode)
+(add-hook 'mail-setup-hook 'mc-install-write-mode)
+
+(add-hook 'gnus-summary-mode-hook 'mc-install-read-mode)
+(add-hook 'news-reply-mode-hook 'mc-install-write-mode)
+
+(global-set-key "\M-n" 'browse-url-at-point)
+(global-set-key [(control backspace)] 'undo)
+(global-set-key [(control return)] 'find-tag)
+
+;;; Custom stuff.
+(setq load-path (cons "/usr/share/emacs/site-lisp" load-path))
+(condition-case () (require 'w3-auto "w3-auto") (error nil))
+(custom-set-variables
+ '(ecb-source-path (quote ("~/data/ntnu/SIF8005/prosjekt/risk/")))
+ '(w3-user-fonts-take-precedence t)
+ '(browse-url-browser-function (quote browse-url-netscape) t)
+ '(browse-url-new-window-p t t)
+ '(browse-url-generic-program "opera" t)
+ '(browse-url-netscape-program "opera")
+ '(gnuserv-program (concat exec-directory "/gnuserv"))
+ '(tramp-multi-file-name-structure (quote ("\\`/r:\\(\\([a-z0-9]+\\)\\)?\\(\\(%s\\)+\\):\\(.*\\)\\'" 2 3 -1)))
+ '(tramp-make-tramp-file-format "/r:%m/%u@%h:%p")
+ '(tramp-file-name-regexp "\\`/r:")
+ '(tramp-make-multi-tramp-file-format (quote ("/r:%m" "/%m:%u@%h" ":%p")))
+ '(tramp-auto-save-directory "/home/tfheen/tmp")
+ '(load-home-init-file t t)
+ '(py-beep-if-tab-change nil)
+ '(tramp-make-tramp-file-user-nil-format "/r:%m/%h:%p")
+ '(tramp-file-name-structure (quote ("\\`/r:\\(\\([a-zA-Z0-9]+\\)/\\)?\\(\\([-a-zA-Z0-9_#/:]+\\)@\\)?\\([-a-zA-Z0-9_#/:@.]+\\):\\(.*\\)\\'" 2 4 5 6)))
+ '(browse-url-temp-dir "~/tmp/")
+ '(nnmail-prepare-incoming-header-hook (quote (nnmail-fix-eudora-headers)))
+ '(jde-bug-vm-includes-jpda-p t)
+ '(w3-user-colors-take-precedence t))
+
+ (if (eq tfheen-color-preference 'dark)
+ (custom-set-faces
+ '(w3-style-face-00003 ((t (:foreground "#000000" :background "black"))) t)
+ '(w3-style-face-00002 ((t (:background "black"))) t)
+ '(w3-style-face-00001 ((t (:background "black"))) t)
+ '(custom-set-face ((((class color)) (:foreground "blue" :background "black"))))
+ '(font-lock-keyword-face ((((class color) (background dark)) (:foreground "Maroon"))))
+ '(show-paren-mismatch-face ((((class color)) (:bold t :foreground "Red"))))
+ '(gnus-cite-face-3 ((t (:foreground "Green"))))
+ '(gnus-cite-face-2 ((t (:foreground "LightBlue"))))
+ '(gnus-cite-face-1 ((t (:foreground "Yellow"))))
+ '(show-paren-match-face ((((class color)) (:bold t :foreground "White"))))
+ '(font-lock-builtin-face ((((class color) (background dark)) (:foreground "BlueViolet")))))
+ (custom-set-faces
+ '(w3-style-face-00003 ((t (:foreground "#000000" :background "black"))) t)
+ '(w3-style-face-00002 ((t (:background "black"))) t)
+ '(w3-style-face-00001 ((t (:background "black"))) t)
+
+ '(custom-set-face ((((class color)) (:foreground "blue" :background "black"))))
+ '(sh-heredoc-face ((((class color) (background light)) (:foreground "DarkGreen"))))
+ '(font-lock-keyword-face ((t (:foreground "DarkBlue"))) t)
+ '(font-lock-string-face ((t (:foreground "Blue"))) t)
+ '(mmm-default-submode-face ((t (:background "White"))) t)
+ '(show-paren-mismatch-face ((((class color)) (:bold t :foreground "Red"))))
+ '(gnus-cite-face-3 ((t (:foreground "DarkGreen"))))
+ '(gnus-cite-face-2 ((t (:foreground "DarkRed"))))
+ '(gnus-cite-face-1 ((t (:foreground "DarkBlue"))))
+ '(show-paren-match-face ((((class color)) (:bold t :foreground "White"))))
+ '(font-lock-builtin-face ((((class color) (background dark)) (:foreground "BlueViolet"))))))
+;; File modes
+
+(autoload 'php-mode "php-mode" "PHP editing mode" t)
+(autoload 'css-mode "css-mode")
+(autoload 'pov-mode "pov-mode" "PoVray scene file mode" t)
+(autoload 'jde-mode "jde" "Java Development Environment" t)
+(autoload 'dtml-mode "dtml-mode" "Document Template Markup Language" t)
+
+(add-to-list 'auto-mode-alist '("\\.php3$" . php-mode))
+(add-to-list 'auto-mode-alist '("\\.css$" . css-mode))
+(add-to-list 'auto-mode-alist '("\\.pov$" . pov-mode))
+(add-to-list 'auto-mode-alist '("\\.jl$" . lisp-mode))
+(add-to-list 'auto-mode-alist '("\\.java$" . jde-mode))
+
+;; Set up autoloading and auto-mode
+(autoload 'ps-mode "ps-mode"
+ "Major mode for editing PostScript" t)
+(setq auto-mode-alist
+ (append
+ '(("\\.[eE]?[pP][sS]$" . ps-mode))
+ auto-mode-alist))
+
+;; Various programming settings and languages
+; K&R
+(setq perl-indent-level 5
+ perl-continued-statement-offset 5
+ perl-continued-brace-offset 0
+ perl-brace-offset -5
+ perl-brace-imaginary-offset 0
+ perl-label-offset -5
+ )
+
+;(if (not xemacsp)
+; (c-set-style "k&r"))
+
+
+(setq next-line-add-newlines nil
+ compilation-window-height 10
+ european-calendar-style t)
+
+(defun reverse-list-in-list (reverse-list)
+ (require 'cl)
+ (let '(bar (copy-list reverse-list))
+ (setq liste (list))
+ (while (car bar)
+ (let '(elem (car bar))
+ (add-to-list 'liste (reverse elem)))
+ (setq bar (cdr bar)))
+ (reverse liste)))
+
+(defun reverse-nnml-list-in-list (reverse-list)
+ (require 'cl)
+ (let '(bar (copy-list reverse-list))
+ (setq liste (list))
+ (while (car bar)
+ (let '(elem (car bar))
+ (print (car elem))
+ (add-to-list 'liste (list (car (cdr elem)) (concat "nnml:" (car elem))))
+ (setq bar (cdr bar))))
+ (reverse liste)))
+(setq py-honor-comment-indentation nil)
+
+(add-hook 'sgml-mode-hook '(lambda()(local-set-key "\C-c>" 'sgml-insert-end-tag)))
+(add-hook 'emacs-lisp-mode-hook '(lambda()(local-set-key "\C-j" 'find-function)))
+(setq mc-temp-directory (expand-file-name "~/tmp")
+ mc-encrypt-for-me t
+ mc-gpg-user-id "tfheen@opera.no")
+;(require 'template)
+;(add-hook 'c-mode-common-hook 'tmpl-init)
+;(add-hook 'c-mode-common-hook 'auto-insert-file-header)
+(add-hook 'c-mode-common-hook (lambda() (local-set-key "\M-\C-x" 'compile)))
+(add-hook 'c-mode-common-hook (lambda() (local-set-key "\M-\C-z" 'next-error)))
+(require 'auto-header)
+(setq header-full-name "Tollef Fog Heen"
+ header-email-address "tollef@add.no"
+ add-log-mailing-address "tfheen@debian.org"
+ debian-changelog-mailing-address "tfheen@debian.org"
+ tags-table-list (list (expand-file-name "~/usr/include/")))
+(setq sgml-local-catalogs (list "~/usr/lib/sgml/sgml.catalog"))
+
+;; Find-file hooks
+; Stolen from Jan Ingvoldstad
+(add-hook 'find-file-hooks
+ '(lambda ()
+ ;; Invoke proper modes when we don't know file extensions
+ (cond ((looking-at "#!.*/perl") (perl-mode))
+ ((looking-at "#!.*/tclsh") (tcl-mode))
+ ((looking-at "#!.*/wish") (tcl-mode))
+ ((looking-at "#!.*/make") (makefile-mode)))))
+
+;; Visual fluff.
+
+(if (not xemacsp)
+ (toggle-scroll-bar -1)
+ (setq scrollbars-visible-p nil))
+
+(setq scroll-bar-mode nil)
+; show-paren-style 'expression)
+
+; Highlight matching/nonmatching parens
+;(if (not xemacsp)
+; (show-paren-mode t)) ; show-paren-mode takes too much cpu
+(if (not xemacsp)
+ (global-font-lock-mode t)
+ (font-lock-mode 1))
+(if (not xemacsp)
+ (server-start))
+
+;; Multiple mode
+
+
+(require 'mmm-auto)
+(setq mmm-global-mode 'maybe)
+(custom-set-faces
+ '(w3-style-face-00003 ((t (:foreground "#000000" :background "black"))) t)
+ '(w3-style-face-00002 ((t (:background "black"))) t)
+ '(w3-style-face-00001 ((t (:background "black"))) t)
+ '(font-lock-string-face ((t (:foreground "Blue"))))
+ '(custom-set-face ((((class color)) (:foreground "blue" :background "black"))))
+ '(font-lock-keyword-face ((t (:foreground "DarkBlue"))))
+ '(show-paren-mismatch-face ((((class color)) (:bold t :foreground "Red"))))
+ '(gnus-cite-face-3 ((t (:foreground "DarkGreen"))))
+ '(gnus-cite-face-2 ((t (:foreground "DarkRed"))))
+ '(gnus-cite-face-1 ((t (:foreground "DarkBlue"))))
+ '(mmm-default-submode-face ((t (:background "White"))))
+ '(show-paren-match-face ((((class color)) (:bold t :foreground "White"))))
+ '(font-lock-builtin-face ((((class color) (background dark)) (:foreground "BlueViolet")))))
+(setq mc-passwd-timeout 600)
+
+(if (not xemacsp)
+ (require 'tramp))
+
+
+(if (and (not xemacsp) (= emacs-major-version 21))
+ (progn
+ (blink-cursor-mode 0)
+ (tooltip-mode 0)
+ (tool-bar-mode 0)
+ (global-set-key [home] 'beginning-of-buffer)
+ (global-set-key [end] 'end-of-buffer)
+ (setq cursor-in-non-selected-windows nil)))
+
+(global-set-key [C-tab] 'dabbrev-expand)
+(setq mail-open-quote "«")
+(setq mail-close-quote "»")
+
+(defun mail-insert-quote (arg)
+ "Insert the appropriate quote marks for Norwegian mail.
+Inserts the value of `mail-open-quote' (normally «) or `mail-close-quote'
+\(normally ») depending on the context. With prefix argument, always
+inserts \" characters."
+ (interactive "*P")
+ (if arg
+ (self-insert-command (prefix-numeric-value arg))
+ (insert
+ (cond ((or (bobp)
+ (save-excursion
+ (forward-char -1)
+ (looking-at "\\s(\\|\\s \\|\\s>")))
+ mail-open-quote)
+ ((= (preceding-char) ?\\)
+ ?\")
+ (t
+ mail-close-quote)))))
+
+(add-hook 'diary-hook 'appt-make-list)
+(display-time)
+(add-hook 'diary-hook 'appt-make-list)
+(diary 0)
+(display-battery)
+(setq show-trailing-whitespace t)
+(setq-default indent-tabs-mode nil)
+(define-coding-system-alias 'iso885915 'iso-8859-15)
--- /dev/null
+;; -*- lisp -*-
+
+(defun tfheen-random-from-list (list)
+ (let ((r (random (list-length list))))
+ (while (> r 0)
+ (setq r (- r 1))
+ (setq list (cdr list)))
+ (car list)))
+
+(setq gnus-select-method '(nntp "localhost")
+ gnus-secondary-select-methods '((nnml ""))
+; (nntp "news.sunsite.dk"))
+; gnus-summary-limit-to-unread nil
+ nnml-crosspost nil
+ nnmail-crosspost nil
+ debug-on-error t
+ gnus-novice-user nil
+ gnus-interactive-exit nil
+ message-default-charset 'iso-8859-1
+ message-default-headers "Mail-Copies-To: never"
+ message-send-mail-partially-limit nil)
+
+(add-to-list 'gnus-secondary-select-methods '(nntp "news.hardware.no"))
+
+(add-hook 'nntp-server-opened-hook 'nntp-send-authinfo)
+(add-hook 'nntp-server-opened-hook 'nntp-send-mode-reader)
+
+(setq nnmail-split-methods
+ (list '("junk.2002" "^From:.*Cron")
+ '("spam" "^From:.*lifeminders.com")
+ '("spam" "^Subject: =\\?ks_c_5601-1987")
+ '("spam" "^Subject:.*Boost Your Windows Reliability!")
+ '("spam" "^Subject:.*Xsamplesampledesktopdesktopsamplesampledesktopsamplesamplesamplesamplesampledesktopsamplesamplesamplesampledesktopsamplesampledesktopdesktopsamplesamplesampledesktopsampledesktopdesktopdesktopdesktopdesktopsamplesampledesktopdesktopsampledesktopsampledesktadd.nodesktop")
+ '("spam" "^From: spam_filter@linuxfreemail.com")
+ '("spam" "^Content-Type: text/html; charset=KS_C_5601-1987")
+ '("spam" "^Subject:.*±¤°í\\")
+ ; Hand-moderated lists over automatic spam detection
+ '("bugtraq.2002" "^Delivered-To:.*bugtraq@securityfocus.com")
+ '("maybe-spam" "^X-Spam-Status: Yes")
+ '("infobeat" "^From:.*InfoBeat")
+ '("in-2002-news" "^Delivered-To:.*tollef-news")
+ '("www.zope.div" "^\\(To\\|Cc\\):.*zope@\\(zope\\|egroups.com\\)")
+ '("drift.fagerborg" "^\\(To\\|Cc\\):.*drift@.*fagerborg")
+ '("drift.fagerborg" "^\\(To\\|Cc\\):.*fa-drift")
+ '("drift.pvv" "^\\(Delivered-To\\|\\):.*drift@pvv")
+ '("drift.pvv.tk" "^\\(Delivered-To\\|\\):.*tk@pvv")
+ '("drift.pvv.cert" "^\\(Delivered-To\\|\\):.*cert@pvv")
+ '("drift.pvv.root" "^\\(Delivered-To\\|\\):.*root@pvv")
+ '("drift.pvv.sherlock" "^\\(Delivered-To\\|\\):.*sherlock@pvv")
+ '("drift.pvv.nerds" "^\\(Delivered-To\\|\\):.*nerds@pvv")
+ '("drift.pvv.abuse" "^\\(Delivered-To\\|\\):.*abuse@pvv")
+ '("drift.opera.diverse" "^\\(X-BeenThere\\|To\\|Cc\\):.*server@opera")
+ '("drift.opera.www.opera.com" "^From:.*root@opera.com")
+ '("drift.opera.security" "^\\(To\\|Cc\\):.*\\(security\\|security-issues\\)@opera")
+ '("jobb.opera.elektra" "^List-Id:.*elektra.opera")
+ '("drift.uio" "^\\(To\\|Cc\\):.*linux-drift@uio")
+ '("drift.egroups" "^\\(To\\|Cc\\):.*egroups-managers")
+ '("drift.opera.news" "\\(To\\|From\\):.*\\(usenet@\\|news@\\).*opera")
+ '("drift.opera.news" "\\(To\\|From\\):.*\\(usenet@\\|news@\\).*pvv")
+ '("drift.opera.epost" "^To:.*\\(postmaster\\|root\\)@opera")
+ '("drift.opera.backup" "^To:.*tollef-opera-backup")
+ '("drift.opera.staff" "^\\(To\\|Cc\\):.*staff@.*opera")
+ '("drift.opera.oslo" "^\\(To\\|Cc\\):.*oslo@.*opera")
+ '("drift.opera.linux" "^\\(To\\|Cc\\):.*opera-linux@opera")
+ '("drift.opera.panic" "^\\(To\\|Cc\\):.*panic@opera")
+ '("drift.opera.mac-developer" "^List-Id:.*mac-developer.opera.no")
+ '("drift.opera.epostlister" "^\\(To\\|Cc\\):.*admin@opera")
+ '("drift.opera.epostlister" "^\\(To\\|Cc\\):.*owner@opera")
+ '("drift.opera.emergency" "^\\(To\\|Cc\\):.*tfheen-netsaint@opera")
+ '("drift.hardware.sherlock" "^\\(To\\|Delivered-To\\|Envelope-to\\):.*sherlock@hardware")
+ '("drift.hardware.emergency" "^From:.*netsaint@.*hardware")
+ '("drift.hardware.news" "^\\(To\\|Cc\\|Delivered-To\\):.*usenet@.*hardware.no")
+ '("drift.hardware.drift" "^\\(To\\|Cc\\|Delivered-To\\):.*drift@hardware.no")
+ '("drift.samfundet.gsf" "^\\(To\\|Cc\\):.*gsf@.*\\(samfundet\\|stud\\)")
+ '("drift.samfundet.gsk" "^\\(To\\|Cc\\):.*gsk@.*\\(samfundet\\|stud\\)")
+ '("drift.isfit.it-admin" "Delivered-To:.*it-admin@isfit.org")
+ '("drift.isfit.mail" "Subject: bayer.isfit.org Daily Mail Report")
+ '("drift.isfit.logwatch" "Subject: LogWatch for bayer.isfit.org")
+ '("drift.lis.drift" "^\\(To\\|Cc\\|Delivered-To\\):.*drift@sk[ou]lelinux.no")
+ '("drift.itk.arpwatch" "From:.*arpwatch@samfundet.no")
+ '("drift.itk.kort" "^\\(To\\|Cc\\):.*kort@.*\\(samfundet\\|stud\\)")
+ '("drift.itk.itk" "^\\(To\\|Cc\\):.*itk@.*\\(samfundet\\|stud\\)")
+ '("drift.itk.uka" "^\\(To\\|Cc\\):.*itk@.*uka")
+ '("drift.itk.unix" "^\\(To\\|Cc\\):.*unix@.*samfundet")
+ '("drift.itk.leder" "^\\(To\\|Cc\\):.*itk-leder@.*samfundet")
+ '("drift.itk.lister" "^From: mailman-owner@lists.samfundet.no")
+ '("drift.itk.news" "\\(To\\|From\\):.*\\(usenet@\\|news@\\).*samfundet.no")
+ '("drift.itk.uka-gjengsjefer" "^\\(To\\|Cc\\):.*gjengsjefer@.*uka")
+
+ '("drift.news.nag.intern" "^\\(To\\|Cc\\):.*gullkorn@usenet.no")
+ '("drift.news.nag.submissions" "^\\(To\\|Cc\\):.*no-alt-gullkorn@moderators")
+ '("drift.news.localhost" "^\\(To\\|Cc\\):.*usenet@manon")
+ '("drift.snort.localhost" "^Subject:.*snort daily report")
+ '("anchordesk" "^From:.*AnchorDesk")
+ '("postgres" "^\\(To\\|Cc\\):.*announce@postgresql.org")
+; '("firma.netscape" "^From:.*@netscape.com")
+ '("firma.java" "^To:.*JDC.*@Sun.com")
+ '("firma.java" "^To:.*devflash@eng.sun.com")
+ '("firma.borland" "To:.*INPR04@BORLAND.COM")
+ '("firma.div_tilbud" "^From:.*clubpdalist@list.pacbus.com")
+ '("firma.div_tilbud" "list.cc-inc.com")
+ '("firma.div_tilbud" "^To:.*Announce@linuxmall.com")
+ '("firma.div_tilbud" "^From:.*salg@infolink.no")
+ '("firma.java" "JDCTechTips@sun.com")
+ '("div.keysign.nuccc-2002" "\\(To\\|Cc\\):.*nuccc\\+keysign@acc.umu.se")
+ '("div.hemsedal" "^\\(To:.*vaermottakere@skiinfo.no\\|From:.*vaer@skiinfo.no\\)")
+ '("div.samfundet.diskusjon" "^\\(To\\|Cc\\):.*diskusjon@samfundet.no")
+ '("div.samfundet.info" "^\\(To\\|Cc\\):.*info@samfundet.no")
+ '("div.samfundet.gjenger" "^\\(To\\|Cc\\):.*gjenger@samfundet.no")
+ '("div.ntnu.klatring" "^\\(To\\|Cc\\):.*tindegruppa@stud.ntnu.no")
+ '("programmering.banal" "^\\(To\\|Cc\\):.*banal@starnix.com")
+ '("programmering.together" "^To:.*@lists.oi.com")
+ '("programmering.qt.snapshot" "^\\(To\\|Cc:\\).*snapshot-users@troll")
+ '("div.hn" "^To:.*hn@coollist.com")
+ '("div.hn" "^To:.*hw-intern")
+ '("div.linux-i-skolen" "^\\(To\\|Cc\\|Reply-To\\):.*linuxisk[ou]len")
+ '("linux.linux-i-skolen.info" "^List-Id:.*info.skolelinux.no")
+ '("div.registrar" "\\(To\\|Cc\\):.*registrar@norid.no")
+ '("div.tut" "\\(To\\|Cc\\):.*tut@nvg")
+ '("firma.ibm" "^To:.*techconnect")
+ '("div.tipworld" "^To:.*tollef-tipworld")
+ '("freesoftware.cofsino" "List-Id.*cofsino.lists.raw.no")
+ '("freesoftware.nafs" "List-Id.*nafs.mail.nafs.org")
+ '("freesoftware.cvs.info" "List-Id.*info-cvs.gnu.org")
+ '("freesoftware.cvs.bug" "List-Id.*bug-cvs.gnu.org")
+ '("freesoftware.efn.listen" "List-Id.*efn-listen.ifi.uio.no")
+ '("linux.spi.private.2002" "^List.*spi-private.lists.spi-inc.org")
+ '("linux.progeny.pgi-workers" "^List-Id.*pgi-workers.lists.progeny.com")
+ '("linux.debian.hurd-testdrive" "List-Id.*hurd-testdrive.moneybags.cs.uml.edu")
+ '("linux.debian.dwn.2002" "^Delivered-To.*dwn@debian.org")
+ '("linux.debian.cd.2002" "^X-Mailing-List.*debian-cd")
+ '("linux.debian.www.2002" "^X-Mailing-List.*debian-www")
+ '("linux.debian.debbugs.2002" "^X-Mailing-List.*debian-debbugs")
+ '("linux.debian.laptop.2002" "^X-Mailing-List.*debian-laptop")
+ '("linux.debian.ctte.2002" "^X-Mailing-List.*debian-ctte")
+ '("linux.debian.devel-changes.2002" "^X-Mailing-List.*debian-devel-changes")
+ '("linux.debian.emacsen.2002" "^X-Mailing-List.*debian-emacsen")
+ '("linux.debian.policy.2002" "^X-Mailing-List.*debian-policy")
+ '("linux.debian.project.2002" "^X-Mailing-List.*debian-project")
+ '("linux.debian.python.2002" "^X-Mailing-List.*debian-python")
+ '("linux.debian.qa.2002" "^X-Mailing-List.*debian-qa")
+ '("linux.debian.bsd.2002" "^X-Mailing-List.*debian-bsd")
+ '("linux.debian.curiosa.2002" "^X-Mailing-List.*debian-curiosa")
+ '("linux.debian.www-cvs.2002" "^To.*joey-www-cvs@master.debian.org")
+ '("linux.debian.java.2002" "^X-Mailing-List.*debian-java")
+ '("linux.debian.events-eu.2002" "^X-Mailing-List.*debian-events-eu")
+ '("linux.debian.boot.2002" "^X-Mailing-List.*debian-boot")
+ '("linux.debian.devel.2002" "^X-Mailing-List.*debian-devel")
+ '("linux.debian.private.2002" "^X-Mailing-List.*debian-private")
+ '("linux.debian.mentors.2002" "^X-Mailing-List.*debian-mentors")
+ '("linux.debian.vote.2002" "^X-Mailing-List.*debian-vote")
+ '("linux.debian.newmaint.2002" "^X-Mailing-List.*debian-newmaint")
+ '("linux.debian.changes" "^X-Mailing-List.*debian-changes")
+ '("linux.debian.news" "^X-Mailing-List.*debian-news")
+ '("linux.debian.security" "^X-Mailing-List.*debian-security")
+ '("linux.debian.announce" "^X-Mailing-List.*debian-announce")
+ '("linux.debian.deb-pgsql" "^\\(To\\|Cc\\|Resent-To\\):.*\\(deb-pgsql\\|debian-postgresql\\)")
+ '("linux.debian.deb-pgsql" "^List-Id:.*debian-postgresql")
+ '("linux.helix.updates" "^\\(To\\|Cc\\|Resent-From\\):.*updates@\\(helixcode.com\\|ximian.com\\)")
+ '("linux.helix.announce" "^\\(To\\|Cc\\|Resent-From\\):.*announce@\\(helixcode.com\\|ximian.com\\)")
+ '("linux.tuug" "\\(To\\|Cc\\):.*tuug@nvg")
+ '("linux.rh.security" "^\\(To\\|Cc\\|Resent-From\\):.*linux-security")
+ '("linux.rh.alert" "^\\(To\\|Cc\\|Resent-From\\):.*tollef-rh-alert")
+ '("linux.rh.announce" "^X-BeenThere: redhat-announce-list@redhat.com")
+ '("linux.rh.watch" "^\\(To\\|Cc\\|Resent-From\\):.*redhat-watch")
+ '("linux.limacute" "List-Id:.*limacute-list.limacute.org")
+ '("programmering.koffice" "^\\(To\\|Cc\\|Resent-From\\):.*koffice")
+ '("programmering.mailman.developer" "^List-Id:.*mailman-developers.python.org")
+ '("programmering.mailman.user" "^List-Id:.*mailman-users.python.org")
+ '("programmering.xml-sig" "^List-Id:.*xml-sig.python.org")
+ '("programmering.ntnu.mugge" "^Delivered-To:.*mugge@samfundet.no")
+ '("drift.opera.mailer-daemon" "To:.*[Mm]ailer-[Dd]aemon@opera")
+ '("drift.opera.bounce" "From:.*[Mm]ailer-[Dd]aemon")
+ '("drift.opera.bounce" "Subject:.*\\([Rr]eturned\\|[Uu]ndeliverable\\) *\\([Mm]ail\\|[Mm]essage\\)")
+ '("drift.opera.bounce" "Subject: *Mail System Error - Returned Mail")
+ '("drift.opera.bounce" "Subject: *Delivery failure")
+ (list (format-time-string "in-%Y-%m") "")))
+(setq gnus-split-methods (reverse-nnml-list-in-list nnmail-split-methods))
+(setq gnus-move-split-methods (reverse-nnml-list-in-list nnmail-split-methods))
+
+(defun tfheen-maybe-sign ()
+ "Sign if appropiate. Only news. Selects correct sender."
+ (load-library "mc-toplev")
+ (if (message-news-p) (let ((newsgroups (cadr (mail-extract-address-components
+ (save-excursion
+ (save-restriction
+ (message-narrow-to-head)
+ (message-fetch-field "newsgroups")))))))
+ (if (string-match "^opera" newsgroups) (mc-sign-message "tfheen@opera.no")))))
+
+(setq gnus-message-archive-group
+ '((if (message-news-p)
+ "misc-news"
+ (format-time-string "nnml:out-%Y-%m"))))
+
+(setq schizo-default-mail-from "tollef@add.no")
+(setq schizo-default-news-from "tollef-news@add.no")
+
+(setq schizo-select-list '(("t.f.heen@jus.uio.no"
+ "Tollef Fog Heen"
+ "University of Oslo, Norway"
+ "http://www.uio.no/~tfheen/")
+ ("tollef-news@add.no"
+ "Tollef Fog Heen"
+ "Private"
+ "http://www.add.no/~tollef/")
+ ("tollef@add.no"
+ "Tollef Fog Heen"
+ "Private"
+ "http://www.add.no/~tollef/")
+ ("tfheen@pvv.ntnu.no"
+ "Tollef Fog Heen"
+ "PVV"
+ "http://www.pvv.org/")
+ ("tfheen@idi.ntnu.no"
+ "Tollef Fog Heen"
+ "Institutt for Datateknikk, FIM, NTNU"
+ "http://www.idi.ntnu.no/")
+ ("tfheen@debian.org"
+ "Tollef Fog Heen"
+ "Debian"
+ "http://www.debian.org/")
+ ("hostmaster@hardware.no"
+ "Hostmaster"
+ "Hardware.no"
+ "http://www.hardware.no/")
+ ("tfheen@fa002.fagerborg.vgs.no"
+ "Tollef Fog Heen"
+ "Fagerborg driftsgruppe"
+ "http://www.fagerborg.vgs.no/"
+ )
+ ("tfheen@fagerborg.net"
+ "Tollef Fog Heen"
+ "Fagerborg driftsgruppe"
+ "http://www.fagerborg.net/"
+ )
+ ("drift@fa002.fagerborg.vgs.no"
+ "Tollef Fog Heen"
+ "Fagerborg driftsgruppe"
+ "http://www.fagerborg.vgs.no/"
+ )
+ ("tfheen@hardware.no"
+ "Tollef Fog Heen"
+ "Hardware.no"
+ "http://www.hardware.no/")
+ ("tfheen@opera.no"
+ "Tollef Fog Heen"
+ "Opera Software"
+ "http://www.opera.no/")
+ ("tfheen@opera.com"
+ "Tollef Fog Heen"
+ "Opera Software"
+ "http://www.opera.no/")
+ ("tfheen@stud.ntnu.no"
+ "Tollef Fog Heen"
+ "Private"
+ "")
+ ("tfheen@samfundet.no"
+ "Tollef Fog Heen"
+ "IT-komiteen - Samfundet"
+ "http://www.samfundet.no/itk/")
+ ("tfheen@uka.no"
+ "Tollef Fog Heen"
+ "IT-komiteen - UKA"
+ "http://www.uka.no/")
+ ("tfheen@isfit.org"
+ "Tollef Fog Heen"
+ "ISFiT"
+ "http://www.isfit.org/")))
+
+(require 'schizo)
+
+(defun tfheen-de-arntify ()
+ (interactive)
+ (save-excursion
+ (if (string= (message-fetch-field "From") "Arnt Karlsen <arnt@c2i.net>")
+ (let ((inhibit-point-motion-hooks t)
+ buffer-read-only)
+ (set-buffer gnus-article-buffer)
+ (goto-char (point-min))
+ (replace-regexp "^\\.\\." "")
+ (goto-char (point-min))
+ (replace-regexp " ? ?;-)$" "")))))
+
+(defun tfheen-right-quotify ()
+ (interactive)
+ (save-excursion
+ (let ((inhibit-point-motion-hooks t)
+ buffer-read-only)
+ (set-buffer gnus-article-buffer)
+ (goto-char (point-min))
+ (while (re-search-forward "^>+" nil t)
+ (let ((i 0)
+ (str "")
+ (tmp (length (match-string 0))))
+ (while (< i tmp)
+ (setq str (concat str "|"))
+ (setq i (+ i 1)))
+ (setq str (concat str " "))
+ (replace-match str nil nil)))
+ (while (re-search-forward "| |+" nil t)
+ (replace-match "||" nil nil)))))
+
+
+(add-hook 'gnus-article-prepare-hook 'tfheen-de-arntify)
+;(add-hook 'gnus-article-prepare-hook 'tfheen-right-quotify)
+(add-hook 'gnus-article-display-hook 'gnus-article-highlight-citation)
+
+;; Don't _reply_ in news, dimwit!
+(defadvice gnus-summary-reply (around reply-in-news activate)
+ (interactive)
+ (when (or (not (gnus-news-group-p gnus-newsgroup-name))
+ (y-or-n-p "Really reply? "))
+ ad-do-it))
+
+(setq gnus-home-score-file
+ '(("\\(biz\\|marked\\|annonser\\)" "marked.SCORE")
+ ("^nnml:jobb.opera.elektra" "opera.SCORE")))
+
+(setq gnus-use-cache t
+ message-kill-buffer-on-exit t
+ nnvirtual-always-rescan t
+ rmail-dont-reply-to-names "tfheen\\|tollef\\|nobody\\|never\\|none"
+ message-dont-reply-to-names rmail-dont-reply-to-names
+)
+
+(defun tfheen-escape-url () "Puts <URL:> around URLs."
+(interactive)
+(save-excursion
+ (goto-char (point-min))
+ (replace-regexp "<URL:\\([^>]*\\)>" "\\1")
+ (goto-char (point-min))
+ (replace-regexp gnus-button-url-regexp "<URL:\\&>")))
+
+(add-hook 'message-send-hook 'schizo-select)
+(add-hook 'message-mode-hook '(lambda()(local-set-key "\M-c" 'bbdb-complete-name)))
+(add-hook 'message-mode-hook '(lambda()(local-set-key "\M-\S-F" 'tfheen-insert-footnote)))
+(add-hook 'message-mode-hook '(lambda()(local-set-key "\"" 'mail-insert-quote)))
+
+(add-hook 'gnus-article-display-hook 'gnus-article-hide-pgp)
+;(add-hook 'message-send-hook 'tfheen-escape-url)
+(add-hook 'message-send-hook 'tfheen-maybe-sign)
+(add-hook 'message-send-hook 'tfheen-check-mail-followup-to)
+;(add-hook 'mc-pre-encryption-hook 'tfheen-escape-url)
+;(add-hook 'mc-pre-signature-hook 'tfheen-escape-url)
+
+(defun tfh-insert-citation-line ()
+ "My own function to insert citation. Inserts a line similar to \"* Tollef Fog Heen\n\n\""
+ (if (string-equal gnus-newsgroup-name "nnml:drift.news.nag.submissions")
+ " "
+ (when message-reply-headers
+ (let ((author (mail-header-from message-reply-headers)))
+ (string-match "[^@ ]+@[^@ ]+" author)
+ (insert "* "(replace-match "" nil nil author) "\n\n")))))
+
+(setq gnus-summary-gather-subject-limit 'fuzzy
+ gnus-simplify-subject-fuzzy-regexp "^\\([Aa][Dd]: \\|[Ss][Vv]: \\|[Rr][Ee]: \\)+"
+ mc-gpg-comment "Please see my GPG key at http://www.opera.com/~tfheen/gpgkey.asc"
+ gnus-simplify-ignored-prefixes "^\\([Aa][Dd]: \\|[Ss][Vv]: \\|[Rr][Ee]: \\)+"
+ message-yank-prefix "| "
+ message-citation-line-function 'tfh-insert-citation-line
+ message-cite-function 'tfheen-cite-function
+ gnus-simplify-subject-functions '(gnus-simplify-subject gnus-simplify-subject-fuzzy)
+ gnus-summary-mode-line-format "Gnus: %G [%A] %Z")
+
+(setq gnus-uncacheable-groups "^nnml")
+; (add-to-list 'mm-discouraged-alternatives "text/html")
+
+;; text processing definitions
+
+(setq-default sentence-end "[.?!][]\"')}]*[ \n]+")
+(setq-default paragraph-start "^[|:> \t]*$")
+(setq-default paragraph-separate (default-value 'paragraph-start))
+(setq adaptive-fill-regexp (substring (default-value 'paragraph-start) 1 -1))
+
+(setq gnus-posting-styles
+ '(;; Du vil sikkert ha mer her enn det følgende:
+ ("drift.news.nag.submissions" ;; Antar at man får
+ ;; moderator-mail hit
+ (From
+ ;; settes til bidragsyters adresse ved posting
+ (save-excursion
+ (set-buffer gnus-article-buffer)
+ (message-fetch-field "from" t)))
+ (To nil)
+ (Cc nil)
+ (in-reply-to nil)
+ (references
+ (save-excursion
+ (set-buffer gnus-article-buffer)
+ (gnus-narrow-to-body)
+ (tfheen-get-header-fuzzy "message-id")
+ (widen)))
+ (newsgroups "no.alt.gullkorn")
+ (approved "no-alt-gullkorn@moderators.usenet.no")
+ (message-id
+ (concat "<no-alt-gullkorn-"
+ (substring
+ (or (save-excursion
+ (let ((msgid))
+ (gnus-summary-verbose-headers 1)
+ (set-buffer gnus-article-buffer)
+ (gnus-narrow-to-body)
+ (setq msgid (tfheen-get-header-fuzzy "message-id"))
+ (widen)
+ msgid)
+ )
+ "<FIKS MEG NÅ!!!")
+ 1)))
+ (reply-to "no-alt-gullkorn@moderators.usenet.no")
+ (x-url "http://www.stud.ifi.uio.no/~jani/OBS/no-alt-gullkorn.shtml")
+ (organization "no-alt-gullkorn@moderators.usenet.no")
+ (signature (concat "Utvalgt av " user-full-name "
+Send bidrag til no-alt-gullkorn@moderators.usenet.no
+OBS: <URL:http://www.stud.ifi.uio.no/~jani/OBS/no-alt-gullkorn.shtml>")))
+ ((and (message-mail-p) (stringp gnus-newsgroup-name))
+ ("Mail-Followup-To" (gnus-group-get-parameter gnus-newsgroup-name 'to-address)))))
+
+
+; (".*"
+; ("X-No-Archive" (tfheen-random-from-list '("Maybe" "Sometimes" "What!?" "That might be an idea"))))))
+
+
+(defun tfheen-set-fill-prefix ()
+ "Hook to run when entering no.alt.gullkorn.submissions"
+ (setq message-yank-prefix
+ (if (string-equal gnus-newsgroup-name "nnml:drift.news.nag.submissions")
+ " " "| ")))
+
+(defun tfheen-cite-function ()
+ "Which cite function to use -- depend on which you are in"
+ (if (string-equal gnus-newsgroup-name "nnml:drift.news.nag.submissions")
+ (message-cite-original)
+ (message-cite-original-without-signature)))
+
+
+(add-hook 'gnus-select-group-hook 'tfheen-set-fill-prefix)
+(add-hook 'gnus-exit-group-hook 'tfheen-set-fill-prefix)
+
+(defun tfheen-send-approved-mail ()
+ "Sends email to gullkorn@usenet.no when approving an article"
+ (if (string-equal gnus-newsgroup-name "nnml:drift.news.nag.submissions")
+ (save-excursion
+ (setq tmp-gnus-message-setup-hook gnus-message-setup-hook
+ gnus-message-setup-hook nil
+ tmp-gnus-posting-styles gnus-posting-styles
+ gnus-posting-styles nil)
+; (message (concat "gnus-article-buffer: " gnus-article-buffer))
+; (message (concat "gnus-message-buffer: " gnus-message-buffer))
+ (set-buffer gnus-article-buffer)
+; (gnus-summary-verbose-headers 1)
+ (gnus-narrow-to-body)
+ (let ((newsgroups (or (tfheen-get-header-fuzzy "newsgroups") "FIXME"))
+ (subject (or (tfheen-get-header-fuzzy "subject") "FIXME"))
+ (from (or (tfheen-get-header-fuzzy "from") "FIXME"))
+ (date (or (tfheen-get-header-fuzzy "date") "FIXME"))
+ (msgid (or (tfheen-get-header-fuzzy "message-id") "FIXME")))
+
+ (gnus-summary-mail-other-window)
+ (gnus-narrow-to-body)
+ (insert "Newsgroups: " newsgroups "\n")
+ (insert "Subject: " subject "\n")
+ (insert "From: " from "\n")
+ (insert "Date: " date "\n")
+ (insert "Message-ID: " msgid "\n\n")
+ (message-narrow-to-head)
+ (goto-char (point-min))
+ (search-forward "Subject: " (point-max) t)
+ (insert (format-time-string "Postet %Y%m%d %H:%M"))
+ (goto-char (point-min))
+ (search-forward "To: " (point-max) t)
+ (insert "gullkorn@usenet.no")
+ (widen))
+ (setq gnus-message-setup-hook tmp-gnus-message-setup-hook
+ tmp-gnus-message-setup-hook nil
+ gnus-posting-styles tmp-gnus-posting-styles
+ tmp-gnus-posting-styles nil)
+ (gnus-summary-verbose-headers -1))))
+
+(defun tfheen-fixup-subject ()
+ "Fix subject for no.alt.gullkorn"
+ (if (string-equal gnus-newsgroup-name "nnml:drift.news.nag.submissions")
+ (save-excursion
+ (message (concat "gnus-article-buffer: " gnus-article-buffer))
+ (set-buffer gnus-article-buffer)
+ (gnus-narrow-to-body)
+ (let ((newsgroups (or (tfheen-get-header-fuzzy "newsgroups") "FIXME"))
+ (subject (or (tfheen-get-header-fuzzy "subject") "FIXME")))
+ (message (concat "gnus-message-buffer: " gnus-message-buffer))
+ (set-buffer gnus-message-buffer)
+ (message-narrow-to-head)
+ (goto-char (point-min))
+ (search-forward "Subject: " (point-max) t)
+ (replace-regexp "\\(Fwd\\|Re\\):? \\(\\[[A-Za-z,.]+\\]\\)? ?\\(.*\\)"
+ (concat "[" newsgroups "] " "\\3"))))))
+
+; Order is important here!
+;(add-hook 'gnus-message-setup-hook 'tfheen-fixup-subject)
+(add-hook 'gnus-message-setup-hook 'tfheen-send-approved-mail)
+
+(defun tfheen-get-header-fuzzy (field)
+ "Searches the current buffer for a match to the regexp specified as
+field."
+ (save-excursion
+ (goto-char (point-min))
+ (search-forward-regexp (concat field ":[ \t]*\\(.*\\)") (point-max) t)
+ (match-string 1)))
+
+(defun tfheen-check-mail-followup-to ()
+ "Checks that mail-followup-to is set to one of the recipients. Breaks
+on multiple mail-followup-to headers"
+ (goto-char (point-min))
+ (let ((headers (mail-header-extract))
+ (to-list "")
+ (mail-followup-to ""))
+ (while headers
+ (if (string= (car (car headers)) "to")
+ (setq to-list (concat to-list (cdr (car headers)))))
+ (if (string= (car (car headers)) "cc")
+ (setq to-list (concat to-list (cdr (car headers)))))
+ (if (string= (car (car headers)) "bcc")
+ (setq to-list (concat to-list (cdr (car headers)))))
+ (if (string= (car (car headers)) "mail-followup-to")
+ (setq mail-followup-to (cdr (car headers))))
+ (setq headers (cdr headers)))
+ (if (not (string-match mail-followup-to to-list))
+ (if (not (y-or-n-p "Mail-Followup-To not in recipient list. Really post?"))
+ (keyboard-quit)))))
+
+(defun tfheen-insert-footnote ()
+ "Insert footnote and set mark to where you were in the text."
+ (interactive)
+ (make-variable-buffer-local 'tfheen-footnotes)
+ (setq tfheen-footnotes (+ 1 (or tfheen-footnotes 0)))
+ (insert (format "[%d]" tfheen-footnotes))
+ (push-mark (point) t nil)
+ (goto-char (point-max))
+ (re-search-backward "^-- $")
+ (backward-char)
+ (insert (format "\n[%d] " tfheen-footnotes)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Drittlei av Re: Sv: Re: i subject...
+;;
+;; fra Lars Clausen <lrclause@cs.uiuc.edu> paa gnu.emacs.gnus
+;; 27. juli 2000 -- tilpasset norske forhold.
+
+(defvar message-subject-re-re
+ "^\\(\\(\\([Rr][Ee]?\\|[Ss][Vv]\\): *\\)*\\(\\(R\\|[Ss][Vv]\\): *\\)+\\)"
+ "Regexp that matches any number of \"Re: \"'s and at least a \"Sv: \" at the end")
+
+(defvar message-re-string
+ "Re: "
+ "The string added to indicate an answer")
+
+(defun strip-any-re (subject)
+ "Remove \"Re:\" from subject lines, internationalizably"
+ (message subject)
+ (if (string-match message-subject-re-re subject)
+ (progn
+ (message (int-to-string (match-end 1)))
+ (substring subject (match-end 1))
+ )
+ subject))
+
+(defun message-subject-strip-any-re ()
+ (save-excursion
+ ;; Would have used
+ ;; (message-goto-subject)
+ ;; but it fails :(
+ (beginning-of-buffer)
+ (let ((subject (mail-fetch-field "Subject")))
+ ;; Stripper Subject: for SV:- graps hvis
+ ;; - det er et gyldig Subject-felt
+ ;; - Subject-feltet starter med noe som inneholder minst 1 [Ss][Vv]
+ ;; - jeg vil at det skal strippes
+ (if (and subject
+ (not (equal subject ""))
+ (string-match message-subject-re-re subject)
+ (y-or-n-p "Stripp vekk SV: i Subject? "))
+ (let ((replacement (strip-any-re subject)))
+ (message-remove-header "Subject")
+ (message-add-header
+ (concat "Subject: " message-re-string replacement)))))))
+
+(add-hook 'message-header-setup-hook 'message-subject-strip-any-re)
+(setq gnus-treat-display-smileys nil)