OK, I got this working. When you have a TextCommand, instead of creating an edit yourself with begin_edit(), you receive an additional edit parameter that is prepended to the usual args in ST2. On to the next challenge: async processing.

To have the code compile i tried None and 0, but the issue is that now my panel shows up empty. Any idea ?

I don't mind using sublime.py and sublime_plugin.py as "documentation" for the API, but slightly more comment (as just a bit more than none ) would help a lot, at least for stuff that change compare to ST2.

I did read it, but I'm talking about the .py file that jon suggest to use as reference for the new API functions. Putting some comment about the parameter expected by the function could help plugin dev a lot (and could even be used to automatically generate basic API reference).

Anyway, in my case i found a way to make it work: replacing all the part between begin_edit end_edit by a v.run_command('append', {'characters':strtxt})

If the command is called directly with some parameters everything works fine. But if there is no parameters, it shows the panel and then the text is not aligned (but the function is correctly called, i can see some change in selection and stuff).

I managed to workaround the issue (instead of calling align_tab when show_input_panel is done, I do a lambda x : self.view.run_command("align_tab",{"user_input":x}) ), but I still don't understand what is wrong in the initial code .Is it a bug, or I'm missing something ?

args attribute receives a numerical value corresponding to the command that is passed to the cmd attribute. This is how it usually works. But I have heard that there is some differences in ST3. So just run through the guide once again to make sure the attributes goes as mentioned above.