From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Fast open, what is published already Date: Fri, 27 Feb 2009 16:50:40 +0100 Message-ID: <85A35F4A-49DA-490A-AC82-00ADD719CF75@uva.nl> References: <87d4d3oqln.fsf@kassiopeya.MSHEIMNETZ> Mime-Version: 1.0 (Apple Message framework v930.3) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ld4z8-0004Eo-0j for emacs-orgmode@gnu.org; Fri, 27 Feb 2009 10:50:46 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ld4z6-0004EY-Gs for emacs-orgmode@gnu.org; Fri, 27 Feb 2009 10:50:45 -0500 Received: from [199.232.76.173] (port=39694 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ld4z6-0004EV-Bk for emacs-orgmode@gnu.org; Fri, 27 Feb 2009 10:50:44 -0500 Received: from yw-out-1718.google.com ([74.125.46.154]:32667) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ld4z5-0001ao-Qt for emacs-orgmode@gnu.org; Fri, 27 Feb 2009 10:50:44 -0500 Received: by yw-out-1718.google.com with SMTP id 6so819329ywa.66 for ; Fri, 27 Feb 2009 07:50:42 -0800 (PST) In-Reply-To: <87d4d3oqln.fsf@kassiopeya.MSHEIMNETZ> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Sebastian Rose Cc: emacs-orgmode Org-Mode This is pretty cool. - Carsten On Feb 27, 2009, at 4:18 PM, Sebastian Rose wrote: > Hi everyone, > > > I recently fell in love with org-annotation-helper.el and > org-browser.el. I hacked together a little shell script, that uses the > features of those two to open an already published org-file, presumed > the local repo is configured, and a protocol handler and bookmark > are in > place. > > Also, you may do a `git pull', `mtn pull' or what ever before the > file > is opened in emacs. The script can easily be adjusted to work with any > Org project. I plan to add a little function to create new > bookmarklets, > protocol handlers and scripts easily (or receive the protocol on stdin > too and map protocols to repositories). > > This is it: > > > > #! /bin/bash > > # Author: Sebastian Rose > # > # The idea is roughly based on org-annotation-helper and org-browser- > url.el, > # written by Bastien Guerry and Ross Patterson respectively. > # > # AIMS > # > # Open already published files in emacs easily. This script is > originally > # geard for usage with the contents in http://orgmode.org/worg/ (and > # Worg.git), but it can easily be changed to help with other > projects too. > # > # Optionally do a `git pull', `mtn pull' or whatever. > # > # See `Future plans' for what is planed. > # > # > # REQUIREMENTS > # > # * You'll need to have ssh-askpass installed, to load ssh-key > files as needed. > # * Firefox browser. The possibility to do somthing similar with > Opera seems to > # exist, but I didn't test it. For more visit opera.com. > # * An SMCS, capable of using ssh-agent, and configured to use it. > You might also > # use this script for repos that are accessed without any > authentication at all > # (or a kind of authentication that does not require any > interaction). > # * zenity > # > # USAGE: > # > # 1.) Add a new protocol handler to Firefox: > # * navigate to "about:config" > # * right click, select "New" => "String" > # * enter the name: > # > # network.protocol-handler.app.org-worg > # > # * leave the value blank > # > # See http://kb.mozillazine.org/Register_protocol for more > details. > # > # 2.) Add a bookmark to Firefox. As `Location' use this here: > # > # javascript:location.href='org- > worg:///'+location.href.replace(/http:\/\/orgmode.org\/worg\//, "") > # > # 3.) Customize all the option below. > # > # 4.) When browsing http://orgmode.org/worg/, click the bookmark. > Firefox will > # ask for the application to use with the protocol `org- > worg://'. Enter the > # path to this script and ensure it is executable. If > everything is configured > # correctly, the appropriate file is opened in emacs. > # > > > # ########################################################## > # --- CUSTOMIZATION --- > # > > # No slash at the end: > working_dir=~/develop/org/Worg > > > # Could be changed to "mtn sync" or what ever. > pull_command="git pull" > > # Does the pull command require a ssh key file to be loaded? > # Key file to add, to be able pull: > ssh_key_file=~/.ssh/id_repo_or_cz > > # Does the pull command require a ssh key file to be loaded? > # We can only ask if the fingerprint is in ssh-agent. Needed, if your > # project requires it. > fingerprint="b7:f5:10:43:3b:c2:fe:b5:54:18:3f:35:f1:d0:a3:6e" > > # Pull before editing? [always|never|ask] > pull_policy=ask > > # The suffix to strip (i.e. to exchange with `.org'). > strip_suffix=".php" > > # Only change this, if you changed the protocol used for the > bookmarklet! > file=${1#org-worg:///} > > # > # --- these options are less likely to change --- > # > working_suffix=".org" > > # > # --- END OF CUSTOMIZATION --- > # ########################################################## > > > > > > # Future plans: > case "${1}" in > --help) # Print a help message (installation...) > echo "HELP" > exit 0 ;; > --create) # Create new files and bookmarklets for more projects > interactively. > echo "CREATE" > exit 0 ;; > esac > # End of future plans. > > > > > > file="${file%${strip_suffix}}${working_suffix}" > > if [ -f "${working_dir}/${file}" ]; then > do_pull=$pull_policy > if [ "ask" = $pull_policy ]; then > if zenity --question --title="Org-Worglet :: ${file}" -- > text="Shall I pull before opening\n${file}?"; then > do_pull=always > fi > fi > > if [ "always" = $do_pull ]; then > val=$(ssh-add -l | grep "${fingerprint}") > if [ -z "${val}" ]; then > ssh-add "${ssh_key_file}" > fi > cd "${working_dir}" > if ! ${pull_command}; then > if ! zenity --question --title="Org-Worglet :: $ > {pull_command}" --text="${pull_command} FAILED. Open the file > anyway?"; then > exit 1 > fi > fi > fi > emacsclient --eval "(find-file \"${working_dir}/${file}\")" > else > zenity --error --title "Org-Worglet :: Error" --text "File does > not exist: ${working_dir}/${file}" > fi > > > > > > > > -- > Sebastian Rose, EMMA STIL - mediendesign, Niemeyerstr.6, 30449 > Hannover > Tel.: +49 (0)511 - 36 58 472 > Fax: +49 (0)1805 - 233633 - 11044 > mobil: +49 (0)173 - 83 93 417 > Http: www.emma-stil.de > _______________________________________________ > 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