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