Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
Black Mamba - IDE & Jump to definition
-
As I stated before, Black Mamba's goal is not provide just shortcuts, but other useful features as well. Today I released version 0.0.23 which introduces package
blackmamba.project
. How is the project defined from Black Mamba point of view?Project is a folder which does contain
.git
or.blackmamba
folder. If you open a file in Pythonista, hitCmd Shift D
, it traverses parent directories until it finds.git
or.blackmamba
and that's the current project root folder. Then it indexes all Python files in the project and allows you to jump to definition. If Black Mamba finds definition (one), it opens file and scrolls to the definition location. If there're more locations, dialog appears and you can select location you want to scroll to. Here's the screenshot.Why
.blackmamba
folder? Whenever I find project root folder (via.git
for example if.blackmamba
doesn't exist), I save definitions index file into this folder (.blackmamba/index.pickle
). Next time you would like to jump to definition, index is loaded. Also the whole project is reindexed every time you would like to jump to definition (max once a minute). No need to do it manually. This can be controller by config viaproject.index.rate
(default value is60
seconds).If you'd like to try this feature and don't have
.git
folder in any of your parent directories, just open StaSh and create empty.blackmamba
folder in your project root. Then it will work. I do not want index whole~/Documents
folder.I miss a lot things like this one. Current implementation is an experiment, should work, but can't guarantee it will work on slower / older devices. Using latest & greatest iPad Pro and I didn't care about memory & optimisation for this release (will care, don't worry).
Anyway, why I started separate topic. Anyone else does miss features from big IDEs (like PyCharm)? If so, let me know which ones and I'll add them.
-
I wonder, have you trid parsing the existing jedi data (used for autocomplete)?-- I forget whether the caches include folder info, or just module names.
-
@JonB honestly, not yet. I never used Jedi and didn't have time to fully investigate how it works. It was faster to hack ast & pickle definitions. Not the perfect solution, but good enough to demonstrate the feature. That was the main goal for now, show this feature and get some feedback if people are missing things like this one in Pythonista or not. If so, I'll implement more robust solution with more features. Like find usages, etc. One thing which is unclear to me is that Jedi docs state that it's not thread safe. I have no clue how / when Pythonista does use it, do not want to cripple autocompletion. Another one is that I don't know how and when Pythonista does use Jedi to index files that are not a) opened, b) not referenced from current (= open) file (for find usages for example). You can pass sys_path for the script, but again, have to find what should I pass to make it index whole project. Basically, I like Jedi, I was thinking about it, but I have zero experience with it and it needs some time to fully understand how it exactly works internally. API is easy, but some other areas are still unclear to me.
-
Okay, that was quick. Thanks @JonB of reminding me about Jedi and basically forcing me to investigate it more. Trashed
blackmamba.project
, does usejedi
now and it's ... super cool! Thanks again :)