2009年3月23日

用gtksourceview实现代码高亮

最近用pygtk在写一个半可视化的ui编辑器. 其中要嵌入一个小编辑器给用户写一小段lua代码。
虽然是个小部件,用个textview糊弄一下就好,但做为一个有爱而又爱折腾的人,加上语法高亮简直是一定的事情。

看了下gtksourceview2的manual,几个模块还是相当清晰的,用起来也很方便,简单的实现lua的语法高亮,只要下面短短几行代码.(还附送其他功能哦)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import gtk
import gtksourceview2

win = gtk.Window()

src_buffer = gtksourceview2.Buffer()
manager = gtksourceview2.LanguageManager()
language = manager.get_language("lua") #使用lua语法
src_buffer.set_language(language)
src_buffer.set_highlight_syntax(True) #打开语法高亮
view = gtksourceview2.View(src_buffer)
view.set_show_line_numbers(True) #显示行号
view.set_auto_indent(True) #自动缩进
view.set_insert_spaces_instead_of_tabs(True) #用空格代替tab
view.set_tab_width(4) #tab宽度4
win.resize(800,400)
win.add(view)

win.connect('destroy',gtk.main_quit)
win.show_all()
gtk.main()
gtksourceview支持的语言有
ada awk boo c c-sharp changelog chdr cpp css d def desktop diff docbook dot dpatch dtd eiffel erlang forth fortran gap gettext-translation gtk-doc gtkrc haddock haskell haskell-literate html idl ini java js latex libtool lua m4 makefile msil nemerle objc objective-caml ocl octave pascal perl php pkgconfig python r rpmspec ruby scheme sh sql tcl texinfo vala vbnet verilog vhdl xml xslt yacc
基本上常用的语言都有 。

下一步干啥?加个智能补全 ^_^

----------------牢骚的分割线-----------
本来蠢蠢欲动想装awesome玩下的,没想最新的awesome要0.30的xcb支持,
ubuntu8.10才是0.20的,编译不了,兴趣大减。
还好下月9.04就出来了,应该有更新。

没想用ubuntu也好些年头了...

没有评论: