From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sebastian Rose Subject: Fast open, what is published already Date: Fri, 27 Feb 2009 16:18:44 +0100 Message-ID: <87d4d3oqln.fsf@kassiopeya.MSHEIMNETZ> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ld4RE-0007VM-KQ for emacs-orgmode@gnu.org; Fri, 27 Feb 2009 10:15:44 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ld4RC-0007UZ-Sb for emacs-orgmode@gnu.org; Fri, 27 Feb 2009 10:15:44 -0500 Received: from [199.232.76.173] (port=58196 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ld4RC-0007US-Pl for emacs-orgmode@gnu.org; Fri, 27 Feb 2009 10:15:42 -0500 Received: from mail.gmx.net ([213.165.64.20]:53520) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1Ld4RC-0004Mb-9d for emacs-orgmode@gnu.org; Fri, 27 Feb 2009 10:15:42 -0500 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: emacs-orgmode Org-Mode --=-=-= 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: --=-=-= Content-Type: text/x-sh Content-Disposition: inline #! /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 --=-=-= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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 --=-=-=--