info-gnus-english
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Strip signature on reply without standard separator


From: Emanuel Berg
Subject: Re: Strip signature on reply without standard separator
Date: Sun, 04 Sep 2022 04:04:42 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)

Satoshi Yoshida wrote:

> Add to .emacs
>
> (autoload 'mu-cite-original "mu-cite" nil t)
> (setq message-cite-function #'mu-cite-original)
>
> Add to .gnus.el
>
> (setq mu-cite-prefix-format '("> "))
> (setq mu-cite-cited-prefix-regexp "\\(^[^[:blank:]\n<>]+>+[[:blank:]]*\
> \\)")
> (setq mu-cite-top-format '(from " writes:\n\n"))
> (add-hook 'mu-cite-post-cite-hook
>           (lambda ()
>             (save-excursion
>               (goto-char (point-min))
>               (replace-regexp "^\n-- \n\\(.*\n\\)*" "")
>               (goto-char (point-min))
>               (replace-regexp "^\\([^[:blank:]\n<>]+>.*\\)" "> \\1")
>               (goto-char (point-min))
>               (replace-regexp "^\\([^\n>].+\n\n\\)\\(>[[:blank:]]+\n\
> \\)+" "\\1")
>               (goto-char (point-min))
>               (replace-regexp "^> >" ">>")
>               (goto-char (point-min))
>               (replace-regexp "^> -- .*\n\\(>.*\n\\)*" "")
>               (goto-char (point-min))
>               (replace-regexp "^\\(>[[:blank:]]+\n\\)+> \\(best\
> \\( regards\\| wishes\\)?\\|cheers\\|\\(good\\)?bye\\|good luck\
> \\|\\(kind \\|warm\\(est\\)? \\)?regards\\|respectfully\\|\
> \\(yours \\)?sincerely\\( yours\\)?\\|thank you\\( very much\\)?\
> \\|\\(many \\)?thanks\\( in advance\\| very much\\)?\
> \\),[[:blank:]]*\n\\(>.*\n\\)*" "")
>               (goto-char (point-min))
>               (replace-regexp "^\\(>[[:blank:]]+\n\\)+> [[:blank:]]*\
> \\(-+[[:blank:]]*\\)?[[:alpha:]]+[[:blank:]]*\n\\(>[[:blank:]]+\n\
> \\)*\\'" "")
>               (goto-char (point-min))
>               (replace-regexp "^\\(>[>[:blank:]]+\n\\)+\\'" "")
>               (ignore-errors
>                 (goto-char (point-max))
>                 (insert-file-contents "~/.signature")
>                 (insert "\n-- \n"))
>               (goto-line 1)
>               (delete-blank-lines)
>               (set-window-start () 1))))

For modular, idiomatic Elisp the TODO list would be:

1. Split into functions with names that explain what they do.

2. Instead of `replace-regexp', use

   (while (re-search-forward RE nil t)
     (replace-match STR) )

See the docstrings for those three functions.

-- 
underground experts united
https://dataswamp.org/~incal




reply via email to

[Prev in Thread] Current Thread [Next in Thread]