diff options
-rw-r--r-- | .emacs.d/init.el | 46 | ||||
-rw-r--r-- | .emacs.d/lisp/bandali-gnus.el | 9 | ||||
-rw-r--r-- | .emacs.d/lisp/bandali-message.el | 34 | ||||
-rw-r--r-- | .emacs.d/lisp/gnus-article-treat-patch.el | 465 |
4 files changed, 4 insertions, 550 deletions
diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 29bfbcc..390be17 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -615,36 +615,6 @@ Make N (default: 1) copies of the current line or region." (require 'bandali-ibuffer) -;; outline -;; (with-eval-after-load 'outline -;; (when (featurep 'which-key) -;; (which-key-add-key-based-replacements -;; "C-c @" "outline" -;; "s-O" "outline")) -;; (define-key outline-minor-mode-map (kbd "<s-tab>") -;; #'outline-toggle-children) -;; (define-key outline-minor-mode-map (kbd "M-p") -;; #'outline-previous-visible-heading) -;; (define-key outline-minor-mode-map (kbd "M-n") -;; #'outline-next-visible-heading) -;; (defvar b/outline-prefix-map) -;; (define-prefix-command 'b/outline-prefix-map) -;; (define-key outline-minor-mode-map (kbd "s-O") -;; 'b/outline-prefix-map) -;; (define-key b/outline-prefix-map (kbd "TAB") -;; #'outline-toggle-children) -;; (define-key b/outline-prefix-map (kbd "a") -;; #'outline-hide-body) -;; (define-key b/outline-prefix-map (kbd "H") -;; #'outline-hide-body) -;; (define-key b/outline-prefix-map (kbd "S") -;; #'outline-show-all) -;; (define-key b/outline-prefix-map (kbd "h") -;; #'outline-hide-subtree) -;; (define-key b/outline-prefix-map (kbd "s") -;; #'outline-show-subtree)) -;; (add-hook 'prog-mode-hook #'outline-minor-mode) - (require 'bandali-dired) (with-eval-after-load 'help @@ -740,19 +710,6 @@ Make N (default: 1) copies of the current line or region." (with-eval-after-load 'flyspell (csetq flyspell-mode-line-string " fly")) -;; flycheck -;; (run-with-idle-timer 0.6 nil #'require 'flycheck) -;; (with-eval-after-load 'flycheck -;; (csetq -;; ;; Use the load-path from running Emacs when checking elisp files -;; flycheck-emacs-lisp-load-path 'inherit -;; ;; Only flycheck when I actually save the buffer -;; flycheck-check-syntax-automatically '(mode-enabled save) -;; flycheck-mode-line-prefix "flyc")) -;; (define-key flycheck-mode-map (kbd "M-P") #'flycheck-previous-error) -;; (define-key flycheck-mode-map (kbd "M-N") #'flycheck-next-error) -;; (add-hook 'prog-mode-hook #'flycheck-mode) - ;; ispell ;; http://endlessparentheses.com/ispell-and-apostrophes.html ;; (run-with-idle-timer 0.6 nil #'require 'ispell) @@ -832,9 +789,6 @@ Make N (default: 1) copies of the current line or region." (with-eval-after-load 'css-mode (csetq css-indent-offset 2)) -;; po-mode -;; (add-hook 'po-mode-hook (lambda nil (run-with-timer 0.1 nil 'View-exit))) - ;; auctex ;; (csetq font-latex-fontify-sectioning 'color) diff --git a/.emacs.d/lisp/bandali-gnus.el b/.emacs.d/lisp/bandali-gnus.el index d26e4f9..89da030 100644 --- a/.emacs.d/lisp/bandali-gnus.el +++ b/.emacs.d/lisp/bandali-gnus.el @@ -345,9 +345,6 @@ jami:bandali") (with-eval-after-load 'gnus-dired (add-hook 'dired-mode-hook 'gnus-dired-mode)) -;; (with-eval-after-load 'gnus-utils -;; (csetq gnus-completing-read-function 'gnus-ido-completing-read)) - (with-eval-after-load 'mm-decode (csetq mm-discouraged-alternatives '("text/html" "text/richtext") mm-decrypt-option 'known @@ -363,11 +360,5 @@ jami:bandali") (csetq mml-secure-openpgp-encrypt-to-self t mml-secure-openpgp-sign-with-sender t)) -;; (require 'gnus-article-treat-patch) -;; ;; note: be sure to customize faces with `:foreground "white"' when -;; ;; using a theme with a white/light background :) -;; (setq ft/gnus-article-patch-conditions -;; '("^@@ -[0-9]+,[0-9]+ \\+[0-9]+,[0-9]+ @@")) - (provide 'bandali-gnus) ;;; bandali-gnus.el ends here diff --git a/.emacs.d/lisp/bandali-message.el b/.emacs.d/lisp/bandali-message.el index e7a0fa4..5ec7eac 100644 --- a/.emacs.d/lisp/bandali-message.el +++ b/.emacs.d/lisp/bandali-message.el @@ -69,13 +69,10 @@ ;; ((t (:foreground "#333" :weight normal)))) ;; footnote - (with-eval-after-load 'footnote - ;; (csetq footnote-start-tag "" - ;; footnote-end-tag "" - ;; footnote-style 'unicode) - (when (featurep 'which-key) - (which-key-add-major-mode-key-based-replacements 'message-mode - "C-c f n" "footnote"))) + ;; (with-eval-after-load 'footnote + ;; (csetq footnote-start-tag "" + ;; footnote-end-tag "" + ;; footnote-style 'unicode)) ;; orgalist (add-hook 'message-mode-hook @@ -129,30 +126,7 @@ non-nil." (add-hook 'message-mode-hook #'flyspell-mode) (add-hook 'message-mode-hook (lambda () - ;; (setq-local fill-column b/fill-column - ;; message-fill-column b/fill-column) - (eval-when-compile (defvar company-idle-delay)) - (make-local-variable 'company-idle-delay) - (setq company-idle-delay 0.2))) -(add-hook 'message-mode-hook - (lambda () (local-unset-key (kbd "C-c C-s")))) -;; (with-eval-after-load 'message-x -;; (csetq -;; message-x-completion-alist -;; '(("\\([rR]esent-\\|[rR]eply-\\)?[tT]o:\\|[bB]?[cC][cC]:" -;; . gnus-harvest-find-address) -;; ((if -;; (boundp -;; (quote message-newgroups-header-regexp)) -;; message-newgroups-header-regexp message-newsgroups-header-regexp) -;; . message-expand-group)))) - -;; (require 'gnus-harvest) -;; (if (featurep 'message-x) -;; (gnus-harvest-install 'message-x) -;; (gnus-harvest-install)) - (provide 'bandali-message) ;;; bandali-message.el ends here diff --git a/.emacs.d/lisp/gnus-article-treat-patch.el b/.emacs.d/lisp/gnus-article-treat-patch.el deleted file mode 100644 index f2f5c21..0000000 --- a/.emacs.d/lisp/gnus-article-treat-patch.el +++ /dev/null @@ -1,465 +0,0 @@ -;;; gnus-article-treat-patch.el --- Highlight inline patches in articles -;; -;; Copyright © 2011-2019 Frank Terbeck <ft@bewatermyfriend.org> -;; -;; This file is not part of GNU Emacs. -;; -;; This file is free software; you can redistribute it and/or modify it under -;; the terms of the GNU General Public License as published by the Free Soft- -;; ware Foundation; either version 3, or (at your option) any later version. -;; -;; This file is distributed in the hope that it will be useful, but WITHOUT ANY -;; WARRANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR -;; A PARTICULAR PURPOSE. See the GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License along with -;; this file. If not, see <http://www.gnu.org/licenses/>. -;; -;; -;;; Commentary: -;; -;; Gnus addon to beautify patch-like emails. This uses a "ft/" prefix for -;; everything to avoid clashing with anything upstream. That prefix can be -;; savely s,ft/,,'d - if this is to be submitted to the gnus developers. - -(require 'diff-mode) - -(add-hook 'gnus-part-display-hook 'ft/gnus-article-treat-patch) - -;; Colour handling and faces -(defun ft/gnus-colour-line (use-face) - "Set text overlay to `use-face' for the current line." - (overlay-put (make-overlay (point-at-bol) (point-at-eol)) 'face use-face)) - -(make-face 'ft/gnus-three-dashes) -(set-face-attribute 'ft/gnus-three-dashes nil :foreground "brightblue") -(make-face 'ft/gnus-scissors) -(set-face-attribute 'ft/gnus-scissors nil :foreground "brown") -(make-face 'ft/gnus-diff-index) -(set-face-attribute 'ft/gnus-diff-index nil :foreground "brightmagenta") -(make-face 'ft/gnus-diff-hunk) -(set-face-attribute 'ft/gnus-diff-hunk nil :foreground "brightblue") -(make-face 'ft/gnus-diff-equals) -(set-face-attribute 'ft/gnus-diff-equals nil :foreground "brightmagenta") -(make-face 'ft/gnus-commit-message) -(set-face-attribute 'ft/gnus-commit-message nil :foreground "white") -(make-face 'ft/gnus-diff-stat-file) -(set-face-attribute 'ft/gnus-diff-stat-file nil :foreground "yellow") -(make-face 'ft/gnus-diff-stat-bar) -(set-face-attribute 'ft/gnus-diff-stat-bar nil :foreground "magenta") -(make-face 'ft/gnus-diff-stat-num) -(set-face-attribute 'ft/gnus-diff-stat-num nil :foreground "white") -(make-face 'ft/gnus-diff-misc) -(set-face-attribute 'ft/gnus-diff-misc nil :foreground "magenta") -(make-face 'ft/gnus-commit-comment) -(set-face-attribute 'ft/gnus-commit-comment nil :inherit 'default) -(make-face 'ft/gnus-diff-header) -(set-face-attribute 'ft/gnus-diff-header nil :inherit 'diff-header) -(make-face 'ft/gnus-diff-add) -(set-face-attribute 'ft/gnus-diff-add nil :inherit 'diff-added) -(make-face 'ft/gnus-diff-remove) -(set-face-attribute 'ft/gnus-diff-remove nil :inherit 'diff-removed) - -;; Pseudo-headers -(defvar ft/gnus-article-patch-pseudo-headers - '(("^Acked-by: " 'gnus-header-name 'gnus-header-from) - ("^C\\(c\\|C\\): " 'gnus-header-name 'gnus-header-from) - ("^From: " 'gnus-header-name 'gnus-header-from) - ("^Link: " 'gnus-header-name 'gnus-header-from) - ("^Reported-by: " 'gnus-header-name 'gnus-header-from) - ("^Reviewed-by: " 'gnus-header-name 'gnus-header-from) - ("^Signed-off-by: " 'gnus-header-name 'gnus-header-from) - ("^Subject: " 'gnus-header-name 'gnus-header-from) - ("^Suggested-by: " 'gnus-header-name 'gnus-header-from)) - "List of lists of regular expressions (with two face names) -which are used to determine the highlighting of pseudo headers in -the commit message (such as \"Signed-off-by:\"). - -The first face if used to highlight the header's name; the second -highlights the header's value.") - -(defun ft/gnus-pseudo-header-get (line) - "Check if `line' is a pseudo header, and if so return its enty in -`ft/gnus-article-patch-pseudo-headers'." - (catch 'done - (dolist (entry ft/gnus-article-patch-pseudo-headers) - (let ((regex (car entry))) - (if (string-match regex line) - (throw 'done entry)))) - (throw 'done '()))) - -(defun ft/gnus-pseudo-header-p (line) - "Returns `t' if `line' looks like a pseudo-header; `nil' otherwise. - -`ft/gnus-article-patch-pseudo-headers' is used to determine what a pseudo-header -is." - (if (eq (ft/gnus-pseudo-header-get line) '()) nil t)) - -(defun ft/gnus-pseudo-header-colour (line) - "Colourise a pseudo-header line." - (let ((data (ft/gnus-pseudo-header-get line))) - (if (eq data '()) - nil - (let* ((s (point-at-bol)) - (e (point-at-eol)) - (colon (re-search-forward ":")) - (value (+ colon 1))) - (overlay-put (make-overlay s colon) 'face (nth 1 data)) - (overlay-put (make-overlay value e) 'face (nth 2 data)))))) - -;; diff-stat -(defun ft/gnus-diff-stat-colour (line) - "Colourise a diff-stat line." - (let ((s (point-at-bol)) - (e (point-at-eol)) - (bar (- (re-search-forward "|") 1)) - (num (- (re-search-forward "[0-9]") 1)) - (pm (- (re-search-forward "\\([+-]\\|$\\)") 1))) - - (overlay-put (make-overlay s (- bar 1)) 'face 'ft/gnus-diff-stat-file) - (overlay-put (make-overlay bar (+ bar 1)) 'face 'ft/gnus-diff-stat-bar) - (overlay-put (make-overlay num pm) 'face 'ft/gnus-diff-stat-num) - - (goto-char pm) - (let* ((plus (looking-at "\\+")) - (regex (if plus "-+" "\\++")) - (brk (if plus - (re-search-forward "-" e t) - (re-search-forward "\\+" e t))) - (first-face (if plus 'ft/gnus-diff-add 'ft/gnus-diff-remove)) - (second-face (if plus 'ft/gnus-diff-remove 'ft/gnus-diff-add))) - - (if (eq brk nil) - (overlay-put (make-overlay pm e) 'face first-face) - (progn - (setq brk (- brk 1)) - (overlay-put (make-overlay pm brk) 'face first-face) - (overlay-put (make-overlay brk e) 'face second-face)))))) - -(defun ft/gnus-diff-stat-summary-colour (line) - "Colourise a diff-stat summary-line." - (let* ((e (point-at-eol)) - (plus (- (re-search-forward "(\\+)" e t) 2)) - (minus (- (re-search-forward "(-)" e t) 2))) - (overlay-put (make-overlay plus (+ plus 1)) 'face 'ft/gnus-diff-add) - (overlay-put (make-overlay minus (+ minus 1)) 'face 'ft/gnus-diff-remove))) - -(defun ft/gnus-diff-stat-line-p (line) - "Return `t' if `line' is a diff-stat line; `nil' otherwise." - (string-match "^ *[^ ]+[^|]+| +[0-9]+\\( *\\| +[+-]+\\)$" line)) - -(defun ft/gnus-diff-stat-summary-p (line) - "Return `t' if `line' is a diff-stat summary-line; `nil' otherwise." - (string-match "^ *[0-9]+ file\\(s\\|\\) changed,.*insertion.*deletion" line)) - -;; unified-diffs -(defun ft/gnus-diff-header-p (line) - "Returns `t' if `line' looks like a diff-header; `nil' otherwise." - (cond - ((string-match "^\\(\\+\\+\\+\\|---\\) " line) t) - ((string-match "^diff -" line) t) - (t nil))) - -(defun ft/gnus-index-line-p (line) - "Returns `t' if `line' looks like an index-line; `nil' otherwise." - (cond - ((string-match "^Index: " line) t) - ((string-match "^index [0-9a-f]+\\.\\.[0-9a-f]+" line) t) - (t nil))) - -(defun ft/gnus-hunk-line-p (line) - "Returns `t' if `line' looks like a hunk-line; `nil' otherwise." - (string-match "^@@ -[0-9]+,[0-9]+ \\+[0-9]+,[0-9]+ @@" line)) - -(defun ft/gnus-atp-misc-diff-p (line) - "Return `t' if `line' is a \"misc line\" with respect to patch -treatment; `nil' otherwise." - (let ((patterns '("^new file" - "^RCS file:" - "^retrieving revision "))) - (catch 'done - (dolist (regex patterns) - (if (string-match regex line) - (throw 'done t))) - (throw 'done nil)))) - -(defun ft/gnus-atp-looks-like-diff (line) - "Return `t' if `line' looks remotely like a line from a unified -diff; `nil' otherwise." - (or (ft/gnus-index-line-p line) - (ft/gnus-diff-header-p line) - (ft/gnus-hunk-line-p line))) - -;; miscellaneous line handlers -(defun ft/gnus-scissors-line-p (line) - "Returns `t' if `line' looks like a scissors-line; `nil' otherwise." - (cond - ((string-match "^\\( *--* *\\(8<\\|>8\\)\\)+ *-* *$" line) t) - (t nil))) - -;; Patch mail detection -(defvar ft/gnus-article-patch-conditions nil - "List of conditions that will enable patch treatment. String -values will be matched as regular expressions within the currently -processed part. Non-string value are supposed to be code fragments, -which determine whether or not to do treatment: The code needs to -return `t' if treatment is wanted.") - -(defun ft/gnus-part-want-patch-treatment () - "Run through `ft/gnus-article-patch-conditions' to determine whether -patch treatment is wanted or not. Return `t' or `nil' accordingly." - (catch 'done - (dolist (entry ft/gnus-article-patch-conditions) - (cond - ((stringp entry) - (if (re-search-forward entry nil t) - (throw 'done t))) - (t - (if (eval entry) - (throw 'done t))))) - (throw 'done nil))) - - -;; The actual article treatment code -(defun ft/gnus-article-treat-patch-state-machine () - "Implement the state machine which colourises a part of an article -if it looks patch-like. - -The state machine works like this: - - 0a. The machinery starts at the first line of the article's body. Not - the header lines. We don't care about header lines at all. - - 0b. The whole thing works line by line. It doesn't do any forward or - backward looks. - - 1. Initially, we assume, that what we'll see first is part of the - patch's commit-message. Hence this first initial state is - \"commit-message\". There are several ways out of this state: - - a) a scissors line is found (see 2.) - b) a pseudo-header line is found (see 3.) - c) a three-dashes line is found (see 4.) - d) something that looks like the start of a unified diff is - found (see 7.) - - 2. A scissors line is something that looks like a pair of scissors running - through a piece of paper. Like this: - - ------ 8< ----- 8< ------ - - or this: - - ------------>8----------- - - The function `ft/gnus-scissors-line-p' decides whether a line is a - scissors line or not. After a scissors line was treated, the machine - will switch back to the \"commit-mesage\" state. - - 3. This is very similar to a scissors line. It'll just return to the old - state after its being done. The `ft/gnus-pseudo-header-p' function - decides if a line is a pseudo header. The line will be appropriately - coloured. - - 4. A three-dashes line is a line that looks like this: \"---\". It's the - definite end of the \"commit-message\" state. The three dashes line is - coloured and the state switches to \"commit-comment\". (See 5.) - - 5. Nothing in \"commit-comment\" will appear in the generated commit (this - is git-am specific semantics, but it's useful, so...). It may contain - things like random comments or - promimently - a diff stat. (See 6.) - - 6. A diff stat provides statistics about how much changed in a given commit - by files and by whole commit (in a summary line). Two functions - `ft/gnus-diff-stat-line-p' and `ft/gnus-diff-stat-summary-p' decide if a - line belongs to a diff stat. It's coloured appropriately and the state - switches back to \"commit-comment\". - - 7. There is a function `ft/gnus-unified-diff-line-p' which will cause the - state to switch to \"unified-diff\" state from either \"commit-message\" - or \"commit-comment\". In this mode there can be a set of lines types: - - a) diff-header lines (`ft/gnus-diff-header-p') - b) index lines (`ft/gnus-index-line-p') - c) hunk lines (`ft/gnus-hunk-line-p') - d) equals line (\"^==*$\") - e) context lines (\"^ \") - f) add lines (\"^\\+\") - g) remove lines (\"^-\") - h) empty lines (\"^$\") - - This state runs until the end of the part." - (catch 'ft/gnus-atp-done - (let ((state 'commit-message) - line do-not-move) - - (while t - ;; Put the current line into an easy-to-handle string variable. - (setq line - (buffer-substring-no-properties (point-at-bol) (point-at-eol))) - (setq do-not-move nil) - - ;; Switched state machine. The "real" states are `commit-message', - ;; `commit-comment' and `unified-diff'. The other "states" are only - ;; single-line colourisations that return to their respective parent- - ;; state. Each state may (throw 'ft/gnus-atp-done) to leave the state- - ;; machine immediately. - (setq state - (cond - - ((eq state 'commit-message) - (cond - ((ft/gnus-scissors-line-p line) - (ft/gnus-colour-line 'ft/gnus-scissors) - 'commit-message) - ((ft/gnus-pseudo-header-p line) - (ft/gnus-pseudo-header-colour line) - 'commit-message) - ((string= line "---") - (ft/gnus-colour-line 'ft/gnus-three-dashes) - 'commit-comment) - ((ft/gnus-atp-looks-like-diff line) - (setq do-not-move t) - 'unified-diff) - (t - (ft/gnus-colour-line 'ft/gnus-commit-message) - 'commit-message))) - - ((eq state 'commit-comment) - (cond - ((ft/gnus-diff-stat-line-p line) - (ft/gnus-diff-stat-colour line) - 'commit-comment) - ((ft/gnus-diff-stat-summary-p line) - (ft/gnus-diff-stat-summary-colour line) - 'commit-comment) - ((ft/gnus-atp-looks-like-diff line) - (setq do-not-move t) - 'unified-diff) - (t - (ft/gnus-colour-line 'ft/gnus-commit-comment) - 'commit-comment))) - - ((eq state 'unified-diff) - (cond - ((ft/gnus-diff-header-p line) - (ft/gnus-colour-line 'ft/gnus-diff-header) - 'unified-diff) - ((ft/gnus-index-line-p line) - (ft/gnus-colour-line 'ft/gnus-diff-index) - 'unified-diff) - ((ft/gnus-hunk-line-p line) - (ft/gnus-colour-line 'ft/gnus-diff-hunk) - 'unified-diff) - ((string-match "^==*$" line) - (ft/gnus-colour-line 'ft/gnus-diff-equals) - 'unified-diff) - ((string-match "^$" line) - 'unified-diff) - ((string-match "^ " line) - (ft/gnus-colour-line 'ft/gnus-diff-context) - 'unified-diff) - ((ft/gnus-atp-misc-diff-p line) - (ft/gnus-colour-line 'ft/gnus-diff-misc) - 'unified-diff) - ((string-match "^\\+" line) - (ft/gnus-colour-line 'ft/gnus-diff-add) - 'unified-diff) - ((string-match "^-" line) - (ft/gnus-colour-line 'ft/gnus-diff-remove) - 'unified-diff) - (t 'unified-diff))))) - - (if (not do-not-move) - (if (> (forward-line) 0) - (throw 'ft/gnus-atp-done t))))))) - -(defun ft/gnus-article-treat-patch () - "Highlight mail parts, that look like patches (well, usually -they *are* patches - or possibly, when you take git's format-patch output, -entire commit exports - including comments). This treatment assumes the -use of unified diffs. Here is how it works: - -The most fancy type of patch mails look like this: - - From: ... - Subject: ... - Other-Headers: ... - - Body text, which can be reflecting the commit message but may - optionally be followed by a so called scissors line, which - looks like this (in case of a scissors line, the text above is - not part of the commit message): - - -------8<---------- - - If there really was a scissors line, then it's usually - followed by repeated mail-headers. Which do not *have* to - be the same as the one from the sender. - - From: ... - Subject: ... - - More text. Usually part of the commit message. Likely - multiline. What follows may be an optional diffstat. If - there is one, it's usually preceded by a line that contains - only three dashes and nothing more. Before the diffstat, - however, there may be a set of pseudo headers again, like - these: - - Acked-by: Mike Dev <md@other.tld> - Signed-off-by: Joe D. User <jdu@example.com> - - --- - ChangeLog | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletions(-) - - Now, there is again room for optional text, which is not - part of the actual commit message. May be multiline. Actually, - anything between the three-dashes line and the diff content - is ignored as far as the commit message goes. - - Now for the actual diff part. I want this to work for as - many unified diff formats as possible. What comes to mind - is the format used by git and the format used by cvs and - quilt. - - CVS style looks like this: - - Index: foo/bar.c - ============================================================ - --- boo.orig/foo/bar.c 2010-02-24 .... - +++ boo/foo/bar.c 2010-02-28 .... - @@ -1823,7 +1823,7 @@ - <hunk> - - There may be multiple hunks. Each file gets an \"Index:\" and - equals line. Now the git format looks like this: - - diff --git a/ChangeLog b/ChangeLog - index 6ffbc8c..36e5c17 100644 - --- a/ChangeLog - +++ b/ChangeLog - @@ -3,6 +3,9 @@ - <hunk> - - Again, there may be multiple hunks. - - When all hunks and all files are done, there may be additional - text below the actual text. - -And that's it. - -You may define the look of several things: pseudo headers, scissor -lines, three-dashes-line, equals lines, diffstat lines, diffstat -summary. Then there is added lines, removed lines, context lines, -diff-header lines and diff-file-header lines, for which we are -borrowing the highlighting faces for from `diff-mode'." - (if (ft/gnus-part-want-patch-treatment) - (save-excursion - (progn - (let ((inhibit-read-only t)) - (goto-char (point-min)) - (ft/gnus-article-treat-patch-state-machine)))))) - -(provide 'gnus-article-treat-patch) |