mirror of
https://codeberg.org/cage/tinmop/
synced 2025-02-08 07:08:39 +01:00
- [gui] used IRI's fragment as regex search.
This commit is contained in:
parent
1ce69366de
commit
32ea984845
@ -363,6 +363,13 @@
|
||||
(fetch-favicon parsed-url)))
|
||||
(swconf:gemini-default-favicon)))))))
|
||||
|
||||
(defun fragment->regex (fragment)
|
||||
(when (and fragment
|
||||
(swconf:config-gemini-fragment-as-regex-p))
|
||||
(if (text-utils:percent-encoded-p fragment)
|
||||
(text-utils:percent-decode fragment)
|
||||
fragment)))
|
||||
|
||||
(defun request-stream-gemini-document-thread (wrapper-object host
|
||||
port path query fragment favicon
|
||||
gemini-format-p
|
||||
@ -489,13 +496,11 @@
|
||||
(setf (stream-status wrapper-object) :completed)
|
||||
(when (and fragment
|
||||
(swconf:config-gemini-fragment-as-regex-p))
|
||||
(let* ((regex (if (text-utils:percent-encoded-p fragment)
|
||||
(text-utils:percent-decode fragment)
|
||||
fragment))
|
||||
(priority program-events:+standard-event-priority+)
|
||||
(event (make-instance 'program-events:search-message-gemini-fragment-event
|
||||
:priority priority
|
||||
:payload regex)))
|
||||
(when-let* ((regex (fragment->regex fragment))
|
||||
(priority program-events:+standard-event-priority+)
|
||||
(event (make-instance 'program-events:search-message-gemini-fragment-event
|
||||
:priority priority
|
||||
:payload regex)))
|
||||
(program-events:push-event event))))
|
||||
(t
|
||||
(os-utils:open-resource-with-external-program support-file nil)))
|
||||
|
@ -165,7 +165,16 @@
|
||||
(ev:with-enqueued-process-and-unblock ()
|
||||
(set-bookmark-button-false main-window)))
|
||||
(ev:with-enqueued-process-and-unblock ()
|
||||
(set-gemlog-toolbar-button-appearance main-window iri))))
|
||||
(set-gemlog-toolbar-button-appearance main-window iri))
|
||||
(ev:with-enqueued-process-and-unblock ()
|
||||
(a:when-let* ((fragment (uri:fragment (iri:iri-parse iri)))
|
||||
(regexp (gemini-viewer::fragment->regex fragment)))
|
||||
(setf (gui:text (client-search-frame::entry (search-frame main-window)))
|
||||
regexp)
|
||||
(funcall (client-search-frame::start-search-clsr (search-frame main-window)
|
||||
(gemtext-widget main-window)
|
||||
nil)
|
||||
nil)))))
|
||||
|
||||
(defun set-gemlog-toolbar-button-appearance (main-window iri)
|
||||
(if (comm:make-request :gemini-gemlog-subscribed-p 1 iri)
|
||||
|
@ -24,6 +24,21 @@
|
||||
:initarg :counter
|
||||
:accessor counter)))
|
||||
|
||||
(defun start-search-clsr (search-frame gemtext-widget case-sensitive)
|
||||
(lambda (e)
|
||||
(declare (ignore e))
|
||||
(loop for match in (matches search-frame) do
|
||||
(gui:tag-delete gemtext-widget (gui:match-tag-name match)))
|
||||
(let ((tags (gui:search-all-text gemtext-widget
|
||||
(gui:text (entry search-frame))
|
||||
:case-insensitive
|
||||
case-sensitive)))
|
||||
(setf (matches search-frame) (nreverse tags)))
|
||||
(loop for match in (matches search-frame) do
|
||||
(gui:tag-configure gemtext-widget
|
||||
(gui:match-tag-name match)
|
||||
:background (gui:cget gemtext-widget
|
||||
:highlightbackground)))))
|
||||
(defun init-window (main-window)
|
||||
(let* ((frame (make-instance 'search-frame :master main-window))
|
||||
(gemtext-widget (client-main-window::gemtext-widget main-window))
|
||||
@ -50,19 +65,9 @@
|
||||
(button-close (_ "end searching")))
|
||||
(gui:bind (entry frame)
|
||||
#$<KeyPress-Return>$
|
||||
(lambda (e)
|
||||
(declare (ignore e))
|
||||
(loop for match in (matches frame) do
|
||||
(gui:tag-delete gemtext-widget (gui:match-tag-name match)))
|
||||
(let ((tags (gui:search-all-text gemtext-widget
|
||||
(gui:text (entry frame))
|
||||
:case-insensitive
|
||||
(not (gui:value case-sensitive-checkbox)))))
|
||||
(setf (matches frame) (nreverse tags)))
|
||||
(loop for match in (matches frame) do
|
||||
(gui:tag-configure gemtext-widget
|
||||
(gui:match-tag-name match)
|
||||
:background (gui:cget gemtext-widget :highlightbackground)))))
|
||||
(start-search-clsr frame
|
||||
gemtext-widget
|
||||
(not (gui:value case-sensitive-checkbox))))
|
||||
(setf (gui:command (button-next frame))
|
||||
(lambda ()
|
||||
(when (matches frame)
|
||||
|
Loading…
x
Reference in New Issue
Block a user