Fossil SCM

Add support for search built-in help text.

drh 2025-02-26 12:49 trunk
Commit 64040c7254a26bb22023ba3b1841e1562ee4db56148caef67c6051d85eca601a
--- src/dispatch.c
+++ src/dispatch.c
@@ -832,10 +832,11 @@
832832
833833
style_set_current_feature("tkt");
834834
style_header("Help: %s", zCmd);
835835
836836
style_submenu_element("Command-List", "%R/help");
837
+ style_submenu_element("Search","%R/search?y=h");
837838
rc = dispatch_name_search(zCmd, CMDFLAG_ANY|CMDFLAG_PREFIX, &pCmd);
838839
if( *zCmd=='/' ){
839840
/* Some of the webpages require query parameters in order to work.
840841
** @ <h1>The "<a href='%R%s(zCmd)'>%s(zCmd)</a>" page:</h1> */
841842
@ <h1>The "%h(zCmd)" page:</h1>
@@ -873,10 +874,11 @@
873874
int i;
874875
const char *zWidth = "28ex";
875876
unsigned char occHelp[FOSSIL_MX_CMDIDX] = {0}; /* Help str occurrences */
876877
int bktHelp[FOSSIL_MX_CMDIDX][MX_HELP_DUP] = {{0}};/* Help str->commands */
877878
style_header("Help");
879
+ search_screen(SRCH_HELP, 0);
878880
879881
@ <a name='commands'></a>
880882
@ <h1>Available commands:</h1>
881883
@ <div class="columns" style="column-width: %s(zWidth);">
882884
@ <ul>
883885
--- src/dispatch.c
+++ src/dispatch.c
@@ -832,10 +832,11 @@
832
833 style_set_current_feature("tkt");
834 style_header("Help: %s", zCmd);
835
836 style_submenu_element("Command-List", "%R/help");
 
837 rc = dispatch_name_search(zCmd, CMDFLAG_ANY|CMDFLAG_PREFIX, &pCmd);
838 if( *zCmd=='/' ){
839 /* Some of the webpages require query parameters in order to work.
840 ** @ <h1>The "<a href='%R%s(zCmd)'>%s(zCmd)</a>" page:</h1> */
841 @ <h1>The "%h(zCmd)" page:</h1>
@@ -873,10 +874,11 @@
873 int i;
874 const char *zWidth = "28ex";
875 unsigned char occHelp[FOSSIL_MX_CMDIDX] = {0}; /* Help str occurrences */
876 int bktHelp[FOSSIL_MX_CMDIDX][MX_HELP_DUP] = {{0}};/* Help str->commands */
877 style_header("Help");
 
878
879 @ <a name='commands'></a>
880 @ <h1>Available commands:</h1>
881 @ <div class="columns" style="column-width: %s(zWidth);">
882 @ <ul>
883
--- src/dispatch.c
+++ src/dispatch.c
@@ -832,10 +832,11 @@
832
833 style_set_current_feature("tkt");
834 style_header("Help: %s", zCmd);
835
836 style_submenu_element("Command-List", "%R/help");
837 style_submenu_element("Search","%R/search?y=h");
838 rc = dispatch_name_search(zCmd, CMDFLAG_ANY|CMDFLAG_PREFIX, &pCmd);
839 if( *zCmd=='/' ){
840 /* Some of the webpages require query parameters in order to work.
841 ** @ <h1>The "<a href='%R%s(zCmd)'>%s(zCmd)</a>" page:</h1> */
842 @ <h1>The "%h(zCmd)" page:</h1>
@@ -873,10 +874,11 @@
874 int i;
875 const char *zWidth = "28ex";
876 unsigned char occHelp[FOSSIL_MX_CMDIDX] = {0}; /* Help str occurrences */
877 int bktHelp[FOSSIL_MX_CMDIDX][MX_HELP_DUP] = {{0}};/* Help str->commands */
878 style_header("Help");
879 search_screen(SRCH_HELP, 0);
880
881 @ <a name='commands'></a>
882 @ <h1>Available commands:</h1>
883 @ <div class="columns" style="column-width: %s(zWidth);">
884 @ <ul>
885
+33 -7
--- src/search.c
+++ src/search.c
@@ -634,15 +634,16 @@
634634
srchFlags = SRCH_ALL;
635635
}else{
636636
srchFlags = 0;
637637
for(i=0; zScope[i]; i++){
638638
switch( zScope[i] ){
639
- case 'a': srchFlags = SRCH_ALL; break;
639
+ case 'a': srchFlags = SRCH_ALL; break;
640640
case 'c': srchFlags |= SRCH_CKIN; break;
641641
case 'd': srchFlags |= SRCH_DOC; break;
642642
case 'e': srchFlags |= SRCH_TECHNOTE; break;
643643
case 'f': srchFlags |= SRCH_FORUM; break;
644
+ case 'h': srchFlags |= SRCH_HELP; break;
644645
case 't': srchFlags |= SRCH_TKT; break;
645646
case 'w': srchFlags |= SRCH_WIKI; break;
646647
}
647648
}
648649
}
@@ -654,10 +655,13 @@
654655
if( !search_index_exists() ){
655656
search_fullscan(zPattern, srchFlags); /* Full-scan search */
656657
}else{
657658
search_update_index(srchFlags); /* Update the index */
658659
search_indexed(zPattern, srchFlags); /* Indexed search */
660
+ if( srchFlags & SRCH_HELP ){
661
+ search_fullscan(zPattern, SRCH_HELP);
662
+ }
659663
}
660664
db_prepare(&q, "SELECT snip, label, score, id, date"
661665
" FROM x"
662666
" ORDER BY score DESC, date DESC;");
663667
blob_init(&com, 0, 0);
@@ -731,11 +735,12 @@
731735
#define SRCH_DOC 0x0002 /* Search over embedded documents */
732736
#define SRCH_TKT 0x0004 /* Search over tickets */
733737
#define SRCH_WIKI 0x0008 /* Search over wiki */
734738
#define SRCH_TECHNOTE 0x0010 /* Search over tech notes */
735739
#define SRCH_FORUM 0x0020 /* Search over forum messages */
736
-#define SRCH_ALL 0x003f /* Search over everything */
740
+#define SRCH_HELP 0x0040 /* Search built-in help (full-scan only) */
741
+#define SRCH_ALL 0x007f /* Search over everything */
737742
#endif
738743
739744
/*
740745
** Remove bits from srchFlags which are disallowed by either the
741746
** current server configuration or by user permissions. Return
@@ -743,16 +748,17 @@
743748
*/
744749
unsigned int search_restrict(unsigned int srchFlags){
745750
static unsigned int knownGood = 0;
746751
static unsigned int knownBad = 0;
747752
static const struct { unsigned m; const char *zKey; } aSetng[] = {
748
- { SRCH_CKIN, "search-ci" },
749
- { SRCH_DOC, "search-doc" },
750
- { SRCH_TKT, "search-tkt" },
751
- { SRCH_WIKI, "search-wiki" },
753
+ { SRCH_CKIN, "search-ci" },
754
+ { SRCH_DOC, "search-doc" },
755
+ { SRCH_TKT, "search-tkt" },
756
+ { SRCH_WIKI, "search-wiki" },
752757
{ SRCH_TECHNOTE, "search-technote" },
753
- { SRCH_FORUM, "search-forum" },
758
+ { SRCH_FORUM, "search-forum" },
759
+ { SRCH_HELP, "search-help" },
754760
};
755761
int i;
756762
if( g.perm.Read==0 ) srchFlags &= ~(SRCH_CKIN|SRCH_DOC|SRCH_TECHNOTE);
757763
if( g.perm.RdTkt==0 ) srchFlags &= ~(SRCH_TKT);
758764
if( g.perm.RdWiki==0 ) srchFlags &= ~(SRCH_WIKI);
@@ -912,10 +918,23 @@
912918
" search_snippet()"
913919
" FROM event JOIN blob on event.objid=blob.rid"
914920
" WHERE search_match('',body('f',rid,NULL));"
915921
);
916922
}
923
+ if( (srchFlags & SRCH_HELP)!=0 ){
924
+ helptext_vtab_register(g.db);
925
+ db_multi_exec(
926
+ "INSERT INTO x(label,url,score,id,snip)"
927
+ " SELECT format('Built-in help for the \"%%s\" %%s',name,type),"
928
+ " '/help?cmd='||name,"
929
+ " search_score(),"
930
+ " 'h'||rowid,"
931
+ " search_snippet()"
932
+ " FROM helptext"
933
+ " WHERE search_match('',helptext.helptext);"
934
+ );
935
+ }
917936
}
918937
919938
/*
920939
** Number of significant bits in a u32
921940
*/
@@ -1068,10 +1087,11 @@
10681087
{ SRCH_DOC, 'd' },
10691088
{ SRCH_TKT, 't' },
10701089
{ SRCH_WIKI, 'w' },
10711090
{ SRCH_TECHNOTE, 'e' },
10721091
{ SRCH_FORUM, 'f' },
1092
+ { SRCH_HELP, 'h' },
10731093
};
10741094
int i;
10751095
for(i=0; i<count(aMask); i++){
10761096
if( srchFlags & aMask[i].m ){
10771097
blob_appendf(&sql, "%sftsdocs.type='%c'", zSep, aMask[i].c);
@@ -1169,10 +1189,13 @@
11691189
if( !search_index_exists() ){
11701190
search_fullscan(zPattern, srchFlags); /* Full-scan search */
11711191
}else{
11721192
search_update_index(srchFlags); /* Update the index, if necessary */
11731193
search_indexed(zPattern, srchFlags); /* Indexed search */
1194
+ if( srchFlags & SRCH_HELP ){
1195
+ search_fullscan(zPattern, SRCH_HELP);
1196
+ }
11741197
}
11751198
db_prepare(&q, "SELECT url, snip, label, score, id, substr(date,1,10)"
11761199
" FROM x"
11771200
" ORDER BY score DESC, date DESC;");
11781201
while( db_step(&q)==SQLITE_ROW ){
@@ -1239,10 +1262,11 @@
12391262
case SRCH_DOC: zType = " Docs"; zClass = "Doc"; break;
12401263
case SRCH_TKT: zType = " Tickets"; zClass = "Tkt"; break;
12411264
case SRCH_WIKI: zType = " Wiki"; zClass = "Wiki"; break;
12421265
case SRCH_TECHNOTE: zType = " Tech Notes"; zClass = "Note"; break;
12431266
case SRCH_FORUM: zType = " Forum"; zClass = "Frm"; break;
1267
+ case SRCH_HELP: zType = " Help"; zClass = "Hlp"; break;
12441268
}
12451269
if( srchFlags==0 ){
12461270
if( mFlags & 0x02 ) return 0;
12471271
zDisable1 = " disabled";
12481272
zDisable2 = " disabled";
@@ -1266,10 +1290,11 @@
12661290
{ "d", "Docs", SRCH_DOC },
12671291
{ "t", "Tickets", SRCH_TKT },
12681292
{ "w", "Wiki", SRCH_WIKI },
12691293
{ "e", "Tech Notes", SRCH_TECHNOTE },
12701294
{ "f", "Forum", SRCH_FORUM },
1295
+ { "h", "Help", SRCH_HELP },
12711296
};
12721297
const char *zY = PD("y","all");
12731298
unsigned newFlags = srchFlags;
12741299
int i;
12751300
@ <select size='1' name='y'>
@@ -1321,10 +1346,11 @@
13211346
** d -> documentation
13221347
** t -> tickets
13231348
** w -> wiki
13241349
** e -> tech notes
13251350
** f -> forum
1351
+** h -> built-in help
13261352
** all -> everything
13271353
*/
13281354
void search_page(void){
13291355
const int isSearch = P("s")!=0;
13301356
login_check_credentials();
13311357
--- src/search.c
+++ src/search.c
@@ -634,15 +634,16 @@
634 srchFlags = SRCH_ALL;
635 }else{
636 srchFlags = 0;
637 for(i=0; zScope[i]; i++){
638 switch( zScope[i] ){
639 case 'a': srchFlags = SRCH_ALL; break;
640 case 'c': srchFlags |= SRCH_CKIN; break;
641 case 'd': srchFlags |= SRCH_DOC; break;
642 case 'e': srchFlags |= SRCH_TECHNOTE; break;
643 case 'f': srchFlags |= SRCH_FORUM; break;
 
644 case 't': srchFlags |= SRCH_TKT; break;
645 case 'w': srchFlags |= SRCH_WIKI; break;
646 }
647 }
648 }
@@ -654,10 +655,13 @@
654 if( !search_index_exists() ){
655 search_fullscan(zPattern, srchFlags); /* Full-scan search */
656 }else{
657 search_update_index(srchFlags); /* Update the index */
658 search_indexed(zPattern, srchFlags); /* Indexed search */
 
 
 
659 }
660 db_prepare(&q, "SELECT snip, label, score, id, date"
661 " FROM x"
662 " ORDER BY score DESC, date DESC;");
663 blob_init(&com, 0, 0);
@@ -731,11 +735,12 @@
731 #define SRCH_DOC 0x0002 /* Search over embedded documents */
732 #define SRCH_TKT 0x0004 /* Search over tickets */
733 #define SRCH_WIKI 0x0008 /* Search over wiki */
734 #define SRCH_TECHNOTE 0x0010 /* Search over tech notes */
735 #define SRCH_FORUM 0x0020 /* Search over forum messages */
736 #define SRCH_ALL 0x003f /* Search over everything */
 
737 #endif
738
739 /*
740 ** Remove bits from srchFlags which are disallowed by either the
741 ** current server configuration or by user permissions. Return
@@ -743,16 +748,17 @@
743 */
744 unsigned int search_restrict(unsigned int srchFlags){
745 static unsigned int knownGood = 0;
746 static unsigned int knownBad = 0;
747 static const struct { unsigned m; const char *zKey; } aSetng[] = {
748 { SRCH_CKIN, "search-ci" },
749 { SRCH_DOC, "search-doc" },
750 { SRCH_TKT, "search-tkt" },
751 { SRCH_WIKI, "search-wiki" },
752 { SRCH_TECHNOTE, "search-technote" },
753 { SRCH_FORUM, "search-forum" },
 
754 };
755 int i;
756 if( g.perm.Read==0 ) srchFlags &= ~(SRCH_CKIN|SRCH_DOC|SRCH_TECHNOTE);
757 if( g.perm.RdTkt==0 ) srchFlags &= ~(SRCH_TKT);
758 if( g.perm.RdWiki==0 ) srchFlags &= ~(SRCH_WIKI);
@@ -912,10 +918,23 @@
912 " search_snippet()"
913 " FROM event JOIN blob on event.objid=blob.rid"
914 " WHERE search_match('',body('f',rid,NULL));"
915 );
916 }
 
 
 
 
 
 
 
 
 
 
 
 
 
917 }
918
919 /*
920 ** Number of significant bits in a u32
921 */
@@ -1068,10 +1087,11 @@
1068 { SRCH_DOC, 'd' },
1069 { SRCH_TKT, 't' },
1070 { SRCH_WIKI, 'w' },
1071 { SRCH_TECHNOTE, 'e' },
1072 { SRCH_FORUM, 'f' },
 
