LXR —— Linux Cross Refercence。Linux内核源码阅读和查询的利器之一,不用多介绍了。LXR安装后看到的源码是没有颜色的,用惯了语法高亮的编辑器,一下子看到满屏的黑白代码不免有点枯燥。于是给它装了个可以显示语法颜色的工具。
1、安装google-code-prettify
项目地址是:http://code.google.com/p/google-code-prettify/
我把它们放到lxr的安装目录下面,lxr我放在web服务器的根目录,所以就
2、修改lxr/http/template-head
这是lxr默认的html头,在<head></head>标签之间加上
1 2 |
<link href="/lxr/prettify.css" type="text/css" rel="stylesheet" /> <script type="text/javascript" src="/lxr/prettify.js"></script> |
注意文件路径,不在乎需要从远方服务器读取的话,也可以
1 2 |
<link href='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css' rel='stylesheet' type='text/css'/> <script src='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js' type='text/javascript'></script> |
这样也可以让google-code-prettify的维护者来自行维护这些脚本。
然后找到<body>标签:
1 |
<body bgcolor=white> |
改为
1 |
<body bgcolor=white onload='prettyPrint()'> |
3、修改lxr/http/source
这是个perl脚本,查找字符串"<pre>",这有好几处,都在printfile这个子函数里面,改为
1 |
<pre class=\"prettyprint\"> |
已经好了,这样再看LXR里面的代码就可以看到漂亮的语法颜色了。效果图:
2009-05-01 Update:
上面的效果图有一个问题,就是代码的行号也被渲染高亮了。这个可以通过给行号标识加上"nocode"这个prettifier提供的class来解决。对lxr/http/lib/LXR/Common.pm进行如下修改即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
diff --git a/Common.pm b/Common.pm index 9e23088..529d5a2 100755 --- a/Common.pm +++ b/Common.pm @@ -151,7 +151,7 @@ sub linetag { $tag .= ' ' if $_[1] < 10; $tag .= ' ' if $_[1] < 100; $tag .= &fileref($_[1], $_[0], $_[1]).' '; - $tag =~ s/<a/<a name=L$_[1]/; + $tag =~ s/<a/<a class="nocode" name=L$_[1]/; # $_[1]++; return($tag); } |
还可以在自己的css文件里面重写nocode这个class,例如加个方框啥的。