added -x flag to plt-help, improved man pages
svn: r8048
This commit is contained in:
parent
058d8dc77e
commit
9dcef875fe
|
@ -5,9 +5,18 @@
|
||||||
setup/dirs
|
setup/dirs
|
||||||
scheme/cmdline)
|
scheme/cmdline)
|
||||||
|
|
||||||
|
(define exact-search? #f)
|
||||||
|
|
||||||
(command-line
|
(command-line
|
||||||
|
#:once-any (["--exact" "-x"] "Go directly to the first exact hit for the search term" (set! exact-search? #t))
|
||||||
#:args search-term
|
#:args search-term
|
||||||
(cond
|
(cond
|
||||||
|
[exact-search?
|
||||||
|
(when (null? search-term)
|
||||||
|
(error 'plt-help "expected a search term after -x or --exact"))
|
||||||
|
(unless (null? (cdr search-term))
|
||||||
|
(error 'plt-help "expected a single search term, got ~s" search-term))
|
||||||
|
(send-exact-results (car search-term))]
|
||||||
[(null? search-term)
|
[(null? search-term)
|
||||||
(let ([dest-path (build-path (find-doc-dir) "start" "index.html")])
|
(let ([dest-path (build-path (find-doc-dir) "start" "index.html")])
|
||||||
(send-url (format "file://~a" (path->string dest-path))))]
|
(send-url (format "file://~a" (path->string dest-path))))]
|
||||||
|
|
|
@ -9,10 +9,61 @@
|
||||||
scribble/manual
|
scribble/manual
|
||||||
(prefix-in scheme: scribble/scheme)
|
(prefix-in scheme: scribble/scheme)
|
||||||
net/sendurl
|
net/sendurl
|
||||||
|
net/uri-codec
|
||||||
mzlib/contract)
|
mzlib/contract)
|
||||||
|
|
||||||
(provide/contract
|
(provide/contract
|
||||||
[generate-search-results (-> (listof string?) void?)])
|
[generate-search-results (-> (listof string?) void?)]
|
||||||
|
[send-exact-results (-> string? void?)])
|
||||||
|
|
||||||
|
;; if there is exactly one exact match for this search key, go directly
|
||||||
|
;; to that place. Otherwise, go to a page that lists all of the matches.
|
||||||
|
(define (send-exact-results search-key)
|
||||||
|
(let* ([file (next-search-results-file)]
|
||||||
|
[exact-search-regexp (regexp (format "^~a$" (regexp-quote search-key #f)))]
|
||||||
|
[x (load-collections-xref)]
|
||||||
|
[index (xref-index x)]
|
||||||
|
[len (length index)]
|
||||||
|
[exact-matches (filter (has-match (list exact-search-regexp)) index)])
|
||||||
|
(cond
|
||||||
|
[(or (null? exact-matches)
|
||||||
|
(not (null? (cdr exact-matches))))
|
||||||
|
(generate-search-results (list search-key))]
|
||||||
|
[else
|
||||||
|
(let ([match (car exact-matches)])
|
||||||
|
(let-values ([(path tag) (xref-tag->path+anchor x (entry-tag match))])
|
||||||
|
(send-url (format "file://~a~a"
|
||||||
|
(path->string path)
|
||||||
|
(if tag (string-append "#" (uri-encode tag)) "")))))])))
|
||||||
|
|
||||||
|
(define (generate-search-results search-keys)
|
||||||
|
(let ([file (next-search-results-file)]
|
||||||
|
[search-regexps (map (λ (x) (regexp (regexp-quote x #f))) search-keys)]
|
||||||
|
[exact-search-regexps (map (λ (x) (regexp (format "^~a$" (regexp-quote x #f)))) search-keys)]
|
||||||
|
[search-key-string
|
||||||
|
(cond
|
||||||
|
[(null? search-keys) ""]
|
||||||
|
[else
|
||||||
|
(apply
|
||||||
|
string-append
|
||||||
|
(car search-keys)
|
||||||
|
(map (λ (x) (format ", or ~a" x))
|
||||||
|
(cdr search-keys)))])])
|
||||||
|
(let ([x (load-collections-xref)])
|
||||||
|
(xref-render
|
||||||
|
x
|
||||||
|
(decode `(,(title (format "Search results for ~a" search-key-string))
|
||||||
|
,@(let* ([index (xref-index x)]
|
||||||
|
[len (length index)]
|
||||||
|
[matching-entries (filter (has-match search-regexps) index)]
|
||||||
|
[exact-matches (filter (has-match exact-search-regexps) matching-entries)]
|
||||||
|
[inexact-matches (filter (compose not (has-match exact-search-regexps)) matching-entries)])
|
||||||
|
(append
|
||||||
|
(build-itemization "Exact matches" exact-matches)
|
||||||
|
(build-itemization "Containing matches" inexact-matches)))))
|
||||||
|
file)
|
||||||
|
(send-url (format "file://~a" (path->string file)))
|
||||||
|
(void))))
|
||||||
|
|
||||||
(define (make-extra-content desc)
|
(define (make-extra-content desc)
|
||||||
;; Use `desc' to provide more details on the link:
|
;; Use `desc' to provide more details on the link:
|
||||||
|
@ -56,35 +107,6 @@
|
||||||
(append (cdr search-results-files)
|
(append (cdr search-results-files)
|
||||||
(list (car search-results-files))))))
|
(list (car search-results-files))))))
|
||||||
|
|
||||||
(define (generate-search-results search-keys)
|
|
||||||
(let ([file (next-search-results-file)]
|
|
||||||
[search-regexps (map (λ (x) (regexp (regexp-quote x #f))) search-keys)]
|
|
||||||
[exact-search-regexps (map (λ (x) (regexp (format "^~a$" (regexp-quote x #f)))) search-keys)]
|
|
||||||
[search-key-string
|
|
||||||
(cond
|
|
||||||
[(null? search-keys) ""]
|
|
||||||
[else
|
|
||||||
(apply
|
|
||||||
string-append
|
|
||||||
(car search-keys)
|
|
||||||
(map (λ (x) (format ", or ~a" x))
|
|
||||||
(cdr search-keys)))])])
|
|
||||||
(let ([x (load-collections-xref)])
|
|
||||||
(xref-render
|
|
||||||
x
|
|
||||||
(decode `(,(title (format "Search results for ~a" search-key-string))
|
|
||||||
,@(let* ([index (xref-index x)]
|
|
||||||
[len (length index)]
|
|
||||||
[matching-entries (filter (has-match search-regexps) index)]
|
|
||||||
[exact-matches (filter (has-match exact-search-regexps) matching-entries)]
|
|
||||||
[inexact-matches (filter (compose not (has-match exact-search-regexps)) matching-entries)])
|
|
||||||
(append
|
|
||||||
(build-itemization "Exact matches" exact-matches)
|
|
||||||
(build-itemization "Containing matches" inexact-matches)))))
|
|
||||||
file)
|
|
||||||
(send-url (format "file://~a" (path->string file)))
|
|
||||||
(void))))
|
|
||||||
|
|
||||||
;; has-match : (listof regexp) -> entry -> boolean
|
;; has-match : (listof regexp) -> entry -> boolean
|
||||||
(define ((has-match search-regexps) entry)
|
(define ((has-match search-regexps) entry)
|
||||||
(ormap (λ (str)
|
(ormap (λ (str)
|
||||||
|
|
|
@ -83,7 +83,7 @@ the on-line documentation has been installed locally.
|
||||||
.SH BUGS
|
.SH BUGS
|
||||||
Submit bug reports via
|
Submit bug reports via
|
||||||
.ce 1
|
.ce 1
|
||||||
help-desk (encouraged),
|
drscheme (encouraged),
|
||||||
or via the web
|
or via the web
|
||||||
.ce 1
|
.ce 1
|
||||||
http://bugs.plt-scheme.org/ (discouraged)
|
http://bugs.plt-scheme.org/ (discouraged)
|
||||||
|
@ -94,6 +94,6 @@ bugs@plt-scheme.org (discouraged)
|
||||||
.I DrScheme
|
.I DrScheme
|
||||||
was implemented by PLT.
|
was implemented by PLT.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR help-desk(1),
|
.BR plt-help(1),
|
||||||
.BR mred(1),
|
.BR mred(1),
|
||||||
.BR mzscheme(1)
|
.BR mzscheme(1)
|
||||||
|
|
|
@ -373,6 +373,6 @@ Robert Bruce Findler (robby@plt-scheme.org), and
|
||||||
John Clements (clements@plt-scheme.org), based on
|
John Clements (clements@plt-scheme.org), based on
|
||||||
MzScheme.
|
MzScheme.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR help-desk(1),
|
.BR plt-help(1),
|
||||||
.BR mzscheme(1),
|
.BR mzscheme(1),
|
||||||
.BR drscheme(1)
|
.BR drscheme(1)
|
||||||
|
|
|
@ -263,6 +263,6 @@ It uses the conservative garbage collector implemented by Hans
|
||||||
Boehm and extended by John Ellis. MzScheme was originally based
|
Boehm and extended by John Ellis. MzScheme was originally based
|
||||||
on libscheme, written by Brent Benson.
|
on libscheme, written by Brent Benson.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR help-desk(1),
|
.BR plt-help(1),
|
||||||
.BR drscheme(1),
|
.BR drscheme(1),
|
||||||
.BR mred(1)
|
.BR mred(1)
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
.\" dummy line
|
.\" dummy line
|
||||||
.TH HELP-DESK 1 "May 2006"
|
.TH PLT-Help 1 "May 2006"
|
||||||
.UC 4
|
.UC 4
|
||||||
.SH NAME
|
.SH NAME
|
||||||
help-desk \- The PLT Scheme documentation center
|
plt-help \- The PLT Scheme documentation center
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B help-desk
|
.B plt-help
|
||||||
.I term ...
|
.I [-x --exact] term ...
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.I Help Desk
|
.I PLT Help
|
||||||
searches for term in the PLT Scheme documentation and opens an html document in a web browser with the results of the search.
|
searches for term in the PLT Scheme documentation and opens an html document in a web browser with the results of the search.
|
||||||
.PP
|
.PP
|
||||||
For further information on
|
For further information on
|
||||||
.I Help Desk,
|
.I PLT Help,
|
||||||
please consult the on-line
|
please consult the on-line
|
||||||
documentation and other information available at
|
documentation and other information available at
|
||||||
.PP
|
.PP
|
||||||
.ce 1
|
.ce 1
|
||||||
http://www.drscheme.org/
|
http://www.drscheme.org/
|
||||||
.SH FILES
|
.SH FILES
|
||||||
.I Help Desk
|
.I PLT Help
|
||||||
looks for its libraries using the environment variable
|
looks for its libraries using the environment variable
|
||||||
PLTCOLLECTS. If this variable is not defined,
|
PLTCOLLECTS. If this variable is not defined,
|
||||||
the installation directory is found automatically.
|
the installation directory is found automatically.
|
Loading…
Reference in New Issue
Block a user