* w3m integration for yanking w3m buffers into org
@ 2008-10-10 9:23 Richard Riley
2008-10-10 12:45 ` Chris McMahan
2008-10-10 14:44 ` Richard Riley
0 siblings, 2 replies; 3+ messages in thread
From: Richard Riley @ 2008-10-10 9:23 UTC (permalink / raw)
To: org-mode
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: w3m integration for yanking w3m buffers into org
2008-10-10 9:23 w3m integration for yanking w3m buffers into org Richard Riley
@ 2008-10-10 12:45 ` Chris McMahan
2008-10-10 14:44 ` Richard Riley
1 sibling, 0 replies; 3+ messages in thread
From: Chris McMahan @ 2008-10-10 12:45 UTC (permalink / raw)
To: Richard Riley; +Cc: org-mode
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
================================
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: w3m integration for yanking w3m buffers into org
2008-10-10 9:23 w3m integration for yanking w3m buffers into org Richard Riley
2008-10-10 12:45 ` Chris McMahan
@ 2008-10-10 14:44 ` Richard Riley
1 sibling, 0 replies; 3+ messages in thread
From: Richard Riley @ 2008-10-10 14:44 UTC (permalink / raw)
To: emacs-orgmode
Richard Riley <rileyrgdev@googlemail.com> 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.
A small follow up to this, possibly related to using emacs 23 I dont
know, but I had some load order issues with the keybinding for the w3m
buffer. The following solved it:
,----
| (eval-after-load "w3m" '(load "manatee"))
`----
Where "manatee" is the code below.
,----
| ;; 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)
`----
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-10-10 14:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-10 9:23 w3m integration for yanking w3m buffers into org Richard Riley
2008-10-10 12:45 ` Chris McMahan
2008-10-10 14:44 ` Richard Riley
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).