65

我已经下载了sublimetext的编辑器,我想知道其中使用了什么 GUI 库。

编辑器可执行文件目录中的文件的文件名是:

bz2.pyd
Microsoft.VC90.CRT.manifest   
msvcp90.dll
msvcr90.dll                   
PackageSetup.py
PackageSetup.pyc              
pyexpat.pyd                   
python26.dll
python26.zip                  
select.pyd
sublimeplugin.py              
sublimeplugin.pyc
sublimetext.exe               
unicodedata.pyd
unins000.dat                  
unins000.exe
_ctypes.pyd                   
_elementtree.pyd
_hashlib.pyd                  
_socket.pyd
_ssl.pyd     

我可以从文件名中找到信息吗?

4

3 回答 3

137

Sublime Text 2 主要是用 C++ 编写的,并使用自定义 UI 工具包。这是作者 Jon Skinner 的解释: http://news.ycombinator.com/item?id= 2822114

我一直想写一篇关于这方面的详细信息的博客文章,但与许多事情一样,我通常最终会改为编码。Sublime Text 2 几乎完全是 C++(有少量用于 Cocoa 的 Objective C 和用于插件的 Python)。编码通常相当简单:在一个平台上编写代码(目前主要是 Linux,但我经常切换),然后确保它仍然可以在其他地方编译。Sublime Text 2 本身使用自定义 UI 工具包。有很多应用程序可能没有意义,但对于 Sublime Text 来说,这并不是一个不合理的选择,我一直知道无论工具包如何,很多 UI 控件都必须是自定义的(例如,文本控件和选项卡控件)。UI 工具包位于跨平台抽象层之上,

于 2012-02-08T21:23:52.567 回答
27

一点谷歌搜索表明它使用的是 Sublime GUI,从 Debian 源代码包来看,它是用 C++ 编写的。

再一次,strings在 Linuxsublime_text二进制文件上运行会显示以下共享库(相当于 Windows DLL),这可能会建议使用 gtk:

/lib/ld-linux.so.2
libgtk-x11-2.0.so.0
libgdk-x11-2.0.so.0
libatk-1.0.so.0
libgio-2.0.so.0
libpangoft2-1.0.so.0
libpangocairo-1.0.so.0
libgdk_pixbuf-2.0.so.0
libcairo.so.2
libpng12.so.0
libpango-1.0.so.0
libfreetype.so.6
libfontconfig.so.1
libgobject-2.0.so.0
libgmodule-2.0.so.0
libgthread-2.0.so.0
librt.so.1
libglib-2.0.so.0
libpthread.so.0
libdl.so.2
libutil.so.1
libm.so.6
libX11.so.6
libstdc++.so.6
libgcc_s.so.1
libc.so.6
libgio-2.0.so
libgio-2.0.so.0
module.so

这也暗示了gtk。

于 2011-08-18T04:49:52.110 回答
16

它可能不是用 Python 编写的。你看到 Python 代码的原因是用户可以在 Python 中编写脚本/插件来扩展 Sublime Text。我怀疑它是用 GTK 作为 GUI 工具包用 C++ 编写的。

于 2011-08-21T00:26:55.953 回答