📄 user-hooks.scm
字号:
;;; USER CODE(use-modules (ice-9 optargs) ;let-optional (ice-9 regex) (srfi srfi-2) ;and-let* (srfi srfi-8) ;receive (srfi srfi-13) ;string-lib );;; goto-url-hooks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Handle search URLs;; Makes a searcher routine. If the routine is called without any;; arguments, return the home page location. Otherwise, construct a;; URL searching for the arguments specified.;; e.g.;; (define f (make-searcher "http://www.google.com/";; "http://www.google.com/search?q=";; "&btnG=Google%20Search"));; (f '());; => "http://www.google.com/";; (f '("google" "me"));; => "http://www.google.com/search?q=google%20me&btnG=Google%20Search"(define (make-searcher home-page prefix . maybe-postfix) (let-optional maybe-postfix ((postfix "")) (lambda (words) (if (null? words) home-page (string-append prefix (string-join words "%20") postfix)))));; TODO: ,gg -> gg: format update to the standard ELinks one. --pasky(define goto-url-searchers `((",gg" . ,(make-searcher "http://www.google.com/" "http://www.google.com/search?q=" "&btnG=Google%20Search")) (",fm" . ,(make-searcher "http://www.freshmeat.net/" "http://www.freshmeat.net/search/?q=")) (",dict" . ,(make-searcher "http://www.dictionary.com/" "http://www.dictionary.com/cgi-bin/dict.pl?db=%2A&term=")) (",wtf" . ,(make-searcher "http://www.ucc.ie/cgi-bin/acronym?wtf" "http://www.ucc.ie/cgi-bin/acronym?"))))(add-hook! goto-url-hooks (lambda (url) (let* ((words (string-tokenize url)) (key (car words)) (rest (cdr words))) (cond ((assoc key goto-url-searchers) => (lambda (x) ((cdr x) rest))) (else #f)))));;; goto-url-hooks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Handle simple URLs(define goto-url-simples `((",forecast" . "http://www.bom.gov.au/cgi-bin/wrap_fwo.pl?IDV10450.txt") (",local" . "XXXXXXXXXXXXXXXXXXX") ))(add-hook! goto-url-hooks (lambda (url) (cond ((assoc url goto-url-simples) => cdr) (else #f))));;; goto-url-hooks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Expand ~/ and ~user/ URLs(define (home-directory . maybe-user) (let-optional maybe-user ((user (cuserid))) (and-let* ((user (catch 'misc-error (lambda () (getpwnam user)) (lambda ignore #f)))) (passwd:dir user))))(define (expand-tilde-file-name file-name) (and (string-prefix? "~" file-name) (let* ((slash/end (or (string-index file-name #\/) (string-length file-name))) (user (substring file-name 1 slash/end))) (string-append (if user (home-directory) (home-directory user)) (substring file-name slash/end)))))(add-hook! goto-url-hooks (lambda (url) (and (string-prefix? "~" url) (expand-tilde-file-name url))));;; pre-format-html-hooks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mangle linuxgames.com pages(add-hook! pre-format-html-hooks (lambda (url html) (and (string-contains url "linuxgames.com") (and-let* ((start (string-contains html "<CENTER>")) (end (string-contains html "</center>" (+ start 1)))) (string-append (substring/shared html 0 start) (substring/shared html (+ end 10)))))));;; pre-format-html-hooks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mangle dictionary.com result pages(add-hook! pre-format-html-hooks (lambda (url html) (and (string-contains url "dictionary.reference.com/search?") (and-let* ((m (string-match (string-append "<table border=\"0\" cellpadding=\"2\" width=\"100%\">" ".*<td width=\"120\" align=\"center\">") html))) (string-append "<html><head><title>Dictionary.com lookup</title>" "</head><body>" (regexp-substitute/global #f "<br>\n<p><b>" (match:substring m 0) 'pre "<br>\n<hr>\n<p><b>" 'post))))));;; get-proxy-hooks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Some addresses require a special proxy (add-hook! get-proxy-hooks (lambda (url) (and (or (string-contains url "XXXXXXXXXXXXXX") (string-contains url "XXXXXXXXXXXXXX")) "XXXXXXXXXXXXXXXXXXXXXXXXXXX")));;; get-proxy-hooks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Some addresses work better without a proxy(add-hook! get-proxy-hooks (lambda (url) (and (or (string-contains url "XXXXXXXXXXXXXXXXXXX") (string-contains url "XXXXXXXXXX")) "")));;; quit-hooks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Delete temporary files when quitting(define temporary-files '())(add-hook! quit-hooks (lambda () (for-each delete-file temporary-files)));;; The end;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -