emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Daniil Frumin <difrumin@gmail.com>
To: Carsten Dominik <carsten.dominik@gmail.com>
Cc: "emacs-orgmode@gnu.org Mode" <emacs-orgmode@gnu.org>,
	anthony.lander@gmail.com
Subject: Re: Skim.app support for org-mac-link-grabber.el
Date: Tue, 14 May 2013 00:35:46 +0400	[thread overview]
Message-ID: <5D9D77F4-F343-45D1-8B06-70550EE83E2B@gmail.com> (raw)
In-Reply-To: <BBD5BBAC-DCFB-4478-B9A6-8DC20C875D7C@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1368 bytes --]

So I've been researching this problem and it seems that there is no sane way to re-select a text. 

The problem is that `(do-applescript ..)' only interacts with AppleScript well if the return type of the string is either a number or a string. If I try to convert the selection object (which is not really an object but a list of specifiers) it just returns the selected text. 

There is also `selection bounds' but it only covers rectangle selections.

It's possible to save the selected text and try to `find' it later, but that won't work well (e.g.: there are several repetitions of the same text on one page). 

I've also tried to implement an auto-scrolling to the selected text, but to no avail.

The option that seems to me the most reasonable is to add a highlight note to the selected text (which is actually possible). What do you think? 

For now, the patch to the problem mentioned by Ivan.
I have actually fixed a small bug in the code for getting links from Firefox:
Prior to the fix the firefox link grabber won't work correctly if a cursor has been already positioned in the URL field. The fix works by adding an additional keystore for selecting all the text in that field.

The problem is that I've committed it before committing the stuff that Ivan told us about, so I am not sure what to do in this case.

Thanks

-- Daniil


