Wednesday, March 07, 2012

高亮 LXR 的代碼

資料來源:高亮 LXR 的代碼


LXR ── Linux Cross Refercence。Linux內核源碼閱讀和查詢的利器之一,不用多介紹了。LXR安裝後看到的源碼是沒有顏色的,用慣了語法高亮的編輯器,一下子看到滿屏的黑白代碼不免有點枯燥。於是給它裝了個可以顯示語法顏色的工具。
1、安裝google-code-prettify
項目地址是:http://code.google.com/p/google-code-prettify/
$ wget http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css
$ wget http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js
我把它們放到lxr的安裝目錄下面,lxr我放在web服務器的根目錄,所以就
2、修改lxr/http/template-head
這是lxr默認的html頭,在<head></head>標籤之間加上
1<link href="/lxr/prettify.css" type="text/css" rel="stylesheet" />
2<script type="text/javascript" src="/lxr/prettify.js"></script>
注意文件路徑,不在乎需要從遠方服務器讀取的話,也可以
1<link href='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css' rel='stylesheet' type='text/css'/>
2<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進行如下修改即可:
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,例如加個方框啥的。

No comments: