mirror of
https://codeberg.org/cage/tinmop/
synced 2024-12-30 00:39:54 +01:00
- fixed crash when 'contains-clsr' is called
This function called cl-ppcre:create-scanner but if the argument to this function can not be interpreted as a valid regex (e.g "["), an error is signalled. This error is now captured and the string passed to 'create-scanner' is used as a mere sequence not a regular expression. - [gemini] fixed bug that prevented a page to be reloaded; - [gemini] use cache, if possible, when opening a gemini url.
This commit is contained in:
parent
6690a1b6f7
commit
f1c8ec0ec1
@ -103,9 +103,14 @@ completed) and the common prefix of the completion string."
|
|||||||
(text-utils:string-starts-with-p hint a)))
|
(text-utils:string-starts-with-p hint a)))
|
||||||
|
|
||||||
(defun contains-clsr (hint)
|
(defun contains-clsr (hint)
|
||||||
(let ((scanner (cl-ppcre:create-scanner hint)))
|
(handler-case
|
||||||
(lambda (a)
|
(let ((scanner (cl-ppcre:create-scanner hint)))
|
||||||
(cl-ppcre:scan scanner a))))
|
(lambda (a)
|
||||||
|
(cl-ppcre:scan scanner a)))
|
||||||
|
(error ()
|
||||||
|
(let ((scanner (cl-ppcre:create-scanner `(:sequence ,hint))))
|
||||||
|
(lambda (a)
|
||||||
|
(cl-ppcre:scan scanner a))))))
|
||||||
|
|
||||||
(defun remove-if-hidden (candidates)
|
(defun remove-if-hidden (candidates)
|
||||||
(remove-if #'db:hidden-recipient-p candidates))
|
(remove-if #'db:hidden-recipient-p candidates))
|
||||||
|
@ -536,7 +536,7 @@
|
|||||||
(certificate nil)
|
(certificate nil)
|
||||||
(certificate-key nil)
|
(certificate-key nil)
|
||||||
(use-cached-file-if-exists nil)
|
(use-cached-file-if-exists nil)
|
||||||
(do-nothing-if-exists-in-db t))
|
(do-nothing-if-exists-in-db nil))
|
||||||
(labels ((get-user-input (hide-input url prompt)
|
(labels ((get-user-input (hide-input url prompt)
|
||||||
(multiple-value-bind (actual-iri host path query port fragment)
|
(multiple-value-bind (actual-iri host path query port fragment)
|
||||||
(gemini-client:displace-iri (iri:iri-parse url))
|
(gemini-client:displace-iri (iri:iri-parse url))
|
||||||
@ -743,7 +743,7 @@
|
|||||||
|
|
||||||
(defun open-gemini-stream-window ()
|
(defun open-gemini-stream-window ()
|
||||||
(let* ((low-level-window (make-croatoan-window :enable-function-keys t)))
|
(let* ((low-level-window (make-croatoan-window :enable-function-keys t)))
|
||||||
(setf *gemini-streams-window*
|
(setf *gemini-streams-window*
|
||||||
(make-instance 'gemini-streams-window
|
(make-instance 'gemini-streams-window
|
||||||
:top-row-padding 0
|
:top-row-padding 0
|
||||||
:title (_ "Current gemini streams")
|
:title (_ "Current gemini streams")
|
||||||
@ -760,7 +760,8 @@
|
|||||||
|
|
||||||
(defun load-gemini-url (url &key
|
(defun load-gemini-url (url &key
|
||||||
(priority program-events:+standard-event-priority+)
|
(priority program-events:+standard-event-priority+)
|
||||||
(give-focus-to-message-window t))
|
(give-focus-to-message-window t)
|
||||||
|
(use-cached-file-if-exists nil))
|
||||||
"Load `url', that is a web resource or a local file. This function
|
"Load `url', that is a web resource or a local file. This function
|
||||||
can be used only when the event polling is enabled (e.g. from user
|
can be used only when the event polling is enabled (e.g. from user
|
||||||
command) otherwise te actual code to get the resource will never be
|
command) otherwise te actual code to get the resource will never be
|
||||||
@ -768,5 +769,6 @@ executed."
|
|||||||
(let* ((event (make-instance 'program-events:gemini-request-event
|
(let* ((event (make-instance 'program-events:gemini-request-event
|
||||||
:give-focus-to-message-window give-focus-to-message-window
|
:give-focus-to-message-window give-focus-to-message-window
|
||||||
:priority priority
|
:priority priority
|
||||||
|
:use-cached-file-if-exists use-cached-file-if-exists
|
||||||
:url url)))
|
:url url)))
|
||||||
(program-events:push-event event)))
|
(program-events:push-event event)))
|
||||||
|
@ -1779,6 +1779,7 @@ open-message-link-window:open-message-link"
|
|||||||
"Ask for a gemini address and try to load it"
|
"Ask for a gemini address and try to load it"
|
||||||
(flet ((on-input-complete (url)
|
(flet ((on-input-complete (url)
|
||||||
(gemini-viewer:load-gemini-url url
|
(gemini-viewer:load-gemini-url url
|
||||||
|
:use-cached-file-if-exists t
|
||||||
:priority program-events:+maximum-event-priority+)))
|
:priority program-events:+maximum-event-priority+)))
|
||||||
|
|
||||||
(let ((prompt (gemini-open-url-prompt)))
|
(let ((prompt (gemini-open-url-prompt)))
|
||||||
|
Loading…
Reference in New Issue
Block a user