前一段时间,使用lxr 搭建了 android源码索引平台,具体搭建过程参考另一篇blog:LXR 索引Android 源码
平台在逐步完善中,界面简单可依赖,并加入了用户单点登录、用户权限设定、平台访问计数、搜索关键字高亮显示等功能。
来说说关键字在源码中高亮显示的具体实现,这部分的开发,修改了lxr 底层lib 库以及ident文件,思想是对在url 中加入关键字信息,在点击link 后,跳转到源码文件,可以在url中获得关键字,实现高亮,具体实现如下:
ident 文件的修改,有“# beaver add(update)的行”:
sub refexpand {
my $templ = shift;
my $ret = '';
my @refs = $index->symdeclarations($identifier, $releaseid);
my $file_hits = 0;
my $last_file;
my $def;
foreach my $def (@refs) {
# my ($file, $line, $type, $rel) = @$def;
my ($file, $line, $type, $rel, $i) = @$def; # beaver add
$i = $identifier; # beaver add
$file_hits++ if $file ne $last_file;
$last_file = $file;
$rel &&= "(member of " . idref($rel, "search-member", $rel) . ")";
$ret .= expandtemplate(
$templ,
(
file => sub { $file },
line => sub { $line },
type => sub { $type },
rel => sub { $rel },
[color=red]identifier => sub {$i},[/color]
fileref => sub {
fileref("$file, line $line", "search-decl", $file, $line, $i); # beaver update
}
)
);
# print("<span class=\"search-li1\"> $type_names{$type} in ".
# fileref("$file, line $line", "search-decl",
# $file, $line).
# " $rel</span>\n");
}
$declare_hits = "<div style='margin-left:30px'>" . scalar @refs . " declarations in $file_hits files.</div>";
return $ret;
}
sub usesexpand {
my $templ = shift;
my $ret = '';
my @uses = $index->symreferences($identifier, $releaseid);
my $file_hits = 0;
my $last_file;
foreach my $ref (sort { $$a[0] cmp $$b[0] } @uses) {
# my ($file, $line) = @$ref;
my ($file, $line ,$i) = @$ref; #beaver add
$i = $identifier; #beaver add
$file_hits++ if $file ne $last_file;
$last_file = $file;
$ret .= expandtemplate(
$templ,
(
file => sub { $file },
line => sub { $line },
[color=red]identifier => sub {$i}, # beaver add[/color]
fileref => sub {
fileref("$file, line $line", "search-ref", $file, $line, $i); # beaver update
}
)
);
}
$reference_hits = "<div style='margin-left:30px'>" . scalar @uses . " references in $file_hits files.</div>";
return $ret;
}
...
修改 lxr/lib/LXR/Commom.pm文件中fileref 函数:
sub fileref {
my ($desc, $css, $path, $line, $identifier, @args) = @_; # beaver update
# jwz: URL-quote any special characters.
$path =~ s|([^-a-zA-Z0-9.\@/_\r\n])|sprintf("%%%02X", ord($1))|ge;
if ($line > 0 && length($line) < 3) {
$line = ('0' x (3 - length($line))) . $line;
}
return ("<a class='$css' href=\"$config->{virtroot}/source$path"
.(&urlargs(@args) ne '' ? &urlargs(@args)."&" : "?")
. "i=$identifier" # beaver add
. ($line > 0 ? "#$line" : "")
. "\"\>$desc</a>");
...
}
修改以上两个文件,实现搜索的关键字在源码中高亮显示,截图如下所示,分别为输入关键字-》显示搜索结果-》点击list查看源码:
- 大小: 43.3 KB
- 大小: 109.2 KB
- 大小: 62.3 KB
分享到:
相关推荐
1. **全文搜索**:LXR允许用户输入关键字进行全局搜索,返回的结果会包含所有匹配的源文件、函数、变量等,极大地提高了代码查找效率。 2. **源码导航**:每个源文件都配有一份详细的索引,用户可以点击文件名直接...
5. **源代码高亮**:LXR对显示的源代码进行语法高亮,便于阅读和理解代码逻辑。 6. **自定义配置**:LXR允许用户根据自己的需求调整界面和搜索设置,以适应不同的开发环境和习惯。 安装和使用LXR 0.9.6版通常涉及...
- **自定义配置**:可以根据个人需求定制lxr的行为,例如设置搜索范围、显示格式等。 2. **安装与使用:** - 解压"lxr-0.9.5.zip",获取lxr的源码包。 - 配置环境,确保具备编译所需的依赖,如GCC、Perl等。 - ...
对于lxr的高级用法,可以自定义配置文件,设置索引规则、搜索选项等,以满足不同项目的需求。此外,lxr还可以与其他版本控制系统如Git或SVN集成,实现对版本化源码的动态索引。 总的来说,lxr是开发过程中的一款...
LXR+mysql+glimpse+apache源码浏览平台搭建心得(二)lxr.conf
首先,LXR(Linux Cross-Reference)是一款强大的开源源码索引工具,它能为大型代码库生成可供搜索的索引,便于快速查找函数、变量、宏定义等。安装LXR需要先获取源码,并遵循以下步骤: 1. 安装依赖:在大多数...
方法:我们研究了LXR激动剂(GW3965)或PPARγ(吡格列酮)和PPARδ(GW0742)激动剂在SLE动物模型,雌性MRL / MpJ-Fas / J小鼠和BALB / cAJcl小鼠经p烷治疗后的疗效。 使用单向方差分析和Tukey的真实显着差异检验...
牛LXRα基因mRNA重组慢病毒载体的构建及其对牛肌肉卫星细胞的干扰效果,刘永峰,赵璐,肝X受体α(LXRα)基因是核激素受体家族的成员,它可以调节参与胆固醇代谢基因的转录。近期研究发现LXRα被认为是一个调节巨噬...
计算机网络lxr4.pkt
基于生物信息学研究的儿茶素显示作为有效的LXR激动剂候选物,可以用作动脉粥样硬化的抑制剂。 这项研究旨在证明,通过在暴露于ox-LDL的培养的巨噬细胞中利用ABCA1,ABCG1,SRB1基因表达的作用,施用Catechins绿茶...
通用源代码索引器和交叉引用器,可提供基于Web的源代码浏览以及指向任何标识符的定义和用法的链接。 支持多种语言。 http://lxr.sourceforge.net中的最新信息
【LXRβ(肝X受体β)】:LXRβ是属于核受体家族的一种蛋白质,它在调节胆固醇代谢和炎症反应中起着关键作用。研究表明,LXRβ可能通过影响神经元功能和突触可塑性,对阿尔茨海默病的进程产生影响。 【突触可塑性】...
"LXR.rar_android_contact"这个压缩包文件包含的是Android应用程序处理联系人(Contact)功能的源代码,这对于开发者,尤其是那些致力于构建社交应用或者需要管理用户联系信息的App开发者来说,是一个非常有价值的...
Sonic Potions LXR Drumsynth固件 LXR是基于32位Cortex-M4处理器和Atmega644 8位CPU的数字鼓合成器。 由朱利安·施密特(Julian Schmidt)开发。 The 'front' folder contains the AVR code The 'mainboard' folder...
针对离心式冷水机组制冷剂的特殊要求,遵循优势互补的原则,筛选出了两种新的氟利昂 12(R12)离心式冷水机组替代物 LXR1和 LXR2。对它们的基本物性参数和循环性能与 R12进行了对比;并研究了蒸发温度、冷凝温度、过热度...
本研究发现,hsa-miR-206通过与LXRα 3′ UTR直接相互作用,以抑制细胞中LXRα的mRNA水平,下调LXRα的转录活性,并最终使LXRα配体GW3965对 LXR的目的基因SCD-1的诱导作用受到抑制.这些结果表明,hsa-miR-206能够...
Lxr82.github.io 测试
Webglimpse requires Glimpse. Separate use of Glimpse requires a license. If you are installing Webglimpse via ssh, you will need to install Glimpse first. (The FTP and cPanel installers automatically ...
java版商城源码下载 SpringBoot-SecondKill 介绍 基于SpringBoot+Mybatis+Mysql+中间件构建的商城秒杀系统;其中,中间件主要包括:缓存中间件Redis、消息中间件RabbitMQ、统一协调调度中心中间件ZooKeeper、综合...
《通过LXRα基因多态性进行牛育种方法》 在现代畜牧业中,基因育种技术已经成为提高动物生产性能、抗病能力和适应性的关键手段。这篇资料详细介绍了利用LXRα(Liver X Receptor alpha)基因多态性在牛育种中的应用...