[-- Attachment #2: 0002-Fixing-a-bug-in-as-mac-firefox-get-frontmost-url.patch --]
[-- Type: application/octet-stream, Size: 1287 bytes --]

From 05982f42efbc27df5db10a6b244ab5dccdd31987 Mon Sep 17 00:00:00 2001
From: Daniil Frumin <difrumin@gmail.com>
Date: Mon, 13 May 2013 22:36:50 +0400
Subject: [PATCH 2/3] Fixing a bug in as-mac-firefox-get-frontmost-url

Prior to the fix the firefox link grabber won't work correctly if a cursor has been already positioned in the URL field. The fix works by adding an additional keystore for selecting all the text in that field.
---
 contrib/lisp/org-mac-link-grabber.el | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/contrib/lisp/org-mac-link-grabber.el b/contrib/lisp/org-mac-link-grabber.el
index e71fc15..f816c76 100644
--- a/contrib/lisp/org-mac-link-grabber.el
+++ b/contrib/lisp/org-mac-link-grabber.el
@@ -216,8 +216,9 @@ applications and inserting them in org documents"
 					 "	activate\n"
 					 "	delay 0.15\n"
 					 "	tell application \"System Events\"\n"
-					 "		keystroke \"l\" using command down\n"
-					 "		keystroke \"c\" using command down\n"
+					 "		keystroke \"l\" using {command down}\n"
+					 "		keystroke \"a\" using {command down}\n"
+					 "		keystroke \"c\" using {command down}\n"
 					 "	end tell\n"
 					 "	delay 0.15\n"
 					 "	set theUrl to the clipboard\n"
-- 
1.7.12.4 (Apple Git-37)


[-- Attachment #3: 0003-Automatic-detection-of-the-presence-of-Skim.app.patch --]
[-- Type: application/octet-stream, Size: 3119 bytes --]

From 32c21fea9dd417a4405f0c6741d86c3c71f06a2b Mon Sep 17 00:00:00 2001
From: Daniil Frumin <difrumin@gmail.com>
Date: Tue, 14 May 2013 00:11:14 +0400
Subject: [PATCH 3/3] Automatic detection of the presence of Skim.app

Automatically detect whether the option for Skim.app should be enabled
by default or not. Thanks to Ivan Andurs.
---
 contrib/lisp/org-mac-link-grabber.el | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/contrib/lisp/org-mac-link-grabber.el b/contrib/lisp/org-mac-link-grabber.el
index f816c76..cb92b44 100644
--- a/contrib/lisp/org-mac-link-grabber.el
+++ b/contrib/lisp/org-mac-link-grabber.el
@@ -128,7 +128,9 @@ applications and inserting them in org documents"
   :group 'org-mac-link-grabber
   :type 'boolean)
 
-(defcustom org-mac-grab-Skim-app-p t
+(defcustom org-mac-grab-Skim-app-p
+  (< 0 (length (shell-command-to-string
+		"mdfind kMDItemCFBundleIdentifier == 'net.sourceforge.skim-app.skim'")))
   "Enable menu option [S]kim to grab page links from Skim.app"
   :tag "Grab Skim.app page links"
   :group 'org-mac-link-grabber
@@ -472,7 +474,7 @@ applications and inserting them in org documents"
 ;;
 ;; Handle links from Skim.app
 ;;
-;; A rewriting of some code originally by Christopher Suckling from org-mac-protocol
+;; Original code & idea by Christopher Suckling (org-mac-protocol)
 
 (org-add-link-type "skim" 'org-mac-skim-open)
 
@@ -486,7 +488,7 @@ applications and inserting them in org documents"
       "tell application \"Skim\"\n"
          "activate\n"
 	 "set theDoc to \"" document "\"\n"
-		     "set thePage to " page "\n"
+	 "set thePage to " page "\n"
 	 "open theDoc\n"
 	 "go document 1 to page thePage of document 1\n"
       "end tell"))))
@@ -503,7 +505,7 @@ applications and inserting them in org documents"
        "set theSelection to selection of theDoc\n"
        "set theContent to contents of (get text for theSelection)\n"
        "if theContent is missing value then\n"
-          "set theContent to theTitle & \", p. \" & thePage\n"
+       "    set theContent to theTitle & \", p. \" & thePage\n"
        "end if\n"
        "set theLink to \"skim://\" & thePath & \"::\" & thePage & "
        "\"::split::\" & theContent\n"
@@ -513,13 +515,13 @@ applications and inserting them in org documents"
 (defun org-mac-skim-get-page ()
   (interactive)
   (message "Applescript: Getting Skim page link...")
-  (let* ((url-and-title (as-get-skim-page-link))
-         (split-link (split-string url-and-title "::split::"))
-         (URL (car split-link))
+  (let* ((link-and-descr (as-get-skim-page-link))
+         (split-link (split-string link-and-descr "::split::"))
+         (link (car split-link))
          (description (cadr split-link))
          (org-link))
-    (when (not (string= URL ""))
-      (setq org-link (org-make-link-string URL description)))
+    (when (not (string= link ""))
+      (setq org-link (org-make-link-string link description)))
     (kill-new org-link)
     org-link))
 
-- 
1.7.12.4 (Apple Git-37)


[-- Attachment #4: Type: text/plain, Size: 2263 bytes --]




On May 13, 2013, at 10:34 AM, Carsten Dominik <carsten.dominik@gmail.com> wrote:

> Hi Daniil,
> 
> I like this a lot and would like to take the patch after you have taken Ivans feedback, and maybe more feedback if you get any.
> 
> I would like it even more if following the link would rehighlight the selected text.  Is there any way to achieve this?
> 
> I have another question, this would maybe be for the original author, Anthony Lander?  I see that there are functions with prefixes that are not "org-".  This is dangerous because there might be packages around that use that name space.  I also think it violates coding rules in Emacs.  I think this should be changed - unless you know of a convention that all functions dealing with applescripts are supposed to have an "as-" prefix.
> 
> I can fix this - but I wanted your feedback first.
> 
> Thanks.
> 
> - Carsten
> 
> On 12 mei 2013, at 20:29, Daniil Frumin <difrumin@gmail.com> wrote:
> 
>> Hi, all!
>> 
>> I use org-mac-link-grabber.el <http://orgmode.org/worg/org-contrib/org-mac-link-grabber.html> almost every day. However, it lacks support for an app that I'd like to use together with org-mode. 
>> 
>> Skim.app is a light and fast PDF reader for Mac OS X with a note-taking ability. I wrote a little patch for org-mac-link-grabber.el to support grabbing links to documents.
>> 
>> What it does:
>> 
>> * Grabs not just the link to file, but a page
>> 
>> * Inserts the selected text as a description, if present. Otherwise
>> inserts "<filename>, p. <page #>"
>> 
>> * The shortcut is set to [S]
>> 
>> * Defines a new "skim" link type
>> 
>> It would be interesting to also add some support for importing notes from Skim to org.
>> 
>> Since Skim.app is not present in clean OS X installs, by default support for grabbing links from it is disabled. You can enable it by customizing group `org-mac-link-grabber'.
>> 
>> So, maybe it's possible to get this patch into the tree? It's my first time hacking on org (or even any major elisp extension), so it's probably that I've messed up somewhere with a commit format or whatnot.
>> 
>> Cheers.
>> 
>> -- Daniil Frumin
>> <0001-Adding-Skim.app-support-to-org-mac-link-grabber.el.patch>
> 


  parent reply	other threads:[~2013-05-13 20:35 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-12 18:29 Skim.app support for org-mac-link-grabber.el Daniil Frumin
2013-05-13  0:39 ` Ivan Andrus
2013-05-13  6:34 ` Carsten Dominik
2013-05-13  9:53   ` Daniel F
2013-05-13 10:54     ` Carsten Dominik
2013-05-13 20:35   ` Daniil Frumin [this message]
2013-05-14  4:33     ` Carsten Dominik
2013-05-14  6:18       ` Daniil Frumin
2013-05-14  7:12         ` Carsten Dominik

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=5D9D77F4-F343-45D1-8B06-70550EE83E2B@gmail.com \
    --to=difrumin@gmail.com \
    --cc=anthony.lander@gmail.com \
    --cc=carsten.dominik@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /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).