From: Richard G Riley <rileyrgdev@googlemail.com>
To: nicholas.dokos@hp.com
Cc: org-mode <emacs-orgmode@gnu.org>,
Richard G Riley <rileyrgdev@googlemail.com>
Subject: Re: org-annotation-helper
Date: Sun, 31 Aug 2008 12:19:23 +0200 [thread overview]
Message-ID: <jebpz9trkk.fsf@googlemail.com> (raw)
In-Reply-To: <17249.1220148863@gamaville.dokosmarshall.org> (Nick Dokos's message of "Sat, 30 Aug 2008 22:14:23 -0400")
caveat : I do not know if this is optimal or even recommended but it now
works for me.
I have modified the code a little to remove hex from the actual link. I
have "boxquoted" all code so you will need to remove that.
firefox/iceweasel : To set up the bookmark link, simple create a new
book mark called "remember" in firefox and make this the location code:
,----
| javascript:location.href='remember://%20'+location.href+'%1C'+escape(document.title)+'%1C'+escape(window.getSelection())
`----
This is as simple as right click on your bookmark toolbar and
create new. Do *not* select "load this bookmark in the sidebar" - when I
selected this then links and region did not pass to the protocol handler
discussed in the comments below. I have no idea why and if someone could
explain why this should be I would be grateful.
Follow the instructions in the code to set up the shell script and the
protocol registry to handle the protocol when you click on the remember
bookmark. I would advise ignoring all "annotation" stuff and just
concentrate getting remember working for now.
The org-remember-template I now use is (note the addition of %:link which
shows the physical http link)
,----
| ("Web-Link" ?w "* %c \n :PROPERTIES: \n :Entered: %U\n :END: \n\n - link: %:link\n - Quote:\n %:region\n - End Quote\n\n %?\n" "bookmarks.org" "Unfiled Clips")
`----
Using linux with X, I also modified the remember shell script to use wmctl to
bring emacs to the foreground.
I also reformatted the location codes to be on a single line.
,----
| ;;; org-annotation-helper.el --- start remember from a web browser
| ;;
| ;; Author: bzg AT altern DOT org
| ;; Keywords: org remember
| ;;
| ;;; Commentary:
| ;;
| ;; [bzg:] This is an adapted version of the planner-mode extension the
| ;; was first posted by Geert Kloosterman <[EMAIL PROTECTED]> on
| ;; the Planner mailing list. All comments below are his.
| ;;
| ;; We want to be able to pass a URL and document title directly from a
| ;; web browser to Emacs.
| ;;
| ;; We define a remember:// url handler in the browser and use a shell
| ;; script to handle the protocol. This script passes the information
| ;; to a running Emacs process (using emacsclient/gnuclient). We use
| ;; bookmarklets to create the remember:// urls dynamicly.
| ;;
| ;; The protocol types currently recognized are:
| ;;
| ;; remember:// start `remember' with the url and title filled in
| ;; annotation:// similar to `planner-annotation-as-kill' (org?)
| ;;
| ;; The urls used internally will have the following form:
| ;;
| ;; remember://<the web page url>%1C<the title>
| ;;
| ;; The title will be url-hex-encoded. "%1C" is the (url-encoded) low
| ;; ascii value for the field separator.
| ;;
| ;;
| ;; The bookmarklets:
| ;;
| ;; javascript:location.href='remember://' + location.href + '%1C' + escape(document.title) + '%1C' + escape(window.getSelection())
| ;; javascript:location.href='annotation://' + location.href + '%1C' + escape(document.title)
| ;;
| ;; The helper script:
| ;;
| ;;#!/bin/sh
| ;;# remember -- pass a remember-url to emacs
| ;;#
| ;;# Author: Geert Kloosterman <g.j.kloosterman@gmail.com>
| ;;# Date: Sat Nov 19 22:33:18 2005
| ;;#
| ;;# modified 31 Aug 2008 rgr : added call to wmctrl to bring emacs to the foreground
| ;;#
| ;;
| ;;if [ -z "$1" ]; then
| ;; echo "$0: Error: no arguments given!" 1>&2
| ;; exit 1
| ;;fi
| ;;
| ;;# To test uncomment following line
| ;;#echo $1 >> /tmp/remember.out
| ;;wmctrl -a emacs22
| ;;emacsclient --eval "(progn (bzg/org-annotation-helper \"$1\" ) nil)"
| ;;
| ;;# EOF
|
| ;; Adding a protocol handler
| ;; -------------------------
| ;;
| ;; Firefox
| ;;
| ;; To add a protocol handler (eg: remember://) in Firefox, take the
| ;; following steps:
| ;;
| ;; - type in "about:config" in the location bar
| ;; - right click, select New --> String
| ;; - the name should be "network.protocol-handler.app.remember"
| ;; - the value should be the executable, eg. "remember".
| ;; At least under Linux this does not need to be the full path to
| ;; the executable.
| ;;
| ;; See http://kb.mozillazine.org/Register_protocol for more details.
| ;;
| ;; Opera
| ;;
| ;; In Opera add the protocol in the Preferences->Advanced->Programs
| ;; dialog.
|
|
| ;; Code:
|
| (require 'url)
|
| (autoload 'url-unhex-string "url")
|
| (defun bzg/org-annotation-helper (info)
| (interactive)
| "Process an externally passed remember:// style url.
|
| URLSTRING consists of a protocol part and a url and title,
| separated by %1C.
|
| The protocol types currently recognized are:
|
| remember:// start `remember' with the url and title
| annotation:// similar to `org-annotation-as-kill'."
| (let ((remember-annotation-functions nil))
| ;; The `parse-url' functions break on the embedded url,
| ;; since our format is fixed we'll split the url ourselves.
| (if (string-match "^\\([^:]*\\):\\(/*\\)\\(.*\\)" info)
| (let* ((proto (match-string 1 info))
| (url_title_region (match-string 3 info))
| (splitparts (split-string url_title_region "%1C"))
| (url (car splitparts))
| (type (if (string-match "^\\([a-z]+\\):" url)
| (match-string 1 url)))
| (title (cadr splitparts))
| (region (url-unhex-string (caddr splitparts)))
| orglink)
| (setq title (if (> (length title) 0) (url-unhex-string title)))
| (setq url (if (> (length url) 0) (url-unhex-string url)))
| (setq orglink (org-make-link-string url title))
| (org-store-link-props :type type
| :link url
| :region region
| :description title)
| (setq org-stored-links
| (cons (list url title) org-stored-links))
| ;; FIXME can't access %a in the template -- how to set annotation? (raise-frame)
| (cond ((equal proto "remember")
| (kill-new orglink)
| (org-remember ?w))
| ;; (yank)) I don't think I need this yank
| ((equal proto "annotation")
| (message "Copied '%s' to the kill-ring." orglink)
| (kill-new orglink))
| (t (error "unrecognized org-helper protocol"))))
| (error "could not parse argument"))))
|
| (provide 'org-annotation-helper)
`----
next prev parent reply other threads:[~2008-08-31 10:19 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-30 22:46 org-annotation-helper Richard G Riley
2008-08-31 2:14 ` org-annotation-helper Nick Dokos
2008-08-31 9:14 ` org-annotation-helper Richard G Riley
2008-08-31 10:19 ` Richard G Riley [this message]
2008-09-01 11:20 ` org-annotation-helper Peter Westlake
2008-09-01 11:27 ` org-annotation-helper Carsten Dominik
2008-09-01 11:35 ` org-annotation-helper Peter Westlake
2008-09-01 14:14 ` org-annotation-helper Richard G Riley
-- strict thread matches above, loose matches on Subject: below --
2009-05-03 9:50 org-annotation-helper thierry.volpiatto
2009-05-04 9:43 ` org-annotation-helper Sebastian Rose
2009-05-04 12:04 ` org-annotation-helper thierry.volpiatto
2008-09-04 21:06 org-annotation-helper Robert Goldman
2008-09-06 16:19 ` org-annotation-helper Christopher Suckling
[not found] <200805161527.m4GFRMGN010370@dog.comp.uvic.ca>
2008-05-17 0:16 ` org-annotation-helper Daniel M German
2008-05-17 11:13 ` org-annotation-helper Carsten Dominik
2008-05-18 21:38 ` org-annotation-helper John Rakestraw
2008-05-19 12:28 ` org-annotation-helper Carsten Dominik
2008-05-19 17:19 ` org-annotation-helper Cezar Halmagean
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=jebpz9trkk.fsf@googlemail.com \
--to=rileyrgdev@googlemail.com \
--cc=emacs-orgmode@gnu.org \
--cc=nicholas.dokos@hp.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).