5

muttからgnusに切り替えて、メールからURLを抽出し、特定のメールのすべてのURLを含む新しいバッファーを起動できるようにしたいと思います。Urlviewは、私が探しているものの参照フレームとして、muttに対してこれを行います。

4

2 に答える 2

2

私は次のように書き、いくつかの記事で動作するようにテストしました。多分それはあなたにとって良い出発点になるでしょう。

(defun gnus-article-extract-url-into-buffer ()
  (interactive)
  (let ((simple-url-regexp "https?://")
        urls)
    (save-excursion
    ;; collect text URLs
        (while (search-forward-regexp simple-url-regexp nil t)
          (when-let (url (thing-at-point 'url))
            (setq urls (cons url urls))))
        (beginning-of-buffer)
    ;; collect widget URLs
        (while (not (eobp)) 
          (goto-char (next-overlay-change (point)))
          (when-let (link (get-text-property (point) 'gnus-string))
            (and (string-match simple-url-regexp link)
                 (setq urls (cons link urls))))
          (goto-char (next-overlay-change (point)))))
    (when urls
      (switch-to-buffer-other-window "*gnus-article-urls*")
      (dolist (url urls)
        (insert url))
      (beginning-of-buffer))))

これが記事のバッファ内から実行されることを意図していることを明確にする必要があります。また、URL を含む新しいバッファを起動することについてあなたが言ったことをそのまま受け取って、ポイントを逃した可能性があります。その場合、最後の形式を次のように変更できます。

(when urls
  (dolist (url urls)
    (browse-url url)))

または、ウィジェットの URL を解析する必要がない場合は、Tyler のアプローチの方が簡単です。

于 2011-02-13T05:24:03.297 に答える
1

私はその機能が組み込まれているとは思わない。次のコードは、あなたが望むことを行います。要約バッファーから、Mx urlview を呼び出すか、それを便利なキーにバインドします。save-excursion ラッパーは要約バッファーに戻す必要がありますが、何らかの理由でアーティクル バッファーに残ります。h キーを押すだけで元に戻りますが、そうする必要はありません。多分他の誰かがその部分を明確にすることができますか?

(defun urlview ()
  (interactive)
  (save-excursion
    (gnus-summary-select-article-buffer)
    (beginning-of-buffer)
    (while
    (re-search-forward "https?://" nil t)
      (browse-url-at-point))))

編集: ジョセフの答えは、私が見落としていた http と https の両方で機能します。だから私は彼のコードのその部分をスワイプしました。

于 2011-02-13T05:50:27.060 に答える