DamnWidget / anaconda

Anaconda turns your Sublime Text 3 in a full featured Python development IDE including autocompletion, code linting, IDE features, autopep8 formating, McCabe complexity checker Vagrant and Docker support for Sublime Text 3 using Jedi, PyFlakes, pep8, MyPy, PyLint, pep257 and McCabe that will never freeze your Sublime Text 3
http://damnwidget.github.io/anaconda/
GNU General Public License v3.0
2.21k stars 260 forks source link

Graphical debugger for Anaconda #554

Open v-hunt opened 7 years ago

v-hunt commented 7 years ago

I know that pdb/ipdb is suitable for many cases, but graphical debugger is more convenient tool, especially for big projects. How hard to implement one? As for me, this is only one thing left that doesn't allow to consider Anaconda as an full-featured enterprise IDE.

The only one idea that came into my mind is to develop the Sublime client to rpdb2 server (A thing like Winpdb graphical client, but with Sublime Text 3 interface)

pradyunsg commented 7 years ago

How hard to implement one?

AFAIK, Sublime Text's API doesn't really provide anything to be able to provide a nice debugging interface. Unless you would be fine with a text-based debugging, like https://github.com/martomo/SublimeTextXdebug, which would be a very different, a non-trivial task itself.

DamnWidget commented 7 years ago

As @pradyunsg already said, that os not an easy task as the Sublime Text 3 API graphical capabilities are limited (very limited in fact).

v-hunt commented 7 years ago

@DamnWidget I know that ST3 graphical capabilities are quite poor, but can we find a way to emulate graphical behavior via ST capabilities?

DamnWidget commented 7 years ago

If you feel brave enough (and you copromise with it's maintenance) I will accept PRs to implement that feature, I could even give you a hand with anaconda's specifics but there is too much already in my plate as to think to implement something like that.

divinites commented 7 years ago

Actually, I think something like SublimeTextXdebug would be ideal, since we do not have any decent debugger for python in Sublime text at this moment. In many cases, I write codes in sublime text and open Pycharm for debugging. Of course, developing a Xdebug for Python is non-trivial at all, I would be very happy to participate if I had enough time. :disappointed:

By the way, @DamnWidget In Golconda, would it includes some built-in debugger?

DamnWidget commented 7 years ago

What do you mean @divinites? I am afraid that I don't understand your question.

divinites commented 7 years ago

@DamnWidget I mean, besides auto-completion and refactoring, which you have told us that Anaconda 3 will have better support for, are you going to integrate an advanced debugger as well?

DamnWidget commented 7 years ago

I am not planing to integrate anything like that for now but if you have any idea about how to implement it feel free to work on it :)

Golconda is able to execute anything that you pass as the Golconda's plugin entry point (like docker) so you can do it in whatever language that you wish, anyway, I am still designing/writing it with a reference plugin implementation (what is now anaconda_go) so probably you want to wait until that is done and released.

v-hunt commented 7 years ago

@divinites What is Golconda? Could you be so kind to provide a link?

DamnWidget commented 7 years ago

@v-hunt https://github.com/DamnWidget/anaconda/projects

v-hunt commented 7 years ago

@DamnWidget So, should we consider current Anaconda as legacy and look ahead to Golconda project only?

DamnWidget commented 7 years ago

It's early to define anaconda as legacy, there are lots of things that need to be done to consider anaconda as legacy but big features like this request will be taken into consideration in the future. You have to take into account that we highly depend on Package Control that lately is kind of slow reviewing and merging the PRs so the transition from anaconda to golconda is not gonna be fast.

DamnWidget commented 7 years ago

I took a look to rpdb2 in my lunch time yesterday and it seems to get stacked if the Python interpreter gets stacked so if for example your Python interpreter gets blocked in a system call to the OS rpdb2 is pretty much useless.

Anyway, this is something that I always wanted to do but I was never in the mood, I even opened myself the oldest non resolved issue in this tracker the issue #54 that is still sitting there at the bottom of the list, @eivind88 was looking into some kind of variable inspector back in 2015 but I guess he ran out of free time or motivation.

This project is huge, I work not only on anaconda but in anaconda_php, anaconda_go and anaconda_rust each of then with their roadmaps and bugs, I am trying to decouple the anaconda's JsonServer and create a platform to make possible to integrate what today is known as the anaconda's JsonServer into any text editor with minimal effort. As you guys can understand I am the almost unique developer I can't do everything by myself but this is a thing that I really would like to integrate into the plugin some day.

EivindArvesen commented 7 years ago

@DamnWidget Terribly sorry for responding so late.

I ran out of time back in 2015, and kinda got lost in the POC i GIF'ed in the last comment on issue #54.

I didn't really get far with regards to a variable inspector; I just thought a bit about how I could make a limited demo with the then limited UI, e.g. hooking globals/locals into a panel or something like that. The plugin API has improved somewhat since then, though - now offering permanent panels, inline phantoms and whatnot.

As a sidenote, I'm currently working on an implementation of inline code evaluation and more via Jupyter integration, which I don't think would be a appropriate for Anaconda.