From: Chris McMahan <cmcmahan@one.net>
To: Richard Riley <rileyrgdev@googlemail.com>
Cc: org-mode <emacs-orgmode@gnu.org>
Subject: Re: w3m integration for yanking w3m buffers into org
Date: Fri, 10 Oct 2008 08:45:05 -0400 [thread overview]
Message-ID: <18671.20049.293000.100499@gargle.gargle.HOWL> (raw)
In-Reply-To: <sxljwwg5wf.fsf@development.richardriley.net>
Speaking of email and org, has anyone else experienced problems with
linking to VM mail messages through remember? I have yet to get the
proper email to show up when following the links.
- Chris
Richard Riley writes:
>
>I'm not fully aware of the steps needed to integrate new stuff but for
>those using gnus and w3m to read html emails or newsletters then the
>following code might interest you for saving portions into org
>tasks/items. Let me know if there are any issues - it works well for me!
>
>I have the first code saved as manatee.el and "require" it in.
>
>r.
>
>,----
>| ;; Code to integrate the w3m article buffer in gnus with org-mode.
>| ;; Kudos to Andy Stewart (ManateeLazyCat on #emacs IRC) for provding
>| ;; the code following a request. Can now paste w3m regions showing html
>| ;; emails and newsletters directly into org-mode buffers with the URLs
>| ;; transformed into org links. There is a default M-w key binding included.
>| ;;
>| ;; manatee.el for now prior to any integration.
>| ;;
>| ;; Oct 2008, rgr.
>|
>| (defun w3m-get-buffer-with-org-style ()
>| "Get current buffer content with `org-mode' style.
>| This function will encode `link-title' and `link-location' with `org-make-link-string'.
>| And move buffer content to lastest of kill ring.
>| So you can yank in `org-mode' buffer to get `org-mode' style content."
>| (interactive)
>| (let (transform-start
>| transform-end
>| return-content
>| link-location
>| link-title)
>| (if mark-active
>| (progn
>| (setq transform-start (region-beginning))
>| (setq transform-end (region-end))
>| (deactivate-mark))
>| (progn
>| (setq transform-start (point-min))
>| (setq transform-end (point-max))))
>| (message "Start transform link to `org-mode' style, please wait...")
>| (save-excursion
>| (goto-char transform-start)
>| ;; (goto-char (point-min))
>| (while (and (< (point) transform-end)
>| (not (w3m-no-next-link-p))) ;if have next link in current buffer
>| (if (not (w3m-anchor (point))) ;don't move when current point have a valid url
>| ;; get content between two links.
>| (setq return-content (concat return-content (buffer-substring (point) (w3m-get-next-link-start)))))
>| ;; get link location at current point.
>| (setq link-location (w3m-anchor (point)))
>| ;; get link title at current point.
>| (setq link-title (buffer-substring (point) (w3m-get-anchor-end)))
>| ;; concat `org-mode' style url to `return-content'.
>| (setq return-content (concat return-content (org-make-link-string link-location link-title))))
>| ;; concat rest context of current buffer
>| (setq return-content (concat return-content (buffer-substring (point) transform-end)))
>| (kill-new return-content)
>| (message "Transform link completed. You can get it from lastest kill ring."))))
>|
>| (defun w3m-get-anchor-start ()
>| "Move and return `point' for thst start of the current anchor."
>| (interactive)
>| (goto-char (or (previous-single-property-change (point) 'w3m-anchor-sequence) ;get start position of anchor
>| (point))) ;or current point
>| (point))
>|
>| (defun w3m-get-anchor-end ()
>| "Move and return `point' after the end of current anchor."
>| (interactive)
>| (goto-char (or (next-single-property-change (point) 'w3m-anchor-sequence) ;get end position of anchor
>| (point))) ;or current point
>| (point))
>|
>| (defun w3m-get-next-link-start ()
>| "Move and return `point' for that start of the current link."
>| (interactive)
>| (catch 'reach
>| (while (next-single-property-change (point) 'w3m-anchor-sequence) ;jump to next anchor
>| (goto-char (next-single-property-change (point) 'w3m-anchor-sequence))
>| (when (w3m-anchor (point)) ;return point when current is valid link
>| (throw 'reach nil))))
>| (point))
>|
>| (defun w3m-get-prev-link-start ()
>| "Move and return `point' for that end of the current link."
>| (interactive)
>| (catch 'reach
>| (while (previous-single-property-change (point) 'w3m-anchor-sequence) ;jump to previous anchor
>| (goto-char (previous-single-property-change (point) 'w3m-anchor-sequence))
>| (when (w3m-anchor (point)) ;return point when current is valid link
>| (throw 'reach nil))))
>| (point))
>|
>|
>| (defun w3m-no-next-link-p ()
>| "Return t if no next link after cursor.
>| Otherwise, return nil."
>| (save-excursion
>| (equal (point) (w3m-get-next-link-start))))
>|
>| (defun w3m-no-prev-link-p ()
>| "Return t if no prevoius link after cursor.
>| Otherwise, return nil."
>| (save-excursion
>| (equal (point) (w3m-get-prev-link-start))))
>|
>| (define-key w3m-minor-mode-map (kbd "M-w") 'w3m-get-buffer-with-org-style)
>|
>| (provide 'manatee)
>`----
>
>
>--
>It has become appallingly obvious that our technology has exceeded our humanity. ~Albert Einstein
>
>
>_______________________________________________
>Emacs-orgmode mailing list
>Remember: use `Reply All' to send replies to the list.
>Emacs-orgmode@gnu.org
>http://lists.gnu.org/mailman/listinfo/emacs-orgmode
--
================================
Chris McMahan | cmcmahan@one.net
================================
next prev parent reply other threads:[~2008-10-10 12:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-10 9:23 w3m integration for yanking w3m buffers into org Richard Riley
2008-10-10 12:45 ` Chris McMahan [this message]
2008-10-10 14:44 ` Richard Riley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18671.20049.293000.100499@gargle.gargle.HOWL \
--to=cmcmahan@one.net \
--cc=emacs-orgmode@gnu.org \
--cc=rileyrgdev@googlemail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).