Mercurial > hg > xemacs
comparison my-news.el @ 45:65ea96008fe0
hacked up some stuff to get rid of useless safelinks.outlook... link wrappers,
acquired use-text-not-html from mail-extras
author | Henry S. Thompson <ht@inf.ed.ac.uk> |
---|---|
date | Wed, 20 Dec 2023 17:59:49 +0000 |
parents | eee08de75336 |
children | 95ba4cc6ffe4 |
comparison
equal
deleted
inserted
replaced
44:b09e8120dc53 | 45:65ea96008fe0 |
---|---|
388 | 388 |
389 (defun message-mode-fun1 () | 389 (defun message-mode-fun1 () |
390 (define-key message-mode-map [(control meta q)] 'add-quaker) | 390 (define-key message-mode-map [(control meta q)] 'add-quaker) |
391 (remove-hook 'message-mode-hook 'message-mode-fun1)) | 391 (remove-hook 'message-mode-hook 'message-mode-fun1)) |
392 | 392 |
393 (defvar ht-gnus-just-read nil) | |
394 | |
395 (defun ht-catchup-and-next-unseen () | 393 (defun ht-catchup-and-next-unseen () |
396 (interactive) | 394 (interactive) |
397 (when (gnus-summary-catchup nil t nil 'fast) | 395 (when (gnus-summary-catchup nil t nil 'fast) |
398 (gnus-summary-exit) | 396 (gnus-summary-exit) |
399 (previous-line 1) | 397 (previous-line 1) |
409 (ht-read-group-unseen-only))))) | 407 (ht-read-group-unseen-only))))) |
410 | 408 |
411 (defun ht-gnus-pers-refresh (n) | 409 (defun ht-gnus-pers-refresh (n) |
412 (interactive "p") | 410 (interactive "p") |
413 (let ((gn (concat "nnml+ht:pers-" | 411 (let ((gn (concat "nnml+ht:pers-" |
414 (format-time-string "%Y-%m" (current-time))))) | 412 (format-time-string "%Y-%m" (current-time)))) |
413 (jr ht-gnus-just-read)) | |
415 (gnus-group-get-new-news) | 414 (gnus-group-get-new-news) |
416 (let ((nn (gnus-number-of-unseen-articles-in-group gn))) | 415 (let ((nn (gnus-number-of-unseen-articles-in-group gn))) |
417 (gnus-group-goto-group gn) | 416 (gnus-group-goto-group gn) |
418 (cond | 417 (cond |
419 ((> nn 0) | 418 ((> nn 0) |
424 (goto-char (point-max)) | 423 (goto-char (point-max)) |
425 (previous-line 1)))) | 424 (previous-line 1)))) |
426 (gnus-group-read-group nil t))) | 425 (gnus-group-read-group nil t))) |
427 (t (goto-char (point-min)) | 426 (t (goto-char (point-min)) |
428 (ht-next-with-unseen 1)))) | 427 (ht-next-with-unseen 1)))) |
429 (message "%s" ht-gnus-just-read)) | 428 (message "read: %s" ht-gnus-just-read) |
430 ) | 429 )) |
431 | 430 |
432 (defun no-select () | 431 (defun no-select () |
433 (if (member gnus-newsgroup-name no-select-groups) | 432 (if (member gnus-newsgroup-name no-select-groups) |
434 (progn (make-variable-buffer-local 'gnus-auto-select-first) | 433 (progn (make-variable-buffer-local 'gnus-auto-select-first) |
435 (setq gnus-auto-select-first nil)))) | 434 (setq gnus-auto-select-first nil)))) |
663 (gnus-number-of-unseen-articles-in-group (gnus-group-group-name)))) | 662 (gnus-number-of-unseen-articles-in-group (gnus-group-group-name)))) |
664 | 663 |
665 (defun ht-previous-with-unseen (n) | 664 (defun ht-previous-with-unseen (n) |
666 (interactive "p") | 665 (interactive "p") |
667 (ht-next-with-unseen (- n))) | 666 (ht-next-with-unseen (- n))) |
668 | |
669 (defun ht-gnus-note-save-to-group () | |
670 (let ((g (caar group-art))) | |
671 (if (not (member g ht-gnus-just-read)) | |
672 (setq ht-gnus-just-read (cons g ht-gnus-just-read))))) | |
673 | 667 |
674 (defvar ht-stash-directory (concat my-mail-dir "/stash/")) | 668 (defvar ht-stash-directory (concat my-mail-dir "/stash/")) |
675 | 669 |
676 (defun ht-save-part (handle n) | 670 (defun ht-save-part (handle n) |
677 (let ((sup-type (mm-handle-media-supertype handle)) | 671 (let ((sup-type (mm-handle-media-supertype handle)) |
789 (if (not (fboundp 'orig-message-send-and-exit)) | 783 (if (not (fboundp 'orig-message-send-and-exit)) |
790 (progn | 784 (progn |
791 (fset 'orig-message-send-and-exit (symbol-function 'message-send-and-exit)) | 785 (fset 'orig-message-send-and-exit (symbol-function 'message-send-and-exit)) |
792 (fset 'message-send-and-exit (symbol-function 'my-message-send-and-exit)))) | 786 (fset 'message-send-and-exit (symbol-function 'my-message-send-and-exit)))) |
793 | 787 |
788 ;; see message-citation-line-function in message.el | |
789 (defun safe-citation () | |
790 (use-text-not-html) | |
791 (when message-reply-headers | |
792 (let ((from (mail-header-from message-reply-headers))) | |
793 (cond ((string-match "^\"?\\([^\"]*\\)\"? <.*>$" from) | |
794 (insert (match-string 1 from) " writes:\n\n")) | |
795 ((string-match "^\\([^<@]*\\)@" from) | |
796 (insert (match-string 1 from) " writes:\n\n")) | |
797 (t | |
798 (insert "[anon] writes:\n\n")))))) | |
799 | |
800 (defun use-text-not-html (&optional clear) | |
801 (when (and (if clear (looking-at "<html") | |
802 (looking-at "> <html")) | |
803 (bufferp (get-buffer "*Shell Command Output*"))) | |
804 ;; replace HTML only with result of my HTML filter | |
805 (delete-region (point)(mark t)) | |
806 (insert-buffer "*Shell Command Output*") | |
807 (when (looking-at "piping") | |
808 (kill-entire-line) | |
809 (indent-rigidly (point) (mark t) -3) | |
810 (if (not clear) | |
811 (submerge-region (point) (mark t))))) | |
812 ) | |
813 | |
814 (setq message-citation-line-function (function safe-citation)) | |
815 | |
816 | |
817 (defvar safelink_pat "https://[a-z0-9.]*safelinks.protection.outlook.com/\\?url=\\(https?%3A%2F%2F[^&<>\"]*\\)[^\"<> ]*") | |
818 | |
819 (require 'url) | |
820 | |
821 (defvar url-ok-chars (nconc | |
822 '(?/ ?& ?% ?+ ?? ?= ?: ?; | |
823 ?# | |
824 ) | |
825 url-unreserved-chars)) | |
826 | |
827 (defun unsafelink () | |
828 ;; Thanks to Iain Murray for | |
829 ;; /public/homepages/imurray2/web/code/hacks/unsafelink | |
830 (let ((url-unreserved-chars url-ok-chars)) | |
831 (while (re-search-forward safelink_pat nil t) | |
832 (let ((res (match-string 1))) | |
833 (replace-match "") | |
834 ;; unhexify uses regex, so trashes match-string :-( | |
835 (insert (url-hexify-string (url-unhex-string res))) | |
836 )) | |
837 )) | |
838 | |
839 (add-hook 'gnus-article-prepare-hook 'unsafelink) | |
840 | |
794 (provide 'my-news) | 841 (provide 'my-news) |