1073 };
1074 int i;
1075 for(i=0; i<count(aMask); i++){
1076 if( srchFlags & aMask[i].m ){
1077 blob_appendf(&sql, "%sftsdocs.type='%c'", zSep, aMask[i].c);
@@ -1169,10 +1189,13 @@
1169 if( !search_index_exists() ){
1170 search_fullscan(zPattern, srchFlags); /* Full-scan search */
1171 }else{
1172 search_update_index(srchFlags); /* Update the index, if necessary */
1173 search_indexed(zPattern, srchFlags); /* Indexed search */
 
 
 
1174 }
1175 db_prepare(&q, "SELECT url, snip, label, score, id, substr(date,1,10)"
1176 " FROM x"
1177 " ORDER BY score DESC, date DESC;");
1178 while( db_step(&q)==SQLITE_ROW ){
@@ -1239,10 +1262,11 @@
1239 case SRCH_DOC: zType = " Docs"; zClass = "Doc"; break;
1240 case SRCH_TKT: zType = " Tickets"; zClass = "Tkt"; break;
1241 case SRCH_WIKI: zType = " Wiki"; zClass = "Wiki"; break;
1242 case SRCH_TECHNOTE: zType = " Tech Notes"; zClass = "Note"; break;
1243 case SRCH_FORUM: zType = " Forum"; zClass = "Frm"; break;
 
1244 }
1245 if( srchFlags==0 ){
1246 if( mFlags & 0x02 ) return 0;
1247 zDisable1 = " disabled";
1248 zDisable2 = " disabled";
@@ -1266,10 +1290,11 @@
1266 { "d", "Docs", SRCH_DOC },
1267 { "t", "Tickets", SRCH_TKT },
1268 { "w", "Wiki", SRCH_WIKI },
1269 { "e", "Tech Notes", SRCH_TECHNOTE },
1270 { "f", "Forum", SRCH_FORUM },
 
1271 };
1272 const char *zY = PD("y","all");
1273 unsigned newFlags = srchFlags;
1274 int i;
1275 @ <select size='1' name='y'>
@@ -1321,10 +1346,11 @@
1321 ** d -> documentation
1322 ** t -> tickets
1323 ** w -> wiki
1324 ** e -> tech notes
1325 ** f -> forum
 
1326 ** all -> everything
1327 */
1328 void search_page(void){
1329 const int isSearch = P("s")!=0;
1330 login_check_credentials();
1331
--- src/search.c
+++ src/search.c
@@ -634,15 +634,16 @@
634 srchFlags = SRCH_ALL;
635 }else{
636 srchFlags = 0;
637 for(i=0; zScope[i]; i++){
638 switch( zScope[i] ){
639 case 'a': srchFlags = SRCH_ALL; break;
640 case 'c': srchFlags |= SRCH_CKIN; break;
641 case 'd': srchFlags |= SRCH_DOC; break;
642 case 'e': srchFlags |= SRCH_TECHNOTE; break;
643 case 'f': srchFlags |= SRCH_FORUM; break;
644 case 'h': srchFlags |= SRCH_HELP; break;
645 case 't': srchFlags |= SRCH_TKT; break;
646 case 'w': srchFlags |= SRCH_WIKI; break;
647 }
648 }
649 }
@@ -654,10 +655,13 @@
655 if( !search_index_exists() ){
656 search_fullscan(zPattern, srchFlags); /* Full-scan search */
657 }else{
658 search_update_index(srchFlags); /* Update the index */
659 search_indexed(zPattern, srchFlags); /* Indexed search */
660 if( srchFlags & SRCH_HELP ){
661 search_fullscan(zPattern, SRCH_HELP);
662 }
663 }
664 db_prepare(&q, "SELECT snip, label, score, id, date"
665 " FROM x"
666 " ORDER BY score DESC, date DESC;");
667 blob_init(&com, 0, 0);
@@ -731,11 +735,12 @@
735 #define SRCH_DOC 0x0002 /* Search over embedded documents */
736 #define SRCH_TKT 0x0004 /* Search over tickets */
737 #define SRCH_WIKI 0x0008 /* Search over wiki */
738 #define SRCH_TECHNOTE 0x0010 /* Search over tech notes */
739 #define SRCH_FORUM 0x0020 /* Search over forum messages */
740 #define SRCH_HELP 0x0040 /* Search built-in help (full-scan only) */
741 #define SRCH_ALL 0x007f /* Search over everything */
742 #endif
743
744 /*
745 ** Remove bits from srchFlags which are disallowed by either the
746 ** current server configuration or by user permissions. Return
@@ -743,16 +748,17 @@
748 */
749 unsigned int search_restrict(unsigned int srchFlags){
750 static unsigned int knownGood = 0;
751 static unsigned int knownBad = 0;
752 static const struct { unsigned m; const char *zKey; } aSetng[] = {
753 { SRCH_CKIN, "search-ci" },
754 { SRCH_DOC, "search-doc" },
755 { SRCH_TKT, "search-tkt" },
756 { SRCH_WIKI, "search-wiki" },
757 { SRCH_TECHNOTE, "search-technote" },
758 { SRCH_FORUM, "search-forum" },
759 { SRCH_HELP, "search-help" },
760 };
761 int i;
762 if( g.perm.Read==0 ) srchFlags &= ~(SRCH_CKIN|SRCH_DOC|SRCH_TECHNOTE);
763 if( g.perm.RdTkt==0 ) srchFlags &= ~(SRCH_TKT);
764 if( g.perm.RdWiki==0 ) srchFlags &= ~(SRCH_WIKI);
@@ -912,10 +918,23 @@
918 " search_snippet()"
919 " FROM event JOIN blob on event.objid=blob.rid"
920 " WHERE search_match('',body('f',rid,NULL));"
921 );
922 }
923 if( (srchFlags & SRCH_HELP)!=0 ){
924 helptext_vtab_register(g.db);
925 db_multi_exec(
926 "INSERT INTO x(label,url,score,id,snip)"
927 " SELECT format('Built-in help for the \"%%s\" %%s',name,type),"
928 " '/help?cmd='||name,"
929 " search_score(),"
930 " 'h'||rowid,"
931 " search_snippet()"
932 " FROM helptext"
933 " WHERE search_match('',helptext.helptext);"
934 );
935 }
936 }
937
938 /*
939 ** Number of significant bits in a u32
940 */
@@ -1068,10 +1087,11 @@
1087 { SRCH_DOC, 'd' },
1088 { SRCH_TKT, 't' },
1089 { SRCH_WIKI, 'w' },
1090 { SRCH_TECHNOTE, 'e' },
1091 { SRCH_FORUM, 'f' },
1092 { SRCH_HELP, 'h' },
1093 };
1094 int i;
1095 for(i=0; i<count(aMask); i++){
1096 if( srchFlags & aMask[i].m ){
1097 blob_appendf(&sql, "%sftsdocs.type='%c'", zSep, aMask[i].c);
@@ -1169,10 +1189,13 @@
1189 if( !search_index_exists() ){
1190 search_fullscan(zPattern, srchFlags); /* Full-scan search */
1191 }else{
1192 search_update_index(srchFlags); /* Update the index, if necessary */
1193 search_indexed(zPattern, srchFlags); /* Indexed search */
1194 if( srchFlags & SRCH_HELP ){
1195 search_fullscan(zPattern, SRCH_HELP);
1196 }
1197 }
1198 db_prepare(&q, "SELECT url, snip, label, score, id, substr(date,1,10)"
1199 " FROM x"
1200 " ORDER BY score DESC, date DESC;");
1201 while( db_step(&q)==SQLITE_ROW ){
@@ -1239,10 +1262,11 @@
1262 case SRCH_DOC: zType = " Docs"; zClass = "Doc"; break;
1263 case SRCH_TKT: zType = " Tickets"; zClass = "Tkt"; break;
1264 case SRCH_WIKI: zType = " Wiki"; zClass = "Wiki"; break;
1265 case SRCH_TECHNOTE: zType = " Tech Notes"; zClass = "Note"; break;
1266 case SRCH_FORUM: zType = " Forum"; zClass = "Frm"; break;
1267 case SRCH_HELP: zType = " Help"; zClass = "Hlp"; break;
1268 }
1269 if( srchFlags==0 ){
1270 if( mFlags & 0x02 ) return 0;
1271 zDisable1 = " disabled";
1272 zDisable2 = " disabled";
@@ -1266,10 +1290,11 @@
1290 { "d", "Docs", SRCH_DOC },
1291 { "t", "Tickets", SRCH_TKT },
1292 { "w", "Wiki", SRCH_WIKI },
1293 { "e", "Tech Notes", SRCH_TECHNOTE },
1294 { "f", "Forum", SRCH_FORUM },
1295 { "h", "Help", SRCH_HELP },
1296 };
1297 const char *zY = PD("y","all");
1298 unsigned newFlags = srchFlags;
1299 int i;
1300 @ <select size='1' name='y'>
@@ -1321,10 +1346,11 @@
1346 ** d -> documentation
1347 ** t -> tickets
1348 ** w -> wiki
1349 ** e -> tech notes
1350 ** f -> forum
1351 ** h -> built-in help
1352 ** all -> everything
1353 */
1354 void search_page(void){
1355 const int isSearch = P("s")!=0;
1356 login_check_credentials();
1357
--- src/setup.c
+++ src/setup.c
@@ -2251,10 +2251,12 @@
22512251
onoff_attribute("Search Wiki", "search-wiki", "sw", 0, 0);
22522252
@ <br>
22532253
onoff_attribute("Search Tech Notes", "search-technote", "se", 0, 0);
22542254
@ <br>
22552255
onoff_attribute("Search Forum", "search-forum", "sf", 0, 0);
2256
+ @ <br>
2257
+ onoff_attribute("Search Built-in Help Text", "search-help", "sh", 0, 0);
22562258
@ <hr>
22572259
@ <p><input type="submit" name="submit" value="Apply Changes"></p>
22582260
@ <hr>
22592261
if( P("fts0") ){
22602262
search_drop_index();
22612263
--- src/setup.c
+++ src/setup.c
@@ -2251,10 +2251,12 @@
2251 onoff_attribute("Search Wiki", "search-wiki", "sw", 0, 0);
2252 @ <br>
2253 onoff_attribute("Search Tech Notes", "search-technote", "se", 0, 0);
2254 @ <br>
2255 onoff_attribute("Search Forum", "search-forum", "sf", 0, 0);
 
 
2256 @ <hr>
2257 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
2258 @ <hr>
2259 if( P("fts0") ){
2260 search_drop_index();
2261
--- src/setup.c
+++ src/setup.c
@@ -2251,10 +2251,12 @@
2251 onoff_attribute("Search Wiki", "search-wiki", "sw", 0, 0);
2252 @ <br>
2253 onoff_attribute("Search Tech Notes", "search-technote", "se", 0, 0);
2254 @ <br>
2255 onoff_attribute("Search Forum", "search-forum", "sf", 0, 0);
2256 @ <br>
2257 onoff_attribute("Search Built-in Help Text", "search-help", "sh", 0, 0);
2258 @ <hr>
2259 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
2260 @ <hr>
2261 if( P("fts0") ){
2262 search_drop_index();
2263

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button