;; This file: http://user.it.uu.se/~embe8573/conf/emacs-init/gnus/message-my.el (require 'super) (require 'message) (require 'moggle) (require 'edit) (font-lock-add-keywords 'message-mode '( ("`\\(.*?\\)'" (1 font-lock-reference-face)) ("\\*.*?\\*" . font-lock-function-name-face) ) t) ; HOW (append, i.e. keep old) ;; yank Subject data in body (defun get-subject () (message-field-value "Subject")) (defun yank-subject-in-body () (interactive) (message-goto-body) (insert (get-subject) "\n" ) ) (defun cite-more-or-less (more) t) (defun cite-more () (interactive) (cite-more-or-less t) ; MORE ) (defun cite-less () (interactive) (cite-more-or-less nil) ; not MORE ) (defun message-send-and-exit-current (&optional native) (interactive "P") (let ((gnus-post-method (if native 'native 'current))) (message-send-and-exit) )) ;; send everything as attachments (setq mml-content-disposition-alist '((t . "attachment"))) ;; kill message buffer (setq message-kill-buffer-query nil) (setq message-kill-buffer-on-exit t) ;; (compute-signature) (defun compute-signature () (let*((uxu-line "underground experts united .... http://user.it.uu.se/~embe8573") (blogomatic-line "Emacs Gnus Blogomatic ......... http://user.it.uu.se/~embe8573/blogomatic") (number-of-articles (number-of-blogomatic-articles)) (number-line (format "- so far: %s Blogomatic articles -" number-of-articles)) (number-line-len (length number-line)) (len-missing (- 72 number-line-len)) (pad-len (/ len-missing 2)) (pad-string (make-string pad-len ? )) (number-line-padded (format "%s%s%s" pad-string number-line pad-string)) (signature (format "%s\n%s\n%s" uxu-line blogomatic-line number-line-padded) )) (setq message-signature signature) )) (setq message-fill-column 54) (add-to-list 'auto-mode-alist '("\\.m\\'" . message-mode)) (setq message-dont-reply-to-names "\\(emanuel.berg.\\|embe\\)8573@student.uu.se") (require 'search-regexp-in-files) (defun number-of-blogomatic-articles () (length (files-as-list "~/public_html/blogomatic/**/*.html")) ) ;; headers (setq mail-header-separator "---") (setq message-subject-trailing-was-query nil) (setq message-default-headers "Mail-Copies-To: never") (setq message-default-news-headers "To: ") (setq message-default-mail-headers "Newsgroups: ") (setq message-hidden-headers ;; (setq message-hidden-headers nil) '("References" "Face" "X-Face" "X-Draft-From" "Mail-Copies-To" "From" "Gcc") ) (defun message-save-draft () (interactive) (let ((before-save-hook '(untab-all (lambda () (delete-trailing-whitespace (get-header-separator-pos) nil) )))) (save-buffer) )) (defun replace-regexp-quiet (regexp to-string start end) (save-excursion (goto-char start) (while (re-search-forward regexp end t) ; NOERROR (replace-match to-string) ))) (defun remove-empty-headers () (interactive) (goto-char (point-min)) (while (re-search-forward "\\(To\\|Newsgroups\\): \n" (get-header-separator-pos) t) ; NOERROR (replace-match "") )) (add-hook 'message-send-hook #'remove-empty-headers) (defun goto-replied-to-message () (interactive) (when (bufferp message-reply-buffer) (switch-to-buffer message-reply-buffer) )) (define-key message-mode-map "\C-oo" #'goto-replied-to-message) (let ((the-map message-mode-map)) ;; misc (define-key the-map "\C-oy" #'yank-subject-in-body) (define-key the-map "\C-ca" #'goto-replied-to-message) (define-key the-map "\C-c\C-c" #'message-send-and-exit-current) (define-key the-map "\C-x\C-s" #'message-save-draft) ;; iterate headers (define-key the-map "\t" #'next-header) (define-key the-map [backtab] #'prev-header) ) ;; (setq message-mode-hook nil) (defun message-mode-hook-f () (disable-super-global-keys) (compute-signature) ) (add-hook 'message-mode-hook #'message-mode-hook-f) (provide 'message-my)