本文描述的修改在 FireBird 2.5 和 2.6 上均可使用.
FireBird 原始代码在阅读版面文章时, 阅读完毕可以不退回文章列表画面,
而直接阅读相邻的上一篇或者下一篇文章. 但是阅读精华区文章时没有这个功能.
考虑到阅读精华区的系列文章(比如小说连载)时, 很需要直接阅读"下一篇"的功能,
特修改代码增添了这个功能:
在精华区阅读文章到末尾时,用上/下箭头直接跳转到前/后一项
需要特别说明的是,如果上/下一项是 "目录" 而非 "文件" ,
则按跳转键后也将直接跳转到该目录中去,显示目录列表.
此外,跳转支持在第一篇文章和最后一篇文章处的卷绕.
修改代码于 Sun Sep 13 18:28:43 1998 由 Leeward 在水木清华站开发并运行.
=========================================================================
程序修改:
bbs_src/announce.c 的 a_menu 函数中:
if( ch == 'Q' || ch == 'q' || ch == KEY_LEFT || ch == EOF )
break;
switch( ch ) {
>两句中间添加一个标号,成为:
if( ch == 'Q' || ch == 'q' || ch == KEY_LEFT || ch == EOF )
break;
EXPRESS: /* Leeward 98.09.13 */
switch( ch ) {
然后在这个 switch 块内的 case KEY_RIGHT: 块内下列代码处:
if( dashf( fname ) ) {
ansimore( fname, YEA );
}
>修改并添加成为:
if( dashf( fname ) ) {
/*ansimore( fname, YEA );*/
/* Leeward 98.09.13 新添功能∶
在精华区阅读文章到末尾时,用上/下箭头直接跳转到前/后一项 */
ansimore( fname, NA );
prints("^[[1m^[[44m^[[31m[阅读精华区资料] ^[[33m结束
Q, ← │ 上一项资料 U,↑│ 下一项资料 <Enter>,<Space>,↓ ^[[m");
switch( ch = egetch() )
{
case KEY_DOWN: case ' ': case '\n':
if ( ++ me.now >= me.num ) me.now = 0;
ch = KEY_RIGHT; goto EXPRESS;
case KEY_UP: case 'u': case'U':
if (-- me.now < 0 ) me.now = me.num - 1;
ch = KEY_RIGHT; goto EXPRESS;
case 'h':
goto EXPRESS;
default: break;
}
}
特别说明两点:
1. ^[[1m 的输入方式是(在 vi 中):Esc i Ctrl-V Ctrl-[ [ 1 m 一共七次击键
2.上面的 prints 一句中的字符串应该是写在一行内的,本文是为了好看才折行的.
--
修改:Leeward FROM 202.112.58.200
FROM 202.112.58.200