1
0
Fork 0

- [gopher] added support for index search lines.

This commit is contained in:
cage 2022-09-21 16:19:03 +02:00
parent d219a4b0ce
commit bd20fe100f
3 changed files with 20 additions and 1 deletions

View File

@ -683,6 +683,8 @@ gopher-window.line.prefix.image-file = "🖼 "
gopher-window.line.prefix.gif-file = "🖼 "
gopher-window.line.prefix.search = "🔎 "
gopher-window.line.prefix.foreground = cyan
gopher-window.line.prefix.attribute = bold

View File

@ -203,6 +203,21 @@
(win-clear win)
(windows:draw win)))
(defun make-search-query (selector search-expression)
(format nil "~a~a~a" selector #\tab search-expression))
(defun search-index-server (host port selector)
(flet ((on-input-complete (search-expression)
(when (string-not-empty-p search-expression)
(program-events:with-enqueued-process ()
(make-request host
port
gopher-parser:+line-type-dir+
(make-search-query selector search-expression))))))
(ui:ask-string-input #'on-input-complete
:prompt (_ "Enter search terms: ")
:complete-fn #'complete:complete-always-empty)))
(defun make-request (host port type selector)
(let ((message-win specials:*message-window*))
(gemini-viewer:maybe-initialize-metadata message-win)
@ -227,6 +242,8 @@
(gopher-parser:parse-menu (text-utils:to-s data)))
(select-row *gopher-window* 0)
(draw *gopher-window*)))
((gopher-parser::%line-type-index-search-p type)
(search-index-server host port selector))
((gopher-parser::%line-type-file-p type)
(win-close *gopher-window*)
(let ((data (misc:make-fresh-array 0 :type '(unsigned-int 8))))

View File

@ -257,7 +257,7 @@
:host (sixth line)
:port (elt line 7)))))
(defrule menu (and (* dir-entity) last-line)
(defrule menu (and (* dir-entity) (? last-line))
(:function first))
(defun parse-menu (data)