martomo / sublimetextxdebug Goto Github PK
View Code? Open in Web Editor NEWXdebug debugger client for Sublime Text
License: MIT License
Xdebug debugger client for Sublime Text
License: MIT License
This issue is known, has to do due the implementation of asynchronous communication, which was not properly tested on Sublime Text 2.
Sorry for the inconvenience, hope to resolve this as soon as possible.
After update plugin I have clear Xdebug Context
In console log I have some error:
Traceback (most recent call last):
File "/opt/sublime_text/sublime_plugin.py", line 524, in run_
return self.run(**args)
File "main in /home/[user]/.config/sublime-text-3/Installed Packages/Xdebug Client.sublime-package", line 403, in run
File "xdebug.session in /home/[user]/.config/sublime-text-3/Installed Packages/Xdebug Client.sublime-package", line 320, in get_context_values
File "xdebug.session in /home/[user]/.config/sublime-text-3/Installed Packages/Xdebug Client.sublime-package", line 519, in generate_context_output
File "xdebug.session in /home/[user]/.config/sublime-text-3/Installed Packages/Xdebug Client.sublime-package", line 518, in generate_context_output
TypeError: Can't convert 'NoneType' object to str implicitly
Before that it worked fine
Hey there - I think this is more a bit of a support request. I'm on a Mac (Mountain Lion) and I am running all my webdev stuff in a virtual machine. The virtual machine is at 10.11.12.13 and to that machine my host appears as 10.11.12.1.
I have XDebug set up and working fine using NetBeans. I use Macfusion to mount the VM's codebase onto a share... so the "remote machine's" /var/www is mapped to /Users/cwells/www.
My Xdebug config on the remote:
zend_extension=/usr/lib/php5/20090626/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=10.11.12.1
xdebug.remote_port=9000
xdebug.remote_connect_back=1
xdebug.remote_autostart=1
I should mention that I can debug perfectly fine in Netbeans 7 and it steps through and everything works great, but I'd love to ditch the bloat and move to ST2. (Incidentally, I'm using ST2 :) ).
So I'm creating a project for each web site. The current project I'm trying to debug is:
{
"folders":
[
{
"path": "/Users/cwells/www/bchs.rfsdev.tk"
}
],
"settings":
{
"xdebug": {
"path_mapping": {
"/var/www/bchs.rfsdev.tk/": "/Users/cwells/www/bchs.rfsdev.tk"
},
"ide_key": "sublime.xdebug",
"url": "http://bchs.rfsdev.tk",
"port": 9000,
"close_on_stop": true,
"max_depth": 3,
"max_children": 32,
"debug": true,
"launch_browser": false
}
}
}
I can start the debugger (launch browser) and it launches. If I have break_on_start set to true, execution does halt and wait (and shows me a break on start message in Xdebug.log), and so I hit "run" and it goes, but it doesn't stop at a breakpoint that it should (it does stop at this breakpoint in Netbeans so I can confirm that the behavior I'm executing SHOULD hit the breakpoint).
I can see the breakpoint in my "Xdebug Breakpoint" tab/window inside of ST2, it just doesn't stop there.
I'm concerned that it maybe have something to do with path mapping? Or the fact that this is a Drupal application and so the URL requested (like /node/13) doesn't exactly map to /node/13.php or anything, it really should be hitting my code in a .module file. Not sure if that is part of the problem or not (but again, I know it does work in NetBeans).
So overall I'm just concerned that I'm missing some fundamental step (missing a package, don't fully understand path_mapping, something). Any help you can provide would be much appreciated; I'm happy to help you in any way I can.
Using Xdebug 2.2.3 on PHP 5.4.16:
When using the Evaluate command, the returned data is shown as raw XML in the console, making viewing difficult.
The program should parse this data and display it in an appropriate format.
Thanks for your excellent work so far.
I try to pause, step into, step over, all that happens is the giant list of vars in the context change, doesn't take me to whatever function is now running, i have no idea how to make use of a debugger with no UI
I work with a Grid 4 Layout. Starting debugging modifies my layout. Why not simply open four new windows/tabs instead of resizing and moving my existing groups/views/tabs.
Upcoming/Scheduled features
Option for defining debug layout in settings
I think every user should arrange his views himself.
I removed all "layout changing" code:
https://github.com/mattes/SublimeTextXdebug/tree/layout-patch
Hello, I just found this, it seems like it's currently the most active attempt to finally create decent xdebug client. But I didn't find any way to use it, seems it's not finished. How far is it from 'ready'? Btw, I'd like to help you, but my python-fu is pretty weak. Tell me something about it.
Hello,
I'm trying to get this package working so I could pretty much ditch my old IDE for pure Sublime Text.
I use this configuration for xdebug:
zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.idekey=sublime.xdebug
And this is configuration for Sublime Text:
{
"port": 9000,
"close_on_stop": true,
"max_depth": 3,
"max_children": 32
}
And after adding a breakpoint using the command pallet (I can see the grey dot for the breakpoint) and starting Debugging with the same way, I hit the URL with XDEBUG_SESSION_START=1
at the end of the URL (I have other params in my URL).
I see the status bar says Xdebug: Connected
and when checking port 9000
I can really see it's indeed connected:
$ netstat -an | grep 9000
tcp 0 0 127.0.0.1:9000 127.0.0.1:52515 ESTABLISHED
tcp 0 0 127.0.0.1:52515 127.0.0.1:9000 ESTABLISHED
But than nothing else happens and the request gets stuck in the browser and never reaches the breakpoint.
Is there something I'm missing?
Thanks!
I'm having an issue while debugging with xdebug where I want to view the full string value of a variable (for example for a long query). It is leaving out a part of the string. Can you please add a setting to be able to modify this?
I believe the xdebug setting is xdebug.var_display_max_data?
Thanks!
Clicking "clear breakpoints" from the context menu has no effect. Also double-clicking or "go to definition" in the breakpoint or stack window does not do anything. There's no way to get to files in the stack but by manually looking them up.
A way to stop the current session without terminating the debugger would be nice. I basically want the debugger always listening.
Watches do not work, they do not expand or reveal anything when double clicking the little plus.
Ctrl-tab cycles from source files to debugger windows, I would prefer if it stuck to source files - this may be a limitation of sublime. Maybe there needs to be a next_view_in_group command?
Using OSX 10.8.5, ST 2.0.2, python 2.7.
xdebug/helper/helper.py uses urllib.parse which I assume needs python3. I gather that ST needs python2.7. I'm unsure what to do here.
$ pwd
/Users/joeframbach/Library/Application Support/Sublime Text 2/Packages/Xdebug Client/xdebug
$ python
Python 2.7.2 (default, Oct 11 2012, 20:14:37)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from helper import helper_27
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "helper/__init__.py", line 13, in <module>
from . import helper_27 as H
File "helper/helper_27.py", line 10, in <module>
import urllib.parse
ImportError: No module named parse
$ python3
Python 3.3.2 (default, Nov 5 2013, 11:59:29)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from helper import helper
>>>
I bet you're sick of hearing from me :)
I have followed your installation instructions for yesterday's update, but nothing I try makes breakpoints get hit. The context and stack windows remain empty, but the following message is displayed in the status bar every time I refresh the page:
This is with or without ?XDEBUG_SESSION_START=sublime.xdebug
, restarted webserver, double-checked php.ini... I can't think of anything else, please advise.
I struggled for a while until I discovered that port 9000 was already being used by PHP-FPM. It might be helpful to inform future users to check on this and set SublimeTextXdebug to a different port, which fixed it for me.
Normally I use SublimeText with two columns.
When I activate the Xdebug, I end up with a column for my files and two columns for windows debug.
How to configure SublimeTextXdebug to continue with two columns for my files?
How to use parameter debug_layout?
Thank you.
I'd like to jump in and help out. Python isn't my native language. Having unit tests would help give confidence I'm not breaking things. Unit tests would also probably help flush out and prevent bugs as well. Just an idea.
Hi,
I would like to have SublimeTextXdebug connect to a remote xdebug server (not localhost). I've setup the "path_mapping", however it doesn't seem to be able to connect to it. Are there any other settings I need to be aware of?
Thanks,
Rob
Using "Soda Dark 3.sublime-theme" the line position pointer does not appear.
I've currently the issue, that xdebug stops on each line.
Beside that I get the following traceback:
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 445, in is_enabled_
raise ValueError("is_enabled must return a bool", self)
ValueError: ('is_enabled must return a bool', <Xdebug Client.main.XdebugClearBreakpointsCommand object at 0x1058a8e50>)
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 445, in is_enabled_
raise ValueError("is_enabled must return a bool", self)
ValueError: ('is_enabled must return a bool', <Xdebug Client.main.XdebugClearBreakpointsCommand object at 0x1058a8e50>)
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 463, in is_visible_
raise ValueError("is_visible must return a bool", self)
ValueError: ('is_visible must return a bool', <Xdebug Client.main.XdebugClearBreakpointsCommand object at 0x1058a8e50>)
I'm using latest SB3 Build on latest Mac OS X.
Installed via package control.
Hi.
I'm afraid I've got the same problem g105b has with #2
I'm on Mac OSX 10.8.4 and Sublime Text 3.
When I run a remote debug Sublime Text stop on my breakpoint. Breakpoint icon turns from grey to gold but no context or stack.
It seems that stepping works because when I step over or into PHP files are opened and screen moves but I don't have any arrow in the gutter at the debug line.
Any hint?
At once want to apologize for my bad English. When I debugging my code with Xdebug I find problems with tabs in Sublime text 3. When I move with Xdebug breakpoints, it's unable to save tab (Xdebug) in it's position. When I use both tabs nearby, Xdebug tabs jump into new one. When I use Xdebug tabs down in main tab and active tab is Xdebug tab, situation repeated.
OS: Ubuntu 12.04. Sublime text 3, build 3047. Xdebug 2.1.0
With debugging enabled, every time my site completes a request, I get the following sublime error message:
Please restart Xdebug debugging session.
Disconnected from Xdebug debugger engine.
[Errno 54] Connection reset by peer
I can step through the request just fine, but as soon as the browser completes the request, the sublime error message appears.
Hi,
I don't think this is a bug, but I don't know where to ask this question.
I set a breakpoint in my PHP code, and when looking at the Xdebug stack, I see a variable that is an array of 13 elements. When I click that to expand it, all I see is an ellipsis. I don't see the children elements at all, as is shown in the screenshots. This is happening on all array variables. Variables with a single value display properly.
I'm using the default Xdebug settings that were recommended on this github page.
breakpoint_set -t exception -X Notice
breakpoint_set -t exception -X Warning
breakpoint_set -t exception -X Error
Hi, I tried installing via Package Control on Sublime Text 2, I set a breakpoint and started a debug session. When I loaded up the page that had the breakpoint in it (running on localhost), I saw about 8 seconds of 10+ MB/sec over my local network interface (watching via Activity Monitor) and then got the following error:
Please restart Xdebug debugging session.
Disconnected from Xdebug debugger engine.
'module' object has no attribute 'tracebacklimit'
I turned on debug output in the settings and ran it again, which resulted in a 139 MB Xdebug.log file. Looked to me like it just kept digging deeper and deeper into the object that was returned, ultimately getting stuck in some recursive data structures perhaps.
Nothing ever showed up in the Xdebug Context/Xdebug Stack viewports.
Is there perhaps a setting I didn't get set right?
I decided to try and get SublimeTextXdebug working this time. I didn't have much luck the first time (noted in #2 ) so I started a fresh install. The issue is different, but the outcome is still the same: I can't debug anything.
This is what I'm presented with when I create a breakpoint as soon as the browser is refreshed:
I've tried messing with the settings. Here's the current setting:
{
"folders":
[
{
"path": "/home/g105b/Webroot/road-test"
}
],
"settings":
{
"xdebug": {
"ide_key": "sublime.xdebug",
"url": "http://road-test.dev.php.gt",
"port": 9000,
"close_on_stop": true,
"debug": true
}
}
}
My php.ini
ends with:
zend_extension="/usr/lib/php5/20100525/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000
xdebug.remote_handler = "dbgp"
xdebug.remote_mode = req
xdebug.remote_connect_back = 1
xdebug.ide_key = "sublime.xdebug"
I'd like to help you in any way I could to resolve this issue. I'm sure it is something on my system that's slightly different.
Cheers.
I'm using your package (commit 5019438) with Sublime Text 2.0.2 build 2221; it's working fine for me except for one quirk: some integers in the Context pane are not rendered correctly. In the screenshot $batch_size
is actually 1000 and $current_task_count
is 1928. I checked these numbers with Eclipse and PhpStorm on the same system.
Let me start by saying, THANK YOU!!! I think you're doing a great job so far.
I was able to get it to work as described, however, when I debug a project that contains Doctrine, it basically locks up the system. The problem happens when It starts accessing the Doctrine classes. The system memory usage sky rockets and everything stops responding. Maybe it's too agressive at trying to display the current values of everything? Anyway, I hope this helps. And keep up the great work!
Hi there.
First, thanks for trying to finally bring a usable debug client to ST. In it's current state there's not much left preventing me to finally ditch Notepad++ and have it all in my favorite IDE.
That being said, I do have some suggestions:
I'd be glad to hear your opinion on these.
Hi,
An excellent update! xDebug is working as expected on my sublime3 installation. I looked around but cannot seem to find a way to change the default keyboard shortcuts. Can we change them... if so where or how for SublimeTextXdebug?
Is it possible to add buttons on the Sublime3 UI for the debugger? It's easier to click a button while debugging than using keyboard shortcuts.
Great update, nonetheless!
Hi,
I have been trying to setup Xdebug on Sublime 3 Build 3047 x64 and I'm experiencing some unusual stuff. I have setup XDebug with following configuration:
xdebug.remote_enable=1
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_connect_back=1
xdebug.remote_log="c:/wamp/tmp/xdebug.log
When i start debugger from Sublime, and try to debug it by placing breakpoint in my code, it doesn't stop when I'm running the code. I have played around a little bit and notice when I comment out xdebug.remote_connect_back=1
the program stops at breakpoint but without any xdebug context or watch values. Here is the screenshot of this problem.
Does anyone has any similar problems and have found solution for this issue?
Thank you for your time.
Sincerely,
Marko Jovanovic
Starting the debug raises a ValueError: ('is_visible must return a bool', <SublimeTextXdebug.main.XdebugClearBreakpointsCommand object at 0x03E42C90>)
.
I'm on a Vista machine, running Sublime Text 3 with SublimeTextXdebug via Package Control and i'll try to debug a vagrant box.
I like using my iTunes media controls on my mack keyboard (F7-F12), but I have extra Fn keys that are not in use (F13-F19) nthat I would prefer to map to Step In/Over/Out type controls.
Would be nice if when starting xdebug in sublime it would return all your open windows in their original display once u have finished.
Ctrl+F8 is used by Mac OS X 10.8.4 to move focus to the status items at the top right corner by default.
Ctrl+F1 โ Ctrl+F8 are already taken by the OS.
See System Preferences > Keyboard > Shortcuts > Keyboard ...
The fix 1cba552 has an issue with the Run To Line
command. The Xdebug panels are all empty. Also the debugger cannot be stopped. Stop Debugging (Launch Browser)
opens a hanging window. The only way to continue working (without Xdebug) is to Stop Debugging
and restart Sublime Text.
ST 2.0.2, Xdebug v2.1.1
Mac 10.6.8, debugging locally
The console says "ProtocolException: Length mismatch encountered while reading the Xdebug message"
In Xdebug.sublime-settings, if I set "launch_browser": true, hitting Shift+Ctrl+F9 to Start Debugging successfully fires up Chrome and opens the correct URL for debugging (http://www.example.local/?XDEBUG_SESSION_START=sublime.xdebug).
However, it immediately opens another tab at http://www.example.local/?XDEBUG_SESSION_STOP=sublime.xdebug. And continues opening hundreds of other tabs in the same order.. START, STOP, START, STOP, START, STOP. The only way to stop the madness is to close Sublime.
These are my settings:
{
"ide_key": "sublime.xdebug",
"url": "http://www.example.local",
"launch_browser": true,
"port": 9000,
"close_on_stop": true,
"max_depth": 3,
"max_children": 32,
"python_path" : "/usr/lib/python2.6",
"debug": true
}
Note: if I set "launch_browser": false, and then go to menu Tools > Xdebug > Start Debugging (Launch Browser), everything works correctly and only one tab get opened.
(Installed via package control on Ubuntu 12.04)
Hi there,
Debugging wordpress admin pages is not possible with 'Launch Browser' enabled because a the query string is not added to correctly.
Instead of
http://example.local/admin.php?page=some_admin_page.php``?``XDEBUG_SESSION_START=session_key
it should be
http://example.local/admin.php?page=some_admin_page.php``&``XDEBUG_SESSION_START=session_key
Traceback (most recent call last):
File "./sublime_plugin.py", line 337, in run_
File "./main.py", line 405, in run
File "./xdebug/session.py", line 320, in get_context_values
File "./xdebug/session.py", line 519, in generate_context_output
File "./xdebug/session.py", line 541, in generate_context_output
ValueError: unmatched '{' in format
When I reach a break point then I press Ctrl+Shift+F6, the editor window viewport moves down one line (as expected), but the yellow line pointer stays in the previous line.
When I click anywhere, outside the editor tab of the debugging code and then back agan the line pointer appears.
MacOSX 1.8.4, Python 2.7.2, SublimeText2. Getting no output for StackTrace. Following error is in log:
Traceback (most recent call last):
File "./sublime_plugin.py", line 337, in run_
File "./main.py", line 417, in run
File "./xdebug/view.py", line 311, in show_content
Boost.Python.ArgumentError: Python argument types in
Window.focus_view(Window, NoneType)
did not match C++ signature:
focus_view(SP<edit_window::reference>, SP)
Hey there,
Great plugin!
I'm trying to debug a command line utility called drush... which is a php based shell for drupal.
Generally it is invoked on the command line. Is there anyway i could use this plugin to debug? I've tried playing around with the sublime settings and settings some environmental variables in the terminal as per http://stackoverflow.com/questions/1947395/how-can-i-debug-a-php-cli-script-with-xdebug but havent been able to get anything.
Hello,
I have noticed that when you try to start/stop debugging using browser, sublime launches browser with same string:
http://localhost/?XDEBUG_SESSION_START=sublime.xdebug
The same string is used when you try to stop debugging using browser.
Shouldn't sublime launch browser with following link:
http://localhost/?XDEBUG_SESSION_STOP_NO_EXEC=sublime.xdebug
I'm using Sublime Text 3 Build 3047
Thank you for your time.
Sincerely,
Marko Jovanovic
Traceback (most recent call last):
File "./main.py", line 191, in connected
File "./xdebug/session.py", line 109, in read
File ".\xml\dom\minidom.py", line 1927, in parseString
File ".\xml\dom\expatbuilder.py", line 32, in
File ".\xml\parsers\expat.py", line 4, in
ImportError: /usr/lib/python2.6/lib-dynload/pyexpat.so: undefined symbol: _Py_HashSecret
This is what happens any time I try to debug something. I think I've tried almost everything, but can't get it working..
EDIT: I would like to point out this is on Ubuntu 13.04. The xdebug is set properly, because Netbeans can use it no problem. Also I just managed to get it running in Sublime on Windows 7, no luck with sublime and Ubuntu.
I have GitGutter installed.
In terms of the gutter markers, it seems to play nice with sublime-lint, and Xdebug breakpoints.
Xdebug line markers when debugging however, are not shown (the GitGutter markers seem to take precedence).
Is there anything that can be done? When debugging I don't care about the GitGutter markers - only when editing, so I'd rather Xdebug markers take precedence.
Thanks!
Thank you for this awesome package, I just came across it and it seems to have everything I need!
One problem I'm having though is when I get to the last statement and "Step Over" Sublime locks up and I get a maximum recursion depth error.
I've tried setting max_depth and max_children to lower values but end up having long freeze times still when I get to the last function.
Any help you could give me would be greatly appreciated! Thanks!
(Installed via sublime package control, on OS X 10.8)
I love this package, but this bug is really annoying.
{
"close_on_stop": true,
"debug": true,
"max_depth": 3,
"max_children": 32,
"port": 9000
}
PHP 5.3 Settings in php.ini
[xdebug]
; Reference: http://xdebug.org/docs/all_settings
xdebug.cli_color = 1
xdebug.collect_assignments = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.collect_vars = 1
xdebug.default_enable = 1
xdebug.max_nesting_level = 100
xdebug.overload_var_dump = 1
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000
xdebug.var_display_max_data = 512
xdebug.var_display_max_depth = 3
Hi !
I use the current version of ST3 and the latest commit of the master branch of your plugin.
There are 3 problems :
1 - The plugin successfully works by invoking the PHP command xdebug_break();
in the source code but not with the plugin breakpoints (same thing for conditional breakpoints)
The content of file ~/Library/Application Support/Sublime Text 3/Packages/User/Xdebug.breakpoints
is :
{"/Users/potsky/Work/Videospot/DEVST3/App/2727/www/index.php": {"8": {"id": null, "expression": null, "enabled": true}}}
But if I change this file like this :
{"/Users/potsky/Work/Videospot/DEVST3/App/2727/www/index.php": {}, "/Users/potsky/Work/VideoSpot/DEVST3/App/2727/www/index.php": {"8": {"id": null, "expression": null, "enabled": true}}}
This workaround also fix the second point below but if I add some breakpoints in an other php file, the trick does not work anymore...
2 - There is a problem with the 'bookmark' icon for the current line :
xdebug_break();
in the file, then close the file and refresh my browser, the file is going to open and the curent line is well highlighted3 - I put a breakpoint on line 8 for example. I add a line of code above. The breakpoint stays on line 8 which is empty now. I cannot remove the breakpoint anymore. To remove the breakpoint, I have to add some dumb code, I remove the breakpoint then I remove the dumb code.
I can test some modifications in the plugin if you tell me what to test ! Or I can checkout a special branch to test your modifications
Hello,
Since the last version, the debugging session crashes just when it starts with this:
Traceback (most recent call last):
File "./main.py", line 236, in connected
File "./xdebug/session.py", line 125, in read
File "<string>", line 84, in XML
I've tried adding pyexpat
with my trick and even trying to use the new python_path
configuration option with either python 2.7 or 2.6 built manually and it doesn't seem to make a difference.
Thanks.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.