Imported sources
[vee.git] / gnus.el
blobcabd373452e2aea3f1cd5d0c11cc2cf18637e674
1 (require 'gnus)
2 ;; for debugging see `gnus-verbose' and `nnimap-debug'
4 ;;;;
5 ;; Main
6 ;;;;
7 (defadvice netrc-parse (around netrc-parse-inline first (file) activate)
8 (if (stringp file)
9 ad-do-it
10 (setq ad-return-value file)))
12 (unless (functionp 'gnus-browse-imaps-server)
13 (defun gnus-browse-imaps-server (server)
14 "Browse a mail server in Gnus via IMAP-SSL."
15 (interactive "sServer name: ")
16 (gnus-group-browse-foreign-server
17 (list 'nnimap server
18 `((nnimap-address ,server)
19 (nnimap-stream ssl)
20 ;;'(nnimap-list-pattern ("INBOX" "mail/*" "Mail/*" "INBOX.*"))
21 (nnimap-expunge-on-close ask))))))
23 (defun gnus-group-quit! nil
24 (interactive)
25 (let ((noninteractive t)) (gnus-group-quit)))
26 (add-hook 'kill-emacs-hook 'gnus-group-quit!)
28 (defun gnus-group-killed! nil
29 (and (equal (buffer-name) "*Group*")
30 (remove-hook 'kill-buffer-hook 'gnus-group-killed!) (gnus-group-quit!)))
31 (add-hook 'kill-buffer-hook 'gnus-group-killed!)
33 (defun gnus-user-format-function-d (headers)
34 (let ((time (gnus-group-timestamp gnus-tmp-group)))
35 (if time
36 (format-time-string "%b %d %H:%M" time)
37 "")))
39 (setq gnus-select-method '(nnnil))
40 (setq gnus-secondary-select-methods nil)
42 ;; gmane news/mail gateway
43 (add-to-list 'gnus-secondary-select-methods '(nntp "news.gmane.org"))
45 ;; slashdot
46 ;;(add-to-list 'gnus-secondary-select-methods '(nnslashdot "")) ;; FIX
48 ;; imap accounts
49 (mapc (lambda (s)
50 (gnus-secrets s
51 (add-to-list 'gnus-secondary-select-methods
52 `(nnimap ,name
53 (nnimap-address ,server)
54 (nnimap-authinfo-file
55 ((("machine" . ,server)
56 ("login" . ,user)
57 ("password" . ,pass))))
58 (nnimap-stream ssl)
59 (nnimap-expunge-on-close ask)))))
60 '("ls" "hk" "th"))
62 ;; simple mail accounts
63 (eval-after-load "mail-source" '(require 'tgnus-pop3))
64 (add-to-list 'gnus-secondary-select-methods '(nnml ""))
65 (setq mail-sources nil)
66 (gnus-secrets "gmail"
67 (add-to-list 'mail-sources
68 `(pop :user ,user :password ,pass
69 :connection ssl :leave t
70 :server ,server :port 995)))
72 ;; Posting styles
73 (setq gnus-posting-styles
74 '(("^nnml.*gmail"
75 (name "Victor Hugo Borja")
76 (addres "vicborj@gmail.com"))
77 (".*" (name "Victor Hugo Borja")
78 (address "vic@rubyforge.org"))))
81 ;;;;
82 ;; The Group Buffer
83 ;;;;
85 ;; auto subscribe
86 ;; (add-to-list 'gnus-options-subscribe '("gmane.*ruby")) ;; I love ruby
87 ;; (add-to-list 'gnus-option-not-subscribe '("microsoft")) ;; aint matters
89 ;; set a fancy *Groups* buffer
90 ;; (setq gnus-group-line-format "%M%S%p%P%5y:%B%(%g%)%l %O\n") ;; default
91 (setq gnus-group-uncollapsed-levels 3
92 gnus-group-line-format
93 "%M\%S\%p\%P\%5y: %(%-40,40c%) %ud\n")
95 ;; group highlight high/low scores
96 ;;(add-to-list 'gnus-group-highlight '((nil) . face))
98 ;; when entering a group go to the highest-scored unread article
99 (setq gnus-auto-select-first 'best)
101 ;; most read groups get higher scores `gnus(Group Score)'
102 (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
104 ;; fixed group properties (Use `G p' on *Group*) or setq gnus-parameters
106 ;; use topic mode by default
107 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
109 ;; keep track of when a group was last read
110 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
113 ;; Topics
114 ;; from [emacswiki: GnusFormatting]
115 (setq gnus-topic-line-format "%i[ %u&topic-line; ] %v\n")
117 ;; this corresponds to a topic line format of "%n %A"
118 (defun gnus-user-format-function-topic-line (dummy)
119 (let ((topic-face (if (zerop total-number-of-articles)
120 'gnus-summary-low-ancient
121 'gnus-summary-high-ancient)))
122 (propertize
123 (format "%s %d" name total-number-of-articles)
124 'face topic-face)))
127 ;;;;
128 ;; The Summary Buffer
129 ;;;;
131 ;; article line format `gnus(Summary Buffer Lines)'
132 ;; (setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n") ;; def
134 (setq gnus-summary-gather-subject-limit 'fuzzy)
136 (def-keys gnus-summary-mode-map "$" 'gnus-summary-mark-as-spam)
139 (eval-after-load 'nnrss
140 '(progn
142 ;; Browse the rss entry URL with C-RET at *Summary buffer
143 (require 'browse-url)
145 (defun browse-nnrss-url (arg)
146 (interactive "p")
147 (let ((url (assq nnrss-url-field
148 (mail-header-extra
149 (gnus-data-header
150 (assq (gnus-summary-article-number)
151 gnus-newsgroup-data))))))
152 (if url
153 (browse-url (cdr url))
154 (gnus-summary-scroll-up arg))))
156 (add-hook 'gnus-summary-mode-hook
157 (lambda nil
158 (def-keys gnus-summary-mode-map
159 "H-<return>" 'browse-nnrss-url ;; browse-url-function
160 "M-<return>" (lambda nil (interactive) ;; konqueror
161 (let ((browse-url-browser-function
162 'browse-url-kde))
163 (call-interactively 'browse-nnrss-url)))
164 "C-<return>" (lambda nil (interactive) ;; w3m
165 (let ((browse-url-browser-function
166 (lambda (url &rest ignored)
167 (require 'w3m)
168 (w3m-browse-url url t))))
169 (call-interactively 'browse-nnrss-url))))))
171 (add-to-list 'nnmail-extra-headers nnrss-url-field)
173 (add-hook 'gnus-summary-mode-hook
174 (lambda () ;; from http://anirudhs.chaosnet.org/blog/2004.07.13.html
175 (when (string-match "^nnrss:.*" gnus-newsgroup-name)
176 (make-local-variable 'gnus-show-threads)
177 (make-local-variable 'gnus-article-sort-functions)
178 (make-local-variable 'gnus-use-adaptive-scoring)
179 (make-local-variable 'gnus-use-scoring)
180 (make-local-variable 'gnus-score-find-score-files-function)
181 (make-local-variable 'gnus-summary-line-format)
182 (setq gnus-show-threads nil)
183 (setq gnus-article-sort-functions 'gnus-article-sort-by-date)
184 (setq gnus-use-adaptive-scoring nil)
185 (setq gnus-use-scoring t)
186 (setq gnus-score-find-score-files-function 'gnus-score-find-single)
187 (setq gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n")
188 )))))
190 (provide 'vee/gnus)