gdelmas / IntelliJDashPlugin

A smart and simple plugin that provides keyboard shortcut access for Dash, Velocity or Zeal in IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm and Android Studio.
MIT License
1.09k stars 73 forks source link

wrong docset names with zeal #44

Closed darrennoble closed 9 years ago

darrennoble commented 9 years ago

When I do a search in both Java and Python code in IntelliJ on Linux it doesn't find anything because the docset names in the query aren't the ones used by zeal.

For example if I search for datetime in a Python 2 project it opens zeal with this query:

python2,python,django,twisted,sphinx,flask,tornado,sqlalchemy,numpy,scipy,salt,cvp:datetime

the problem is that the space is missing on python 2. It works if I add a space before the 2, like this:

python 2,python,django,twisted,sphinx,flask,tornado,sqlalchemy,numpy,scipy,salt,cvp:datetime

Java has a similar problem. Here is a search for Map in a Java 8 project:

java8,java,javafx,grails,groovy,playjava,spring,cvj,processing,javadoc:Map

The "java8" docset should be "java se8" like this:

java se8,java,javafx,grails,groovy,playjava,spring,cvj,processing,javadoc:Map

gdelmas commented 9 years ago

it looks like zeal does not use the correct mappings for docsets. the mappings are included in the docset plist (keys described in #23) and should be used by zeal. a mapping overview can be found on kapeli's site.

please address this issue with the zeal developers.

darrennoble commented 9 years ago

Here is the plist from the Java SE8 (http://sanfrancisco.kapeli.com/feeds/Java_SE8.tgz):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleIdentifier</key>
    <string>java</string>
    <key>CFBundleName</key>
    <string>Java SE8</string>
    <key>DocSetPlatformFamily</key>
    <string>java</string>
    <key>dashIndexFilePath</key>
    <string>overview-summary.html</string>
    <key>DashDocSetFamily</key>
    <string>java</string>
</dict>
</plist>

I don't see java8 in there. Am I missing something, or did the plists in the docsets change?

gdelmas commented 9 years ago

you are right. i just reread #23. first comment says the java version number is added by dash. these versioned mappings are implemented in dash. probably not in zeal though.

with zeal the first keyword java8 should not match. now the second (backup) keyword java should come into play. it should match against the docset because CFBundleIdentifier, DashDocSetFamily and DocSetPlatformFamily are all java.

does this not work?

darrennoble commented 9 years ago

It doesn't work using just java. The only way I've found to get it to work is by changing java8 to java se8, which is the CFBundleName. Zeal doesn't seem to allow searches on CFBundleIdentifier, DashDocSetFamily or DocSetPlatformFamily. If you want I can log a bug against Zeal to add support for searching on those, but ideally I'd want the search to add the CFBundleName because I also have Java SE7 installed for some other projects.

gdelmas commented 9 years ago

please file an issue with the zeal team. the docsets are dash based and the zeal plugin "api" is also dash based. it should behave the same way as dash. probably some other docsets are also not mapping because of how zeal handles the plist.

i'm also not sure if keywords with a space might be supported. dash keywords never use a space char. i would not like to add too many special conditions for every platform.

darrennoble commented 9 years ago

That makes sense and I wouldn't want to add a bunch of platform specific code either. I wonder how dash knows which docset java8 is. It must have a mapping somewhere in it's code or a file with the app since I used grep to search for java8 in the docset and it didn't find it.

gdelmas commented 9 years ago

probably something in its code. right. see: comment #23

darrennoble commented 9 years ago

Alright, I'm logging a ticket with Zeal. Thanks for your help!