.emacs-my
changeset 1049 154ab823d934
parent 1031 a064392620d7
parent 1048 9d671852b5c1
child 1050 3fd11f075f60
equal deleted inserted replaced
1031:a064392620d7 1049:154ab823d934
   751 (iswitchb-mode 1)
   751 (iswitchb-mode 1)
   752 (setq iswitchb-regexp t)
   752 (setq iswitchb-regexp t)
   753 (setq iswitchb-use-virtual-buffers t)
   753 (setq iswitchb-use-virtual-buffers t)
   754 (setq iswitchb-buffer-ignore
   754 (setq iswitchb-buffer-ignore
   755       '("^ "
   755       '("^ "
   756         "^\*Buffer"
   756         "^\\*Buffer"
   757         "^\*Completions\*"
   757         "^\\*Completions\\*"
   758         "^\*tramp"
   758         "^\\*tramp"
   759         "^\*Dired log\*"
   759         "^\\*Dired log\\*"
   760         "^\*Quail Completions\*"
   760         "^\\*Quail Completions\\*"
   761         "^\*Disabled Command\*"
   761         "^\\*Disabled Command\\*"
   762         "^TAGS"
   762         "^TAGS"
   763         ))
   763         ))
   764 
   764 
   765 (require 'uniquify)
   765 (require 'uniquify)
   766 (setq uniquify-buffer-name-style 'post-forward)
   766 (setq uniquify-buffer-name-style 'post-forward)
  1414   (setq fill-column 78)
  1414   (setq fill-column 78)
  1415   (turn-on-auto-fill)
  1415   (turn-on-auto-fill)
  1416   (flyspell-mode 1))
  1416   (flyspell-mode 1))
  1417 (add-hook 'message-mode-hook 'my-message-mode-hook)
  1417 (add-hook 'message-mode-hook 'my-message-mode-hook)
  1418 
  1418 
  1419 ;; Mark all send message with same domain "Message-Id" to provide for replays
  1419 ;; Mark all my messages by "common" string in "Message-Id" field to simplify
  1420 ;; to me in followups.
  1420 ;; lookup for followups to me.
  1421 (setq message-user-fqdn "gavenkoa.example.com")
  1421 (setq message-user-fqdn "gavenkoa.example.com")
  1422 
  1422 
  1423 ;; Kill message buffer after mail send. You always can use C-c C-s to preserve it.
  1423 ;; Kill message buffer after mail send. You always can use C-c C-s to preserve it.
  1424 (setq message-kill-buffer-on-exit t)
  1424 (setq message-kill-buffer-on-exit t)
  1425 
  1425 
  1471 (defun my-kill-gnus ()
  1471 (defun my-kill-gnus ()
  1472   "Kill Gnus when exiting Emacs."
  1472   "Kill Gnus when exiting Emacs."
  1473   (let ( (gnus-interactive-exit nil) )
  1473   (let ( (gnus-interactive-exit nil) )
  1474     (gnus-group-exit)
  1474     (gnus-group-exit)
  1475     ))
  1475     ))
  1476 (eval-after-load 'gnus
  1476 (eval-after-load 'gnus '(add-hook 'kill-emacs-hook 'my-kill-gnus))
  1477   '(progn
       
  1478      (add-hook 'kill-emacs-hook 'my-kill-gnus)
       
  1479      ))
       
  1480 
  1477 
  1481 (eval-after-load 'gnus-art
  1478 (eval-after-load 'gnus-art
  1482   '(progn
  1479   '(progn
  1483      (setq gnus-visible-headers (concat gnus-visible-headers "\\|^Archived-At"))
  1480      (setq gnus-visible-headers (concat gnus-visible-headers "\\|^Archived-At"))
  1484      ))
  1481      ))
  1570       '((".*"
  1567       '((".*"
  1571          (organization (getenv "ORGANIZATION"))
  1568          (organization (getenv "ORGANIZATION"))
  1572          (signature-file "~/.signature"))))
  1569          (signature-file "~/.signature"))))
  1573 
  1570 
  1574 (gnus-add-configuration
  1571 (gnus-add-configuration
  1575  '(article (vertical 1.0 (group .10 point) (summary .30 point) (article 1.0))))
  1572  '(article (vertical 1.0 (summary .30 point) (article 1.0))))
  1576 
  1573 
  1577 (setq gnus-summary-display-arrow t)
  1574 (setq gnus-summary-display-arrow t)
  1578 
  1575 
  1579 ;; `gnus-summary-line-format',
  1576 ;; `gnus-summary-line-format',
  1580 ;; `gnus-server-line-format', `gnus-topic-line-format',
  1577 ;; `gnus-server-line-format', `gnus-topic-line-format',
  1634    ))
  1631    ))
  1635 
  1632 
  1636 (setq
  1633 (setq
  1637  gnus-show-threads t
  1634  gnus-show-threads t
  1638  gnus-thread-sort-functions '(gnus-thread-sort-by-date gnus-thread-sort-by-total-score)
  1635  gnus-thread-sort-functions '(gnus-thread-sort-by-date gnus-thread-sort-by-total-score)
       
  1636  gnus-summary-thread-gathering-function 'gnus-gather-threads-by-subject
       
  1637  gnus-summary-gather-subject-limit 'fuzzy
       
  1638  gnus-thread-hide-killed t
       
  1639  gnus-thread-ignore-subject t
  1639  )
  1640  )
  1640 
  1641 
  1641 ;; gnus-summary-mark-below gnus-summary-default-score gnus-summary-default-high-score gnus-summary-default-low-score
  1642 ;; gnus-summary-mark-below gnus-summary-default-score gnus-summary-default-high-score gnus-summary-default-low-score
  1642 
  1643 
  1643 ;; Scoring.
  1644 ;; Scoring.
  1644 (setq
  1645 (setq
  1645  gnus-use-scoring t
  1646  gnus-use-scoring t
  1646  gnus-save-score t
  1647  gnus-save-score t
  1647  gnus-score-expiry-days 60
  1648  gnus-score-expiry-days 60
  1648  gnus-decay-scores t
  1649  ;; gnus-decay-scores t
  1649  gnus-score-decay-constant 3
  1650  gnus-score-decay-constant 3
  1650  )
  1651  )
  1651 
  1652 
  1652 (setq
  1653 (setq gnus-score-interactive-default-score 100)
  1653  gnus-score-interactive-default-score 100
  1654 
  1654  gnus-summary-mark-below 0
  1655 ;; These variables are local to each summary buffer and usually set by the
  1655  gnus-summary-expunge-below -40
  1656 ;; score file: gnus-summary-mark-below, gnus-summary-expunge-below, gnus-thread-expunge-below
  1656  gnus-thread-expunge-below -40)
       
  1657 
  1657 
  1658 (setq gnus-use-adaptive-scoring t)
  1658 (setq gnus-use-adaptive-scoring t)
  1659 ;; I use 100 for replay to me and 200 for essential mails, and -50 for bad mails.
  1659 ;; I use 100 for replay to me and 200 for essential mails, and -50 for bad mails.
  1660 (setq gnus-default-adaptive-score-alist
  1660 (setq gnus-default-adaptive-score-alist
  1661       '(
  1661       '(
  1673 (eval-after-load 'gnus-score
  1673 (eval-after-load 'gnus-score
  1674   '(progn
  1674   '(progn
  1675      ;; (add-hook 'message-sent-hook 'gnus-score-followup-article)
  1675      ;; (add-hook 'message-sent-hook 'gnus-score-followup-article)
  1676      (add-hook 'message-sent-hook 'gnus-score-followup-thread)
  1676      (add-hook 'message-sent-hook 'gnus-score-followup-thread)
  1677      ))
  1677      ))
       
  1678 
       
  1679 (defvar my-gnus-summary-kill-same-subject-min-len 8
       
  1680   "Minimal length of subject string to ignore this subject.")
       
  1681 (defun my-gnus-summary-kill-same-subject (&optional unmark)
       
  1682   "Add negative scores for all articles with same subject."
       
  1683   (interactive "P")
       
  1684   (when (or (not (integerp unmark)) (< 0 unmark))
       
  1685     (let ( (subj (gnus-simplify-subject-fuzzy (gnus-summary-article-subject))) )
       
  1686       (when (<= (length subj) my-gnus-summary-kill-same-subject-min-len)
       
  1687         (gnus-summary-score-entry
       
  1688          "subject" subj
       
  1689          's (- gnus-score-interactive-default-score) (current-time-string)))))
       
  1690   (gnus-summary-kill-same-subject unmark))
       
  1691 (eval-after-load 'gnus-sum
       
  1692   '(define-key gnus-summary-mode-map (kbd "C-k") #'my-gnus-summary-kill-same-subject))
  1678 
  1693 
  1679 (defun my-gnus-thread-score-function (&rest scores)
  1694 (defun my-gnus-thread-score-function (&rest scores)
  1680   "If any followup have positive score assign greater available
  1695   "If any followup have positive score assign greater available
  1681 score to thread, else assign lesser available score."
  1696 score to thread, else assign lesser available score."
  1682   (let ( (max (apply 'max scores)) (min (apply 'min scores)) )
  1697   (let ( (max (apply 'max scores)) (min (apply 'min scores)) )