mirror of
https://codeberg.org/cage/tinmop/
synced 2025-02-15 07:50:36 +01:00
3720 lines
78 KiB
Common Lisp
3720 lines
78 KiB
Common Lisp
;; tinmop: a multiprotocol client
|
|
;; Copyright © cage
|
|
|
|
;; This program is free software: you can redistribute it and/or modify
|
|
;; it under the terms of the GNU General Public License as published by
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
;; (at your option) any later version.
|
|
|
|
;; This program is distributed in the hope that it will be useful,
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
;; GNU General Public License for more details.
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
(defpackage :idn
|
|
(:use
|
|
:cl
|
|
:alexandria)
|
|
(:export
|
|
:host-unicode->ascii
|
|
:host-ascii->unicode))
|
|
|
|
(defpackage :config
|
|
(:use :cl)
|
|
(:export
|
|
:+sys-data-dir+
|
|
:+sys-conf-dir+
|
|
:+catalog-dir+
|
|
:+text-domain+
|
|
:+program-name+
|
|
:+program-version+
|
|
:+issue-tracker+
|
|
:+package-url+
|
|
:+openssl-bin+
|
|
:+xdg-open-bin+
|
|
:+unzip-bin+
|
|
:+man-bin+
|
|
:+montage-bin+
|
|
:+file-bin+
|
|
:_
|
|
:n_))
|
|
|
|
(defpackage :constants
|
|
(:use :cl
|
|
:alexandria
|
|
:config)
|
|
(:export
|
|
:+help-about-message-no-uri+
|
|
:+help-about-message+
|
|
:+welcome-message+
|
|
:+http-code-ok+
|
|
:+mime-type-jpg+
|
|
:+mime-type-png+
|
|
:+mime-type-html+
|
|
:+mime-type-text+
|
|
:+db-file+
|
|
:+fps+
|
|
:+command-window-height+
|
|
:+starting-init-file+
|
|
:+box-height-diff+
|
|
:+default-command-prompt+
|
|
:+menu-button-ok+
|
|
:+status-public-visibility+
|
|
:+status-direct-visibility+
|
|
:+folder-direct-message-prefix+
|
|
:+folder-tag-prefix+
|
|
:+mention-prefix+
|
|
:+cache-tls-certificate-type+
|
|
:+standard-editor+
|
|
:+octect-type+
|
|
:+gemini-file-extension+
|
|
:+file-scheme+
|
|
:+internal-scheme+
|
|
:+internal-path-bookmark+
|
|
:+internal-path-gemlogs+
|
|
:+language-codes+
|
|
;; GUI
|
|
:+minimum-padding+
|
|
:+ps-file-dialog-filter+
|
|
:+stream-status-streaming+
|
|
:+stream-status-canceled+
|
|
:+stream-status-downloading+
|
|
:+stream-status-completed+))
|
|
|
|
(defpackage :conditions
|
|
(:use :cl
|
|
:config)
|
|
(:export
|
|
:text-error
|
|
:text
|
|
:not-implemented-error
|
|
:null-reference
|
|
:out-of-bounds
|
|
:length-error
|
|
:different-length-error
|
|
:command-not-found
|
|
:column-not-found
|
|
:with-default-on-error))
|
|
|
|
(defpackage :num-utils
|
|
(:use :cl
|
|
:constants)
|
|
(:nicknames :num)
|
|
(:export
|
|
:safe-parse-number
|
|
:parse-number-default
|
|
:find-min-max
|
|
:find-min
|
|
:find-max
|
|
:round-all
|
|
:fract
|
|
:sign
|
|
:count-digit
|
|
:fnv-hash-32
|
|
:string-fnv-hash-32
|
|
:fnv-hash-256
|
|
:string-fnv-hash-256
|
|
:*lcg-seed*
|
|
:lcg-set-seed
|
|
:lcg-next
|
|
:lcg-next01
|
|
:lcg-next-upto
|
|
:lcg-next-in-range
|
|
:lcg-next-in-range*
|
|
:shellsort
|
|
:multisort
|
|
:multisort*
|
|
:gen-multisort-test
|
|
:*default-epsilon*
|
|
:with-epsilon
|
|
:add-epsilon-rel
|
|
:epsilon=
|
|
:epsilon<=
|
|
:epsilon>=
|
|
:binary-search))
|
|
|
|
(defpackage :misc-utils
|
|
(:use :cl
|
|
:constants)
|
|
(:nicknames :misc)
|
|
(:export
|
|
:metadata-container
|
|
:metadata
|
|
:when-debug
|
|
:debug-log
|
|
:dbg
|
|
:dbg-and-quit
|
|
:dbg-stdout
|
|
:dbg-stderr
|
|
:code->char
|
|
:char->code
|
|
:swap
|
|
:dump-hash-table
|
|
:with-messages-start-end
|
|
:safe-random
|
|
:split-into-chunks
|
|
:group-by
|
|
:delete@
|
|
:return-whole
|
|
:safe-delete@
|
|
:safe-all-but-last-elt
|
|
:remove-compact-remap-sequence
|
|
:remove-if-null
|
|
:remove-if-not-null
|
|
:intersperse
|
|
:do-while
|
|
:do-while*
|
|
:not-null-p
|
|
:permutation
|
|
:shuffle
|
|
:make-fresh-list
|
|
:seq->list
|
|
:lcat
|
|
:vcat
|
|
:fresh-list-insert@
|
|
:fresh-list-subst@
|
|
:fresh-vector-insert@
|
|
:make-array-frame
|
|
:make-fresh-array
|
|
:sequence->list
|
|
:vector-empty-p
|
|
:sequence-empty-p
|
|
:safe-elt
|
|
:safe-last-elt
|
|
:safe-subseq
|
|
:random-num-filled-vector
|
|
:random-elt
|
|
:safe-random-elt
|
|
:copy-multiply
|
|
:all-but-last-elt
|
|
:list->array
|
|
:list->simple-array
|
|
:copy-list-into-array
|
|
:array-slice
|
|
:2byte->word
|
|
:2word->int
|
|
:byte->int
|
|
:bytes->string
|
|
:read-ieee-float-32
|
|
:int16->bytes
|
|
:int32->bytes
|
|
:define-offset-size
|
|
:define-parse-header-chunk
|
|
:read-list
|
|
:read-array
|
|
:read-all
|
|
:read-line-into-array
|
|
:read-stream-chunks
|
|
:delimiter-not-found
|
|
:*read-delimiter*
|
|
:read-delimited-into-array
|
|
:read-delimited-into-array-unbuffered
|
|
:definline
|
|
:+cache-invalid-value+
|
|
:defcached
|
|
:defcached-list
|
|
:function-name
|
|
:fn-delay
|
|
:unsplice
|
|
:defalias
|
|
:defun-inline-function
|
|
:format-fn-symbol
|
|
:check-body-keywords
|
|
:format-keyword
|
|
:a->function
|
|
:gen-type-p
|
|
:define-compiler-macros
|
|
:defmethod-inline-function
|
|
:nest-expressions
|
|
:replace-e!
|
|
:+nil-equiv-bag+
|
|
:build-plist
|
|
:build-assocs-chain
|
|
:recursive-assoc
|
|
:recursive-assoc-just-before
|
|
:n-setf-path-value
|
|
:plist-path-value
|
|
:gen-trivial-plist-predicates
|
|
:gen-trivial-plist-predicate
|
|
:gen-trivial-plist-get
|
|
:gen-trivial-plist-gets
|
|
:gen-vec-comp
|
|
:make-null-pointer
|
|
:with-load-forms-in-var
|
|
:time-unix->universal
|
|
:time-seconds-of
|
|
:time-minutes-of
|
|
:time-hour-of
|
|
:time-date-of
|
|
:time-month-of
|
|
:time-year-of
|
|
:time-day-of
|
|
:time-daylight-p-of
|
|
:time-zone-of
|
|
:year->timestamp
|
|
:current-year
|
|
:extract-year-from-timestamp
|
|
:format-time
|
|
:binary-search
|
|
:defun-w-lock
|
|
:with-lock
|
|
:*thread-default-special-bindings*
|
|
:make-thread
|
|
:make-lock
|
|
:with-lock-held
|
|
:make-condition-variable
|
|
:condition-wait
|
|
:condition-notify
|
|
:join-thread
|
|
:destroy-thread
|
|
:threadp
|
|
:thread-alive-p
|
|
:get-url-content
|
|
:with-profile-time
|
|
:with-debug-print-profile-time
|
|
:all-program-dependencies))
|
|
|
|
(defpackage :box
|
|
(:use
|
|
:cl)
|
|
(:export
|
|
:box
|
|
:boxp
|
|
:unbox
|
|
:dbox
|
|
:dboxp
|
|
:dunbox))
|
|
|
|
(defpackage :filesystem-utils
|
|
(:use
|
|
:cl
|
|
:alexandria)
|
|
(:nicknames :fs)
|
|
(:export
|
|
:+file-path-regex+
|
|
:+s-irwxu+
|
|
:+s-irusr+
|
|
:+s-iwusr+
|
|
:+s-ixusr+
|
|
:+s-irwxg+
|
|
:+s-irgrp+
|
|
:+s-iwgrp+
|
|
:+s-ixgrp+
|
|
:+s-irwxo+
|
|
:+s-iroth+
|
|
:+s-iwoth+
|
|
:+s-ixoth+
|
|
:+s-isuid+
|
|
:+s-isgid+
|
|
:*directory-sep-regexp*
|
|
:*directory-sep*
|
|
:create-a-file
|
|
:copy-a-file
|
|
:rename-a-file
|
|
:file-size
|
|
:slurp-file
|
|
:dump-sequence-to-file
|
|
:create-file
|
|
:cat-parent-dir
|
|
:has-extension
|
|
:get-extension
|
|
:extension-dir-p
|
|
:strip-extension
|
|
:add-extension
|
|
:do-directory
|
|
:collect-children
|
|
:collect-tree
|
|
:backreference-dir-p
|
|
:loopback-reference-dir-p
|
|
:path-referencing-dir-p
|
|
:collect-files/dirs
|
|
:prepend-pwd
|
|
:search-matching-file
|
|
:relative-file-path->absolute
|
|
:regular-file-p
|
|
:dirp
|
|
:split-path-elements
|
|
:path-last-element
|
|
:path-first-element
|
|
:path-to-hidden-file-p
|
|
:parent-dir-path
|
|
:append-file-to-path
|
|
:strip-dirs-from-path
|
|
:get-stat-mtime
|
|
:get-stat-ctime
|
|
:get-stat-atime
|
|
:get-stat-mode
|
|
:change-path-permissions
|
|
:file-outdated-p
|
|
:file-exists-p
|
|
:directory-exists-p
|
|
:file-length-if-exists
|
|
:delete-file-if-exists
|
|
:file-hash
|
|
:home-dir
|
|
:*temporary-files-created*
|
|
:temporary-file
|
|
:clean-temporary-files
|
|
:*temporary-directories-created*
|
|
:temporary-directory
|
|
:filename-pattern-match
|
|
:children-matching-path
|
|
:recursive-delete
|
|
:clean-temporary-directories
|
|
:with-anaphoric-temp-file
|
|
:temp-file
|
|
:file-can-write-p
|
|
:set-file-permissions
|
|
:cached-directory-files
|
|
:directory-files
|
|
:make-directory
|
|
:maybe-append-directory-separator
|
|
:package-path
|
|
:file-in-package
|
|
:link-file-path
|
|
:file-is-link-if-else
|
|
:pathname->namestring
|
|
:namestring->pathname
|
|
:read-single-form
|
|
:eq-filename
|
|
:octects->units
|
|
:octects->units-string
|
|
:normalize-path))
|
|
|
|
(defpackage :os-utils
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants)
|
|
(:export
|
|
:+ssl-cert-name+
|
|
:+ssl-key-name+
|
|
:cpu-number
|
|
:xdg-open
|
|
:getenv
|
|
:default-temp-dir
|
|
:pwd
|
|
:run-external-program
|
|
:process-exit-code
|
|
:process-exit-success-p
|
|
:process-error
|
|
:process-input
|
|
:process-output
|
|
:open-with-editor
|
|
:exit-program
|
|
:user-cache-dir
|
|
:cached-file-path
|
|
:generate-ssl-certificate
|
|
:change-ssl-key-passphrase
|
|
:ssl-key-has-empty-password-p
|
|
:send-to-pipe
|
|
:open-link-with-program
|
|
:open-resource-with-external-program
|
|
:open-resource-with-tinmop-p
|
|
:file->mime-type
|
|
:unzip-file
|
|
:unzip-single-file
|
|
:copy-to-clipboard))
|
|
|
|
(defpackage :text-utils
|
|
(:use
|
|
:cl
|
|
:config)
|
|
(:import-from :misc :definline)
|
|
(:local-nicknames (:a :alexandria))
|
|
(:export
|
|
:+float-regexp+
|
|
:+integer-regexp+
|
|
:*blanks*
|
|
:uchar-length
|
|
:utf8-encoded-p
|
|
:clean-unprintable-chars
|
|
:to-s
|
|
:string->octets
|
|
:strcat
|
|
:strcat*
|
|
:join-with-strings
|
|
:join-with-strings*
|
|
:split-words
|
|
:extract-blanks
|
|
:split-lines
|
|
:strip-prefix
|
|
:strip-withespaces
|
|
:common-prefix
|
|
:basename
|
|
:wrap-with
|
|
:build-string
|
|
:right-padding
|
|
:right-padding-suffix
|
|
:left-padding
|
|
:left-padding-prefix
|
|
:ellipsize
|
|
:justify-monospaced-text
|
|
:flush-left-mono-text
|
|
:string-empty-p
|
|
:string-not-empty-p
|
|
:string-starts-with-p
|
|
:string-ends-with-p
|
|
:trim-blanks
|
|
:find-max-line-length
|
|
:box-fit-single-column
|
|
:box-fit-multiple-column
|
|
:annotated-text-symbol
|
|
:annotated-text-value
|
|
:box-fit-multiple-column-annotated
|
|
:lines->uri
|
|
:collect-links
|
|
:percent-encode
|
|
:percent-decode
|
|
:percent-encoded-p
|
|
:maybe-percent-encode
|
|
:display-corrupting-utf8-p
|
|
:remove-corrupting-utf8-chars
|
|
:match-words
|
|
:emojip
|
|
:starting-emoji))
|
|
|
|
(defpackage :html-utils
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:config
|
|
:text-utils)
|
|
(:export
|
|
:http-link-iri-p
|
|
:make-tag-node
|
|
:tag
|
|
:attributes
|
|
:attribute-key
|
|
:attribute-value
|
|
:add-attribute
|
|
:children
|
|
:tag=
|
|
:find-attribute
|
|
:find-tag
|
|
:position-tag
|
|
:node->link
|
|
:html->text))
|
|
|
|
(defpackage :resources-utils
|
|
(:use
|
|
:cl
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:filesystem-utils
|
|
:text-utils)
|
|
(:nicknames :res)
|
|
(:export
|
|
:init
|
|
:home-datadir
|
|
:home-confdir
|
|
:return-home-filename
|
|
:return-system-filename
|
|
:create-empty-in-home
|
|
:get-config-file
|
|
:get-sys-config-file
|
|
:get-data-file
|
|
:get-data-dir))
|
|
|
|
(defpackage :zip-info
|
|
(:use
|
|
:cl
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:filesystem-utils
|
|
:text-utils
|
|
:misc-utils)
|
|
(:export
|
|
:zip-file-p
|
|
:list-entries))
|
|
|
|
(defpackage :crypto-utils
|
|
(:use :cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants)
|
|
(:export
|
|
:crypto-text-p
|
|
:generate-key
|
|
:encrypt-message
|
|
:decrypt-message))
|
|
|
|
(defpackage :interfaces
|
|
(:use :cl
|
|
:alexandria
|
|
:constants
|
|
:misc)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:clone
|
|
:clone-into
|
|
:copy-flat
|
|
:copy-flat-into
|
|
:with-simple-clone
|
|
:with-simple-copy-flat
|
|
:serialize
|
|
:serialize-to-stream
|
|
:deserialize
|
|
:post-deserialization-fix))
|
|
|
|
(defpackage :mtree-utils
|
|
(:use
|
|
:cl
|
|
:interfaces
|
|
:text-utils)
|
|
(:nicknames :mtree)
|
|
(:export
|
|
:random-choose-leaf
|
|
:traverse-apply-tree
|
|
:traverse-napply-tree
|
|
:traverse-find-if-tree
|
|
:traverse-find-all-if-tree
|
|
:traverse-apply-tree-cdr
|
|
:traverse-nadd-child
|
|
:traverse-ndelete-child
|
|
:nappend-child
|
|
:navigate
|
|
:m-tree
|
|
:*use-pprint-tree*
|
|
:pprint-tree
|
|
:children
|
|
:parent
|
|
:data
|
|
:add-child
|
|
:add-children
|
|
:add-children*
|
|
:child-data-pushnew
|
|
:graft-branch
|
|
:make-node
|
|
:find-node
|
|
:leafp
|
|
:rootp
|
|
:top-down-visit
|
|
:bottom-up-visit
|
|
:remove-all-children
|
|
:remove-child
|
|
:remove-child-if
|
|
:do-children
|
|
:do-children-from-end
|
|
:find-child
|
|
:find-child-if
|
|
:count-leaves
|
|
:count-nodes
|
|
:collect-nodes-data
|
|
:mtree-equal
|
|
:root-node
|
|
:sorted-m-tree
|
|
:tree->text-lines
|
|
:tree->annotated-lines))
|
|
|
|
(defpackage :bs-tree
|
|
(:use
|
|
:cl
|
|
:interfaces)
|
|
(:shadow :search :map)
|
|
(:export
|
|
:node
|
|
:parent
|
|
:data
|
|
:left
|
|
:right
|
|
:make-node
|
|
:make-leaf
|
|
:make-root-node
|
|
:%key
|
|
:+data+
|
|
:+left+
|
|
:+right+
|
|
:+parent+
|
|
:node->string
|
|
:search
|
|
:search-opt
|
|
:with-insert-local-function
|
|
:insert
|
|
:leafp
|
|
:all-children-leaf-p
|
|
:map
|
|
:map-node
|
|
:walk
|
|
:bstp
|
|
:node->dot
|
|
:reconstruct-parent
|
|
:find-max-node
|
|
:to-sexp
|
|
:from-sexp))
|
|
|
|
(defpackage :rb-tree
|
|
(:use
|
|
:cl
|
|
:interfaces
|
|
:bs-tree)
|
|
(:shadowing-import-from :bs-tree :search :map)
|
|
(:export
|
|
:+rb-red+
|
|
:+rb-black+
|
|
:+rb-color+
|
|
:rb-node
|
|
:color
|
|
:make-rb-node
|
|
:make-rb-leaf
|
|
:make-root-rb-node
|
|
:data
|
|
:left
|
|
:right
|
|
:node->string
|
|
:search
|
|
:search-opt
|
|
:with-insert-local-function
|
|
:insert
|
|
:remove-node
|
|
:leafp
|
|
:map
|
|
:map-node
|
|
:balancedp
|
|
:walk
|
|
:bstp
|
|
:node->dot
|
|
:reconstruct-parent
|
|
:to-sexp
|
|
:from-sexp))
|
|
|
|
(defpackage :priority-queue
|
|
(:use :cl)
|
|
(:nicknames :pq)
|
|
(:export
|
|
:priority-queue
|
|
:key-function
|
|
:compare-function
|
|
:equal-function
|
|
:push-element
|
|
:pop-element
|
|
:find-element
|
|
:remove-element
|
|
:map-elements
|
|
:count-elements-if
|
|
:remove-element-if
|
|
:map-events
|
|
:emptyp
|
|
:with-min-queue))
|
|
|
|
(defpackage :queue
|
|
(:use :cl)
|
|
(:nicknames :qu)
|
|
(:shadow :push :pop :find)
|
|
(:export
|
|
:*equal-function*
|
|
:*key-function*
|
|
:push
|
|
:pop
|
|
:find
|
|
:emptyp
|
|
:with-queue
|
|
:simple-queue
|
|
:container
|
|
:q-pop
|
|
:q-peek
|
|
:q-push
|
|
:q-empty-p
|
|
:q-size
|
|
:q-sort
|
|
:q-dbg-print))
|
|
|
|
(defpackage :stack
|
|
(:use
|
|
:cl
|
|
:alexandria)
|
|
(:export
|
|
:stack
|
|
:stack-push
|
|
:stack-pop
|
|
:stack-find
|
|
:stack-empty-p
|
|
:stack-remove-element
|
|
:stack-select
|
|
:stack-position
|
|
:stack-raise-to-top
|
|
:stack-empty-p
|
|
:do-stack-element))
|
|
|
|
(defpackage :uri-parser
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:esrap
|
|
:cl-ppcre
|
|
:text-utils)
|
|
(:nicknames :uri)
|
|
(:export
|
|
:uri
|
|
:copy-uri
|
|
:render-uri
|
|
:uri-parse
|
|
:scheme
|
|
:user-info
|
|
:host
|
|
:port
|
|
:path
|
|
:query
|
|
:fragment
|
|
:make-uri))
|
|
|
|
(defpackage :iri-parser
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:esrap
|
|
:cl-ppcre
|
|
:text-utils)
|
|
(:nicknames :iri)
|
|
(:import-from :fs :normalize-path)
|
|
(:export
|
|
:+segment-separator+
|
|
:iri
|
|
:copy-iri
|
|
:render-iri
|
|
:make-iri
|
|
:iri-parse
|
|
:iri=
|
|
:remove-fragment
|
|
:normalize-path
|
|
:absolute-url-p
|
|
:absolute-url-scheme-p
|
|
:ipv4-address-p
|
|
:ipv6-address-p
|
|
:iri-to-parent-path))
|
|
|
|
(defpackage :tour-mode-parser
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:esrap
|
|
:cl-ppcre
|
|
:text-utils)
|
|
(:export
|
|
:range-from
|
|
:range-to
|
|
:range-p
|
|
:parse-tour-mode))
|
|
|
|
(defpackage :x509
|
|
(:use
|
|
:cl
|
|
:alexandria)
|
|
(:export
|
|
:dump-certificate
|
|
:certificate-fingerprint))
|
|
|
|
(defpackage :db-utils
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:sxql
|
|
:local-time
|
|
:config
|
|
:constants
|
|
:text-utils)
|
|
(:export
|
|
:+characters-trouble-name+
|
|
:*connection*
|
|
:fetch
|
|
:fetch-all
|
|
:close-db
|
|
:connectedp
|
|
:with-db-transaction
|
|
:db-path
|
|
:quote-symbol
|
|
:db-file-exists-p
|
|
:init-connection
|
|
:with-ready-database
|
|
:with-disabled-foreign
|
|
:do-rows
|
|
:prepare-for-sql-like
|
|
:object-exists-in-db-p
|
|
:object-count-in-db
|
|
:query-low-level
|
|
:db-nil-p
|
|
:db-not-nil-p
|
|
:db-getf
|
|
:db-nil->lisp
|
|
:if-db-nil-else
|
|
:count-all
|
|
:query
|
|
:query->sql
|
|
:local-time-obj-now
|
|
:decode-date-string
|
|
:decode-datetime-string
|
|
:encode-datetime-string
|
|
:encoded-datetime-year
|
|
:make-insert
|
|
:make-delete
|
|
:make-update
|
|
:get-max-id
|
|
:get-min-id
|
|
:decode-blob
|
|
:rows->tsv
|
|
:table-exists-p
|
|
:prepare-for-db
|
|
:last-inserted-rowid))
|
|
|
|
(defpackage :db
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:sxql
|
|
:sxql-composer
|
|
:config
|
|
:constants
|
|
:db-utils
|
|
:text-utils)
|
|
(:export
|
|
:+db-true+
|
|
:+db-false+
|
|
:+other-id+
|
|
:+table-account+
|
|
:+table-status+
|
|
:+table-attachment+
|
|
:+table-saved-status+
|
|
:+table-crypto-data+
|
|
:+table-gemini-subscription+
|
|
:+table-bookmark+
|
|
:+bookmark-gemini-type-entry+
|
|
:+federated-timeline+
|
|
:+local-timeline+
|
|
:+home-timeline+
|
|
:+direct-timeline+
|
|
:+default-status-folder+
|
|
:+mentions-status-folder+
|
|
:+default-tag-timeline+
|
|
:+default-converation-timeline+
|
|
:+message-index-start+
|
|
:+tag-separator+
|
|
:+make-close+
|
|
:prepare-table
|
|
:hidden-recipient-p
|
|
:default-timelines
|
|
:message-index->sequence-index
|
|
:timeline-type->description
|
|
:maybe-build-all-tables
|
|
:build-all-indices
|
|
:delete-all-tables
|
|
:delete-all-views
|
|
:delete-database
|
|
:fetch-all-rows
|
|
:table->alist
|
|
:fetch-from-id
|
|
:fetch-single
|
|
:delete-by-id
|
|
:account-ignored-p
|
|
:user-ignored-p
|
|
:boost-ignored-p
|
|
:tags-ignored-p
|
|
:acct->user
|
|
:acct->id
|
|
:username->id
|
|
:user-exists-p
|
|
:user-id->user
|
|
:user-id->username
|
|
:insert-in-history
|
|
:previous-in-history
|
|
:next-in-history
|
|
:most-recent-history-id
|
|
:purge-history
|
|
:history-prompt->values
|
|
:all-poll-options
|
|
:find-poll
|
|
:find-poll-option
|
|
:find-poll-bound-to-status
|
|
:chat-message-exists-p
|
|
:find-chat
|
|
:mark-all-chat-messages-read
|
|
:count-unread-chat-messages
|
|
:chat-change-label
|
|
:chat-exists-p
|
|
:all-chats
|
|
:all-chat-messages
|
|
:all-chat-links
|
|
:last-chat-message-id
|
|
:update-db
|
|
:all-messages-timeline-folder
|
|
:message-root
|
|
:message-children
|
|
:message-root->tree
|
|
:message->thread-users
|
|
:message-id->tree
|
|
:message-from-timeline-folder-message-index
|
|
:message-index->tree
|
|
:single-status-exists-p
|
|
:find-status-id
|
|
:find-message-id
|
|
:data-id
|
|
:row-id
|
|
:row-type
|
|
:row-label
|
|
:row-message-visibility
|
|
:row-message-status-id
|
|
:row-message-index
|
|
:row-message-timeline
|
|
:row-message-folder
|
|
:row-message-username
|
|
:row-message-user-display-name
|
|
:row-message-content
|
|
:row-message-rendered-text
|
|
:row-message-creation-time
|
|
:row-message-reply-to-account-id
|
|
:row-message-subject
|
|
:row-message-tags
|
|
:row-message-reblog-id
|
|
:row-lockedp
|
|
:row-user-username
|
|
:row-avatar
|
|
:row-tag-got-new-message
|
|
:row-conversation-folder
|
|
:row-conversation-root-status-id
|
|
:row-conversation-ignored-p
|
|
:row-poll-expired-p
|
|
:row-poll-multiple-vote-p
|
|
:row-title
|
|
:row-subtitle
|
|
:row-url
|
|
:row-token
|
|
:row-expire-date
|
|
:row-account-id
|
|
:row-updated-at
|
|
:row-created-at
|
|
:row-chat-id
|
|
:row-votes-count
|
|
:row-message-reply-to-id
|
|
:row-text-url
|
|
:row-cache-key
|
|
:row-cache-type
|
|
:row-cache-accessed-at
|
|
:row-cache-created-at
|
|
:row-seenp
|
|
:row-description
|
|
:row-value
|
|
:row-local-uri
|
|
:row-original-uri
|
|
:row-gpub-version
|
|
:row-index-file
|
|
:row-author
|
|
:row-language
|
|
:row-charset
|
|
:row-published
|
|
:row-publish-date
|
|
:row-revision-date
|
|
:row-copyright
|
|
:row-license
|
|
:row-version
|
|
:row-cover
|
|
:row-input
|
|
:next-status-tree
|
|
:previous-status-tree
|
|
:message-tree-root-equal
|
|
:annotated-tree-line->data-plist
|
|
:renumber-timeline-message-index
|
|
:renumber-all-timelines
|
|
:duplicated-message-index-p
|
|
:all-attachments-to-status
|
|
:attachment-to-chat-message
|
|
:all-attachments-urls-to-status
|
|
:mark-status-read
|
|
:mark-status-unread
|
|
:mark-status-deleted
|
|
:mark-status-prevent-deletion
|
|
:count-status-redp
|
|
:count-status
|
|
:search-message-text-body
|
|
:search-next-message-body
|
|
:search-previous-message-body
|
|
:search-next-message-meta
|
|
:search-previous-message-meta
|
|
:search-next-unread-message
|
|
:last-message-index-status
|
|
:last-status-id-timeline-folder
|
|
:first-status-id-timeline-folder
|
|
:last-ignored-status-id-timeline-folder
|
|
:first-ignored-status-id-timeline-folder
|
|
:last-pagination-status-id-timeline-folder
|
|
:first-pagination-status-id-timeline-folder
|
|
:find-pagination-status
|
|
:add-to-pagination-status
|
|
:remove-pagination-status
|
|
:count-status-marked-to-delete
|
|
:delete-all-statuses-marked-deleted
|
|
:tags-histogram-foreground
|
|
:max-username-length
|
|
:keyword->dbcolumn
|
|
:folder-exists-p
|
|
:conversation-root-captured-p
|
|
:timeline-exists-p
|
|
:move-message-to-folder
|
|
:move-tree-to-folder
|
|
:last-status-id-in-tree
|
|
:all-timelines-in-folder
|
|
:all-folders
|
|
:all-timelines
|
|
:ignore-status-author
|
|
:unignore-status-author
|
|
:unignore-author
|
|
:all-usernames
|
|
:all-followed-usernames
|
|
:all-unfollowed-usernames
|
|
:all-ignored-usernames
|
|
:status-ignored-p
|
|
:status-skipped-p
|
|
:add-to-status-ignored
|
|
:add-to-status-skipped
|
|
:remove-from-status-skipped
|
|
:remove-from-status-ignored
|
|
:add-to-followers
|
|
:remove-from-followers
|
|
:forget-all-statuses-marked-deleted
|
|
:status-id->username
|
|
:subscribe-to-tag
|
|
:unsubscribe-to-tag
|
|
:tag->folder-name
|
|
:folder-name->tag
|
|
:all-tag-paginations-status
|
|
:all-subscribed-tags
|
|
:all-subscribed-tags-name
|
|
:tag-folder-name-p
|
|
:more-recent-tag-fetched-p
|
|
:all-tags-with-new-message-fetched
|
|
:update-last-seen-status-subscribed-tag
|
|
:tag-histogram
|
|
:mark-tag-got-new-messages
|
|
:unmark-tag-got-new-messages
|
|
:max-id-conversations
|
|
:all-conversations
|
|
:all-conversations-id
|
|
:add-conversation
|
|
:conversation-id->folder
|
|
:all-conversation-folders
|
|
:update-conversation-folder
|
|
:update-conversation-folder-by-id
|
|
:update-conversation-by-id
|
|
:conversation-folder-exists-p
|
|
:change-conversation-name
|
|
:conversation-stats
|
|
:conversation-id
|
|
:messages-red
|
|
:messages-to-read
|
|
:conversation-name
|
|
:conversation-read/red
|
|
:all-conversation-stats
|
|
:ignore-conversation
|
|
:delete-conversation
|
|
:import-crypto-data
|
|
:crypto-user-key
|
|
:cache-invalidate
|
|
:cache-put
|
|
:cache-get
|
|
:cache-get-key-type
|
|
:cache-get-value
|
|
:cache-expired-p
|
|
:cache-delete-all
|
|
:saved-titan-token
|
|
:save-titan-token
|
|
:tofu-passes-p
|
|
:tofu-delete
|
|
:find-tls-certificates-rows
|
|
:gemini-subscribe-url
|
|
:gemini-find-subscription
|
|
:gemini-all-subscriptions
|
|
:row-seen-count
|
|
:row-unseen-count
|
|
:find-gemlog-entry
|
|
:gemini-all-unread-posts
|
|
:gemini-cancel-subscription
|
|
:gemini-gemlog-subscribed-p
|
|
:add-gemlog-entries
|
|
:gemlog-mark-as-seen
|
|
:gemlog-url
|
|
:gemlog-title
|
|
:gemlog-subtitle
|
|
:row-post-date
|
|
:row-post-title
|
|
:row-post-link
|
|
:row-post-seenp
|
|
:gemlog-entries
|
|
:delete-gemlog-entry
|
|
:purge-seen-gemlog-entries
|
|
:bookmark-add
|
|
:bookmark-complete->id
|
|
:bookmark-description-for-complete
|
|
:bookmark-all-sections
|
|
:bookmark-all-grouped-by-section
|
|
:bookmark-all-bookmarked-url
|
|
:bookmark-all
|
|
:bookmark-exists-p
|
|
:bookmark-delete
|
|
:gempub-metadata-add
|
|
:all-gempub-metadata
|
|
:gempub-metadata-delete
|
|
:gempub-metadata-find
|
|
:get-parent-status-row))
|
|
|
|
(defpackage :date-formatter
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:esrap
|
|
:config
|
|
:constants
|
|
:misc
|
|
:text-utils)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:expand-date-formatter-spec))
|
|
|
|
(defpackage :emoji-shortcodes
|
|
(:use :cl)
|
|
(:export
|
|
:shortcode-lookup
|
|
:emojify))
|
|
|
|
(defpackage :software-configuration
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:esrap
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree)
|
|
(:nicknames :swconf)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:+conf-filename+
|
|
:+shared-conf-filename+
|
|
:+key-unknown+
|
|
:+key-experimental+
|
|
:+key-regex+
|
|
:+key-background+
|
|
:+key-foreground+
|
|
:+key-title+
|
|
:+key-start+
|
|
:+key-end+
|
|
:+key-left+
|
|
:+key-right+
|
|
:+key-geometry+
|
|
:+key-tile+
|
|
:+key-stopper+
|
|
:+key-root+
|
|
:+key-width+
|
|
:+key-height+
|
|
:+key-position+
|
|
:+key-exclusive+
|
|
:+key-search+
|
|
:+key-mode+
|
|
:+key-count+
|
|
:+key-toc+
|
|
:+key-downloading+
|
|
:+key-animation+
|
|
:+key-x+
|
|
:+key-y+
|
|
:+key-maximum+
|
|
:+key-minimum+
|
|
:+key-error+
|
|
:+key-info+
|
|
:+key-window+
|
|
:+key-header+
|
|
:+key-focus+
|
|
:+key-prefix+
|
|
:+key-postfix+
|
|
:+key-line+
|
|
:+key-padding+
|
|
:+key-value+
|
|
:+key-scheme+
|
|
:+key-uri+
|
|
:+key-link+
|
|
:+key-links+
|
|
:+key-http+
|
|
:+key-creation-time+
|
|
:+key-access-time+
|
|
:+key-visibility+
|
|
:+key-public+
|
|
:+key-unlisted+
|
|
:+key-private+
|
|
:+key-direct+
|
|
:+key-quote+
|
|
:+key-h1+
|
|
:+key-h2+
|
|
:+key-h3+
|
|
:+key-bullet+
|
|
:+key-preformatted-text+
|
|
:+key-other+
|
|
:+key-attribute+
|
|
:+key-new-message+
|
|
:+key-mark+
|
|
:+key-vote-vertical-bar+
|
|
:+key-crypted+
|
|
:+key-open-link-helper+
|
|
:+key-histogram+
|
|
:+key-error-dialog+
|
|
:+key-info-dialog+
|
|
:+key-input-dialog+
|
|
:+key-help-dialog+
|
|
:+key-notify-window+
|
|
:+key-gempub-library-window+
|
|
:+key-notification-icon+
|
|
:+key-life+
|
|
:+key-quick-help+
|
|
:+key-more-choices+
|
|
:+key-modeline+
|
|
:+key-date-format+
|
|
:+key-locked+
|
|
:+key-unlocked+
|
|
:+key-account+
|
|
:+key-signature-file+
|
|
:+key-main-window+
|
|
:+key-thread-window+
|
|
:+key-message-window+
|
|
:+key-chat-window+
|
|
:+key-chats-list-window+
|
|
:+key-gemini-subscription-window+
|
|
:+key-gemini-toc-window+
|
|
:+key-gopher-window+
|
|
:+key-attachment-header+
|
|
:+key-max-numbers-allowed-attachments+
|
|
:+key-max-message-length+
|
|
:+key-max-report-comment-length+
|
|
:+key-reply-quoted-character+
|
|
:+key-line-position-mark+
|
|
:+key-favourite+
|
|
:+key-sensitive+
|
|
:+key-boosted+
|
|
:+key-tags-window+
|
|
:+key-conversations-window+
|
|
:+key-keybindings-window+
|
|
:+key-suggestions-window+
|
|
:+key-open-attach-window+
|
|
:+key-open-message-link-window+
|
|
:+key-open-gemini-stream-window+
|
|
:+key-gemini-certificates-window+
|
|
:+key-command-window+
|
|
:+key-file-explorer+
|
|
:+key-command-separator+
|
|
:+key-gemini+
|
|
:+key-gemlog+
|
|
:+key-gempub+
|
|
:+key-library+
|
|
:+key-sync+
|
|
:+key-favicon+
|
|
:+key-tree+
|
|
:+key-branch+
|
|
:+key-arrow+
|
|
:+key-left-arrow+
|
|
:+key-data+
|
|
:+key-data-leaf+
|
|
:+key-leaf+
|
|
:+key-branch+
|
|
:+key-spacer+
|
|
:+key-vertical-line+
|
|
:+key-editor+
|
|
:+key-username+
|
|
:+key-server+
|
|
:+key-message+
|
|
:+key-selected+
|
|
:+key-unselected+
|
|
:+key-deleted+
|
|
:+key-fetched+
|
|
:+key-delete+
|
|
:+key-input+
|
|
:+key-read+
|
|
:+key-unread+
|
|
:+key-directory-symbol+
|
|
:+key-directory+
|
|
:+key-file+
|
|
:+key-binary-file+
|
|
:+key-text-file+
|
|
:+key-image-file+
|
|
:+key-images+
|
|
:+key-gif-file+
|
|
:+key-fetch+
|
|
:+key-update+
|
|
:+key-iri+
|
|
:+key-fragment+
|
|
:+key-close-after-select+
|
|
:+key-password-echo-character+
|
|
:+key-color-re+
|
|
:+key-ignore-user-re+
|
|
:+key-ignore-user-boost-re+
|
|
:+key-ignore-tag-re+
|
|
:+key-post-allowed-language+
|
|
:+key-purge-history-days-offset+
|
|
:+key-purge-cache-days-offset+
|
|
:+key-mentions+
|
|
:+key-montage+
|
|
:+buffer-minimum-size-to-open+
|
|
:*allowed-status-visibility*
|
|
:*allowed-attachment-type*
|
|
:*software-configuration*
|
|
:color-re-assign
|
|
:re
|
|
:color-name
|
|
:color-value
|
|
:attributes
|
|
:parse-config
|
|
:parse
|
|
:perform-missing-value-check
|
|
:load-config-file
|
|
:gen-simple-access
|
|
:access-non-null-conf-value
|
|
:false-value-p
|
|
:external-editor
|
|
:gemini-downloading-animation
|
|
:close-link-window-after-select-p
|
|
:suggestion-window-selected-item-colors
|
|
:gemini-default-favicon
|
|
:gemini-update-gemlog-at-start-p
|
|
:directory-symbol
|
|
:gemini-fetch-favicon-p
|
|
:gemini-link-colors
|
|
:gemini-link-prefix-to-gemini
|
|
:gemini-link-prefix-to-other
|
|
:gemini-link-prefix-to-http
|
|
:gemini-quote-prefix
|
|
:gemini-quote-prefix
|
|
:gemini-h1-prefix
|
|
:gemini-h2-prefix
|
|
:gemini-h3-prefix
|
|
:gemini-bullet-prefix
|
|
:gemini-preformatted-fg
|
|
:gemini-subscription-url-fg
|
|
:gemini-subscription-count-fg
|
|
:gemini-certificates-window-colors
|
|
:gemini-toc-padding-char
|
|
:signature-file-path
|
|
:vote-vertical-bar
|
|
:crypted-mark-value
|
|
:quick-help-header-colors
|
|
:window-titles-ends
|
|
:tags-histogram-foreground
|
|
:tags-new-message-mark
|
|
:conversation-window-read-colors
|
|
:conversation-window-unread-colors
|
|
:max-message-length
|
|
:max-report-comment-length
|
|
:quote-char
|
|
:max-attachments-allowed
|
|
:gempub-library-directory
|
|
:color-regexps
|
|
:ignore-users-regexps
|
|
:ignore-users-boost-regexps
|
|
:ignore-tag-regexps
|
|
:win-bg
|
|
:win-fg
|
|
:win-height
|
|
:win-width
|
|
:command-separator-config-values
|
|
:command-error-message-colors
|
|
:command-info-message-colors
|
|
:tree-config-colors
|
|
:tree-config-rendering-values
|
|
:make-tree-colormap
|
|
:left-arrow
|
|
:config-delete-fetched-mentions-p
|
|
:config-gemini-fullscreen-toc-width
|
|
:config-gemini-fullscreen-links-height
|
|
:config-gemini-images-montage-tile
|
|
:config-gemini-images-montage-geometry
|
|
:config-post-allowed-language
|
|
:config-purge-history-days-offset
|
|
:config-purge-cage-days-offset
|
|
:config-notification-life
|
|
:config-gemini-fragment-as-regex-p
|
|
:config-notify-window-geometry
|
|
:config-notification-icon
|
|
:config-server-name
|
|
:config-username
|
|
:config-password-echo-character
|
|
:config-win-focus-mark
|
|
:config-gopher-line-prefix-directory
|
|
:config-gopher-line-prefix-uri
|
|
:config-gopher-line-prefix-unknown
|
|
:config-gopher-line-prefix-binary-file
|
|
:config-gopher-line-prefix-text-file
|
|
:config-gopher-line-prefix-image-file
|
|
:config-gopher-line-prefix-gif-file
|
|
:config-gopher-line-prefix-search-index
|
|
:config-gopher-line-prefix-attribute
|
|
:config-gopher-line-prefix-foreground
|
|
:config-default-post-language
|
|
:config-announcements-separator
|
|
:config-announcements-icon
|
|
:link-regex->program-to-use
|
|
:link-regex->program-to-use-buffer-size
|
|
:use-tinmop-as-external-program-p
|
|
:use-editor-as-external-program-p
|
|
:thread-message-symbol
|
|
:thread-message-read-colors
|
|
:thread-message-unread-colors
|
|
:thread-message-selected-colors
|
|
:thread-message-deleted-colors
|
|
:modeline-colors
|
|
:modeline-fmt
|
|
:date-fmt
|
|
:message-window-locked-account-mark
|
|
:message-window-unlocked-account-mark
|
|
:message-window-account-locking-status-mark
|
|
:message-window-line-mark-values
|
|
:message-windows-visibility-marks
|
|
:message-window-attachments-header
|
|
:message-window-quote-prefix
|
|
:message-window-bullet-prefix
|
|
:form-style
|
|
:background
|
|
:foreground
|
|
:input-background
|
|
:input-foreground
|
|
:selected-background
|
|
:selected-foreground
|
|
:unselected-background
|
|
:unselected-foreground))
|
|
|
|
(defpackage :tui-utils
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:local-time
|
|
:croatoan
|
|
:config
|
|
:constants
|
|
:interfaces
|
|
:text-utils)
|
|
(:nicknames :tui)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:export
|
|
:make-win-background
|
|
:make-croatoan-window
|
|
:make-blocking-croatoan-window
|
|
:make-screen
|
|
:make-tui-char
|
|
:make-tui-string
|
|
:tui-format
|
|
:decode-key-event
|
|
:colorize-tree-element
|
|
:colorize-tree-line
|
|
:text-length
|
|
:find-max-line-width
|
|
:ncat-complex-string
|
|
:to-tui-string
|
|
:cat-complex-string
|
|
:cat-tui-string
|
|
:tui-char->char
|
|
:tui-string->chars-string
|
|
:tui-string-subseq
|
|
:text-ellipsis
|
|
:right-pad-text
|
|
:text->tui-attribute
|
|
:assemble-attributes
|
|
:attribute-reverse
|
|
:attribute-bold
|
|
:attribute-underline
|
|
:attribute-italic
|
|
:attribute-blink
|
|
:attribute-dim
|
|
:attribute-invisible
|
|
:combine-attributes
|
|
:colorize-line
|
|
:colorized-line->tui-string
|
|
:apply-coloring
|
|
:standard-error-notify-life
|
|
:with-notify-errors
|
|
:with-print-error-message
|
|
:make-tui-char
|
|
:make-tui-string
|
|
:tui-string-apply-colors
|
|
:copy-tui-string
|
|
:apply-attributes))
|
|
|
|
(defpackage :command-line
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:+start-server-command-line+
|
|
:*start-folder*
|
|
:*start-timeline*
|
|
:*update-timeline*
|
|
:*script-file*
|
|
:*module-file*
|
|
:*check-follow-requests*
|
|
:*reset-timeline-pagination*
|
|
:*notify-mentions*
|
|
:*net-address*
|
|
:*update-timeline-climb-message-tree*
|
|
:*gemini-full-screen-mode*
|
|
:*print-lisp-dependencies*
|
|
:*start-dummy-server*
|
|
:*rpc-server-mode*
|
|
:*rpc-client-mode*
|
|
:manage-opts))
|
|
|
|
(defpackage :specials
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants)
|
|
(:export
|
|
:*main-window*
|
|
:*keybindings-suggestions-window*
|
|
:*strings-suggestions-window*
|
|
:*command-window*
|
|
:*thread-window*
|
|
:*message-window*
|
|
:*send-message-window*
|
|
:*follow-requests-window*
|
|
:*tags-window*
|
|
:*conversations-window*
|
|
:*open-attach-window*
|
|
:*open-message-link-window*
|
|
:*gemini-streams-window*
|
|
:*gemini-certificates-window*
|
|
:*gemini-subscription-window*
|
|
:*gemini-toc-window*
|
|
:*chats-list-window*
|
|
:*gempub-library-window*
|
|
:*filesystem-explorer-window*
|
|
:*gopher-window*))
|
|
|
|
(defpackage :complete
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:osicat)
|
|
(:export
|
|
:*complete-function*
|
|
:shortest-candidate
|
|
:directory-complete
|
|
:tilde-expand-string
|
|
:folder-complete
|
|
:timeline-complete-fn
|
|
:ignored-username-complete
|
|
:initialize-complete-username-cache
|
|
:username-complete
|
|
:visibility-complete
|
|
:unfollowed-user-complete
|
|
:followed-user-complete
|
|
:tags-complete
|
|
:conversation-folder
|
|
:expand-iri-as-local-path-p
|
|
:make-complete-gemini-iri-fn
|
|
:complete-chat-message
|
|
:complete-always-empty
|
|
:bookmark-section-complete
|
|
:bookmark-description-complete-clsr
|
|
:language-codes))
|
|
|
|
(defpackage :program-events
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:priority-queue
|
|
:config
|
|
:constants
|
|
:priority-queue
|
|
:misc
|
|
:box)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:shadowing-import-from :priority-queue :emptyp)
|
|
(:export
|
|
:+standard-event-priority+
|
|
:+minimum-event-priority+
|
|
:+maximum-event-priority+
|
|
:*process-events-immediately*
|
|
:with-stop-event-dispatching
|
|
:stop-event-dispatching-p
|
|
:program-event
|
|
:event-id
|
|
:payload
|
|
:condition-variable
|
|
:priority
|
|
:reinitialize-id
|
|
:events-queue
|
|
:lock
|
|
:push-event-unblock
|
|
:pop-event-block
|
|
:push-event
|
|
:event-available-p
|
|
:pop-event
|
|
:remove-event
|
|
:remove-event-if
|
|
:find-event
|
|
:function-event
|
|
:with-enqueued-process
|
|
:with-enqueued-process-and-unblock
|
|
:event-on-own-thread
|
|
:blocking-caller-event
|
|
:push-function-and-wait-results
|
|
:ask-user-input-string-event
|
|
:user-input-string-event
|
|
:notify-user-event
|
|
:remove-notify-user-event
|
|
:change-window-title-event
|
|
:save-timeline-in-db-event
|
|
:timeline-type
|
|
:localp
|
|
:min-id
|
|
:fetch-remote-status-event
|
|
:process-event
|
|
:search-next-event
|
|
:search-message-gemini-fragment-event
|
|
:search-regex-message-content-event
|
|
:thread-search-message-body-event
|
|
:search-direction
|
|
:thread-search-message-meta-event
|
|
:filesystem-tree-search-message-event
|
|
:thread-goto-message
|
|
:delete-all-status-event
|
|
:quit-program-event
|
|
:error-message-event
|
|
:info-message-event
|
|
:error-dialog-event
|
|
:info-dialog-event
|
|
:move-selected-tree-event
|
|
:refresh-thread-windows-event
|
|
:favourite-status-event
|
|
:unfavourite-status-event
|
|
:reblog-status-event
|
|
:unreblog-status-event
|
|
:unignore-user-event
|
|
:send-message-change-language-event
|
|
:send-message-change-subject-event
|
|
:send-message-change-mentions-event
|
|
:send-message-change-visibility-event
|
|
:open-send-message-window-event
|
|
:make-attachment
|
|
:attachment-path
|
|
:attachment-alt-text
|
|
:send-message-add-attachment-event
|
|
:send-message-event
|
|
:with-sending-message-data
|
|
:use-ui-notification
|
|
:follow-user-event
|
|
:unfollow-user-event
|
|
:open-follow-requests-window-event
|
|
:subscribe-tags-event
|
|
:unsubscribe-tags-event
|
|
:update-last-refresh-subscribe-tags-event
|
|
:notify-fetched-new-tag-messages-event
|
|
:tag-mark-got-messages-event
|
|
:refresh-tag-window-event
|
|
:update-tags-histograms-event
|
|
:update-conversations-event
|
|
:change-conversation-name-event
|
|
:old-name
|
|
:new-name
|
|
:refresh-conversations-window-event
|
|
:ignore-conversations-event
|
|
:delete-conversations-event
|
|
:update-mentions-event
|
|
:expand-thread-event
|
|
:report-status-event
|
|
:add-crypto-data-event
|
|
:poll-vote-event
|
|
:add-pagination-status-event
|
|
:status-id
|
|
:timeline
|
|
:display-output-script-page
|
|
:gemini-display-data-page
|
|
:gemini-request-event
|
|
:titan-post-event
|
|
:gemini-back-event
|
|
:gemini-got-line-event
|
|
:gemini-abort-all-downloading-event
|
|
:gemini-push-behind-downloading-event
|
|
:gemini-abort-downloading-event
|
|
:gemini-compact-lines-event
|
|
:gemini-enqueue-download-event
|
|
:gemini-gemlog-subscribe-event
|
|
:gemlog-cancel-subscription-event
|
|
:gemlog-show-event
|
|
:gemlog-refresh-all-event
|
|
:gemini-toc-jump-to-section
|
|
:gemini-toc-open
|
|
:gemini-toc-scroll-begin
|
|
:gemini-toc-scroll-end
|
|
:gemini-toc-search
|
|
:get-chat-messages-event
|
|
:get-chats-event
|
|
:chat-show-event
|
|
:update-all-chat-messages-event
|
|
:chat-post-message-event
|
|
:chat-change-label-event
|
|
:chat-create-event
|
|
:search-link-event
|
|
:search-toc-event
|
|
:help-apropos-event
|
|
:redraw-window-event
|
|
:send-to-pipe-event
|
|
:print-mentions-event
|
|
:show-announcements-event
|
|
:check-announcements-event
|
|
:delete-all-notifications-event
|
|
:dispatch-program-events
|
|
:dispatch-program-events-or-wait))
|
|
|
|
(defpackage :api-pleroma
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:config
|
|
:constants
|
|
:misc)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:chat-message
|
|
:message-id
|
|
:nreadp
|
|
:emojis
|
|
:updated-at
|
|
:created-at
|
|
:content
|
|
:chat-id
|
|
:attachment
|
|
:account-id
|
|
:chat
|
|
:unread-count
|
|
:last-message
|
|
:account
|
|
:create-chat
|
|
:get-all-chats
|
|
:post-chat-message
|
|
:fetch-chat-messages
|
|
:delete-chat-message
|
|
:get-chat-messages
|
|
:get-chats
|
|
:post-on-chat
|
|
:create-new-chat
|
|
:instance-pleroma-p))
|
|
|
|
(defpackage :api-client
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:config
|
|
:constants
|
|
:db-utils
|
|
:interfaces
|
|
:text-utils
|
|
:misc)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:nicknames :client)
|
|
(:export
|
|
:*client*
|
|
:*client-lock*
|
|
:forget-credentials
|
|
:authorize
|
|
:defun-api-call
|
|
:get-announcements
|
|
:dismiss-announcement
|
|
:dismiss-all-announcements
|
|
:favourite-status
|
|
:unfavourite-status
|
|
:reblog-status
|
|
:unreblog-status
|
|
:get-timeline
|
|
:update-timeline
|
|
:tag->folder-name
|
|
:tag-name
|
|
:tag-information
|
|
:tag-history
|
|
:update-subscribed-tags
|
|
:fetch-remote-status
|
|
:get-remote-status
|
|
:send-status
|
|
:get-status-context
|
|
:search-user
|
|
:find-results
|
|
:follow-user
|
|
:unfollow-user
|
|
:follow-requests
|
|
:accept-follow-request
|
|
:reject-follow-request
|
|
:get-following
|
|
:local-user-acct
|
|
:conversation-tree
|
|
:id
|
|
:last-status
|
|
:status-tree
|
|
:root
|
|
:conversation-root-id
|
|
:conversations
|
|
:expand-conversations-tree
|
|
:make-report
|
|
:delete-conversation
|
|
:delete-status
|
|
:get-activity
|
|
:application-credentials
|
|
:bookmarks
|
|
:bookmark
|
|
:unbookmark
|
|
:polls
|
|
:poll-vote
|
|
:get-notifications
|
|
:delete-notification
|
|
:notification->text
|
|
:sort-id<
|
|
:sott-id>
|
|
:id=
|
|
:all-mentions
|
|
:all-notifications
|
|
:delete-all-notifications
|
|
:update-mentions-folder
|
|
:expand-status-thread
|
|
:make-placeholder-tag-histogram
|
|
:init))
|
|
|
|
(defpackage :hooks
|
|
(:use
|
|
:cl
|
|
:alexandria)
|
|
(:export
|
|
:*hook*
|
|
:add-hook
|
|
:remove-hook
|
|
:run-hooks
|
|
:run-hook
|
|
:run-hook-compose
|
|
:run-hook-until-failure
|
|
:run-hook-until-success
|
|
:*before-main-loop*
|
|
:*before-quit*
|
|
:*before-rendering-message-text*
|
|
:*before-rendering-message-visible-rows*
|
|
:*before-composing-message*
|
|
:*before-sending-message*
|
|
:*skip-message-hook*
|
|
:*after-saving-message*
|
|
:*before-displaying-links-hook*
|
|
:*after-char-to-command-window*
|
|
:*before-fire-string-event-command-window*
|
|
:*after-delete-char-from-command-window*
|
|
:*after-gemini-socket*
|
|
:*after-gemini-request-sent*
|
|
:*after-titan-socket*
|
|
:*after-titan-request-sent*))
|
|
|
|
(defpackage :keybindings
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:esrap
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:*global-keymap*
|
|
:*thread-keymap*
|
|
:*tags-keymap*
|
|
:*conversations-keymap*
|
|
:*message-keymap*
|
|
:*gemini-message-keymap*
|
|
:*send-message-keymap*
|
|
:*follow-requests-keymap*
|
|
:*open-attach-keymap*
|
|
:*open-message-link-keymap*
|
|
:*open-gemini-link-keymap*
|
|
:*gemini-downloads-keymap*
|
|
:*gemini-certificates-keymap*
|
|
:*chats-list-keymap*
|
|
:*chat-message-keymap*
|
|
:*gemlog-subscription-keymap*
|
|
:*gemini-toc-keymap*
|
|
:*gempub-library-keymap*
|
|
:*filesystem-explorer-keymap*
|
|
:*gopher-keymap*
|
|
:define-key
|
|
:init-keyboard-mapping
|
|
:find-keymap-node
|
|
:humanize-key
|
|
:help-fields-get-function
|
|
:help-fields-get-text
|
|
:print-help))
|
|
|
|
(defpackage :2d-utils
|
|
(:use :cl)
|
|
(:export
|
|
:iaabb2-min-x
|
|
:iaabb2-max-x
|
|
:iaabb2-min-y
|
|
:iaabb2-max-y
|
|
:make-iaabb2
|
|
:iaabb2~
|
|
:valid-iaabb2
|
|
:expand-iaabb2
|
|
:union-iaabb2
|
|
:iaabb2->irect2
|
|
:irect2->iaabb2
|
|
:irect2->iaabb2*
|
|
:inside-iaabb2-p
|
|
:iaabb2-intersect-p
|
|
:iaabb2-inglobe-p
|
|
:iaabb2-null-p
|
|
:trasl-iaabb2
|
|
:trasl-irect2
|
|
:center-iaabb2))
|
|
|
|
(defpackage :windows
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:stack
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:tui-utils)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:shadowing-import-from :stack :stack :stack-push :stack-pop :stack-empty-p)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:local-nicknames (:c :croatoan)
|
|
(:c-dlg #:de.anvi.croatoan.dialog))
|
|
(:export
|
|
:key-config-holder
|
|
:key-config
|
|
:tree-holder
|
|
:tree-color-map
|
|
:render-arrow-value
|
|
:render-leaf-value
|
|
:render-branch-value
|
|
:render-spacer-value
|
|
:render-vertical-line-value
|
|
:refresh-config-color-map
|
|
:wrapper-window
|
|
:croatoan-window
|
|
:modalp
|
|
:modal
|
|
:with-croatoan-window
|
|
:+min-shown-win-height+
|
|
:+min-shown-win-width+
|
|
:when-window-shown
|
|
:keybindings
|
|
:win-clear
|
|
:win-width
|
|
:win-height
|
|
:win-x
|
|
:win-y
|
|
:win-box
|
|
:win-bgcolor
|
|
:win-fgcolor
|
|
:win-refresh
|
|
:win-close
|
|
:maybe-close-window
|
|
:win-raise-to-top
|
|
:win-move-cursor
|
|
:win-move-cursor-direction
|
|
:win-move
|
|
:win-resize
|
|
:win-show
|
|
:win-hide
|
|
:win-shown-p
|
|
:menu-select
|
|
:win-width-no-border
|
|
:win-height-no-border
|
|
:with-window-width
|
|
:with-window-height
|
|
:with-window-sizes
|
|
:calc-center-on-window-width
|
|
:calc-bottom-of-window-height
|
|
:print-text
|
|
:refresh-config
|
|
:refresh-config-colors
|
|
:refresh-config-sizes
|
|
:calculate
|
|
:draw
|
|
:aabb
|
|
:remove-intersecting-window
|
|
:draw-all
|
|
:refresh-config-all
|
|
:calculate-all
|
|
:cursor-show
|
|
:cursor-hide
|
|
:add-flush-left-text
|
|
:make-blocking-message-dialog
|
|
:make-error-message-dialog
|
|
:make-info-message-dialog
|
|
:make-checklist-dialog
|
|
:make-input-dialog
|
|
:focus-marked-window
|
|
:in-focus
|
|
:in-focus-p
|
|
:draw-focus-mark
|
|
:border-window
|
|
:uses-border-p
|
|
:usable-window-width
|
|
:window-uses-border-p
|
|
:title-window
|
|
:adjust-win-vertical-positioning-if-gemini-fullscreen))
|
|
|
|
(defpackage :notify-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:tui-utils)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:notify-window
|
|
:pending
|
|
:notify-window-p
|
|
:draw-pending
|
|
:make-notification-window))
|
|
|
|
(defpackage :suggestions-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:specials
|
|
:windows
|
|
:tui-utils)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:suggestions-window
|
|
:paginated-info
|
|
:current-page
|
|
:update-suggestions
|
|
:draw-pagination-info))
|
|
|
|
(defpackage :complete-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:tui-utils
|
|
:specials
|
|
:windows
|
|
:suggestions-window)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:+starting-item-index+
|
|
:complete-window
|
|
:selected-item-row-index
|
|
:selected-item-column-index
|
|
:reset-selected-item
|
|
:init))
|
|
|
|
(defpackage :keybindings-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:keybindings
|
|
:specials
|
|
:windows
|
|
:suggestions-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:keybindings-window
|
|
:keybindings-tree
|
|
:update-keybindings-tree
|
|
:init))
|
|
|
|
(defpackage :point-tracker
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:config
|
|
:constants
|
|
:misc
|
|
:text-utils)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:point-tracker
|
|
:point-position
|
|
:point-fg
|
|
:point-bg
|
|
:prompt
|
|
:no-prompt-point-pos
|
|
:move-point-left
|
|
:move-point-right
|
|
:move-point
|
|
:move-point-to-end
|
|
:move-point-to-start
|
|
:insert-at-point
|
|
:delete-at-point))
|
|
|
|
(defpackage :modeline-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:esrap
|
|
:config
|
|
:constants
|
|
:misc
|
|
:text-utils
|
|
:windows
|
|
:tui-utils)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:modeline-window
|
|
:mapping-code->fn
|
|
:modeline-src
|
|
:modeline-text
|
|
:modeline-fg
|
|
:modeline-bg
|
|
:expand-modeline-spec
|
|
:refresh-modeline-config
|
|
:add-modeline-char-expander))
|
|
|
|
(defpackage :line-oriented-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:keybindings
|
|
:specials
|
|
:windows
|
|
:modeline-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:import-from :keybindings-window :update-keybindings-tree)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:line
|
|
:selected-fg
|
|
:selected-bg
|
|
:normal-fg
|
|
:normal-bg
|
|
:normal-text
|
|
:selected-text
|
|
:deleted-text
|
|
:fields
|
|
:index
|
|
:selected
|
|
:selectedp
|
|
:row-oriented-widget
|
|
:single-row-height
|
|
:top-row-padding
|
|
:rows
|
|
:row-selected-index
|
|
:y-current-row
|
|
:top-rows-slice
|
|
:bottom-rows-slice
|
|
:renderizable-rows-data
|
|
:unselect-all
|
|
:select-row
|
|
:select-first-row
|
|
:adjust-selected-rows
|
|
:adjust-rows-noop
|
|
:adjust-rows-select-first
|
|
:adjust-rows-select-last
|
|
:adjust-selected-rows
|
|
:selected-row
|
|
:ignore-selecting-action
|
|
:set-default-index
|
|
:selected-row-fields
|
|
:selected-row-delete
|
|
:search-row
|
|
:update-all-rows
|
|
:append-new-rows
|
|
:map-rows
|
|
:rows-map-raw
|
|
:do-rows
|
|
:do-rows-raw
|
|
:loop-rows
|
|
:rows-length
|
|
:rows-empty-p
|
|
:rows-remove-if
|
|
:rows-find-if
|
|
:rows-safe-subseq
|
|
:rows-elt
|
|
:rows-last-elt
|
|
:rows-first-elt
|
|
:rows-position-if
|
|
:rows->text-rows
|
|
:rows->text
|
|
:row-move
|
|
:simple-line-navigation-window
|
|
:selected-line-bg
|
|
:selected-line-fg
|
|
:unselected-line-bg
|
|
:unselected-line-fg
|
|
:resync-rows-db
|
|
:make-blocking-list-dialog-window))
|
|
|
|
(defpackage :filesystem-tree-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:keybindings
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:+octect-type+
|
|
:make-temporary-file-from-node
|
|
:make-node-data
|
|
:filesystem-tree-window
|
|
:filesystem-root
|
|
:filesystem-collect-tree
|
|
:tree-path
|
|
:tree-dir-p
|
|
:tree-marked-p
|
|
:close-treenode
|
|
:expand-treenode
|
|
:rename-treenode
|
|
:delete-treenode
|
|
:create-treenode
|
|
:download-path
|
|
:upload-path
|
|
:recursive-delete-node
|
|
:filesystem-query-path
|
|
:mark-node
|
|
:open-node
|
|
:edit-node
|
|
:close-connection
|
|
:filter-node-children
|
|
:resync-rows-db
|
|
:init))
|
|
|
|
(defpackage :message-rendering-utils
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:croatoan
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils
|
|
:db-utils
|
|
:db)
|
|
(:nicknames :msg-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:+temp-mention-prefix+
|
|
:add-mention-prefix
|
|
:strip-mention-prefix
|
|
:local-mention->acct
|
|
:crypto-message-destination-user
|
|
:maybe-crypt-message
|
|
:attachment-type->description
|
|
:attachment-type->metadata
|
|
:status-attachments->text
|
|
:message-original->text-body
|
|
:message-original->text-header
|
|
:poll->text
|
|
:signature))
|
|
|
|
(defpackage :thread-window
|
|
(:use
|
|
:cl
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:keybindings
|
|
:specials
|
|
:windows
|
|
:modeline-window
|
|
:line-oriented-window
|
|
:tui-utils
|
|
:message-rendering-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:import-from :keybindings-window :update-keybindings-tree)
|
|
(:local-nicknames (:c :croatoan)
|
|
(:a :alexandria))
|
|
(:export
|
|
:message-line
|
|
:thread-window
|
|
:timeline-type
|
|
:timeline-folder
|
|
:mentions-count
|
|
:add-announcements-notification
|
|
:remove-announcements-notification
|
|
:select-messages-corresponding-to-shown
|
|
:grow-tree-to-fit-window
|
|
:fit-timeline-to-window
|
|
:go-message-down
|
|
:go-message-up
|
|
:search-next-message-body
|
|
:search-previous-message-body
|
|
:search-next-message-meta
|
|
:search-previous-message-meta
|
|
:search-next-unread
|
|
:add-mention
|
|
:remove-mention
|
|
:goto-message
|
|
:goto-first-message
|
|
:goto-last-message
|
|
:open-message
|
|
:mark-selected-message-to-delete
|
|
:mark-selected-message-prevent-delete
|
|
:init))
|
|
|
|
(defpackage :message-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:keybindings
|
|
:specials
|
|
:windows
|
|
:modeline-window
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:message-window
|
|
:metadata
|
|
:adjust-rows-strategy
|
|
:gemini-window-p*
|
|
:gemini-window-p
|
|
:display-gemini-text-p
|
|
:display-chat-p
|
|
:row-get-original-object
|
|
:viewport-width
|
|
:draw-downloading-animation
|
|
:visible-rows
|
|
:row-link-p
|
|
:row-vertical-space-p
|
|
:row-preformatted-p
|
|
:row-invisible-p
|
|
:row-visible-p
|
|
:row-set-visible
|
|
:row-set-invisible
|
|
:row-hide-preformatted
|
|
:row-show-pre-start
|
|
:row-show-preformatted
|
|
:row-hide-pre-start
|
|
:set-default-preformatted-visibility
|
|
:get-default-preformatted-visibility
|
|
:pre-visible-p
|
|
:toggle-default-preformatted-visibility
|
|
:toggle-preformatted-block
|
|
:text->rendered-lines-rows
|
|
:row-find-original-object
|
|
:row-position-original-object
|
|
:extract-original-object
|
|
:prepare-for-display-status-mode
|
|
:prepare-for-rendering
|
|
:scroll-down
|
|
:scroll-up
|
|
:scroll-end
|
|
:scroll-left
|
|
:scroll-right
|
|
:scroll-begin
|
|
:scroll-next-page
|
|
:scroll-previous-page
|
|
:search-regex
|
|
:jump-to-group-id
|
|
:gemini-sexp->toc-plist
|
|
:generate-gemini-toc
|
|
:gemini-toc-entry
|
|
:gemini-toc-group-id
|
|
:init
|
|
:search-gemini-fragment))
|
|
|
|
(defpackage :gopher-window
|
|
(:use
|
|
:cl
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:keybindings
|
|
:specials
|
|
:windows
|
|
:modeline-window
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan)
|
|
(:a :alexandria))
|
|
(:export
|
|
:gopher-window
|
|
:gopher-window-p
|
|
:current-gopher-url
|
|
:go-to-next-link
|
|
:go-to-previous-link
|
|
:open-menu-link
|
|
:init))
|
|
|
|
(defpackage :open-attach-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:open-attach-window
|
|
:status-id
|
|
:refresh-view-links-window-config
|
|
:resync-rows-db
|
|
:open-attachment
|
|
:init))
|
|
|
|
(defpackage :open-message-link-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:open-message-link
|
|
:init
|
|
:init-gemini-links
|
|
:forget-gemini-link-window
|
|
:init-tour-links
|
|
:init-chat-links
|
|
:forget-chat-link-window))
|
|
|
|
(defpackage :gemini-certificates-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:open-gemini-certificates-window))
|
|
|
|
(defpackage :gemini-subscription-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:open-gemini-subscription-window))
|
|
|
|
(defpackage :gemini-page-toc
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:highlight-current-section
|
|
:open-toc-window))
|
|
|
|
(defpackage :command-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:keybindings
|
|
:specials
|
|
:windows
|
|
:point-tracker
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:import-from :keybindings-window :update-keybindings-tree)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:print-error
|
|
:command-window
|
|
:command-line
|
|
:echo-character
|
|
:event-to-answer
|
|
:prompt
|
|
:add-error-message
|
|
:add-info-message
|
|
:remove-messages
|
|
:set-history-most-recent
|
|
:manage-event
|
|
:set-keybinding-mode
|
|
:set-string-mode
|
|
:init))
|
|
|
|
(defpackage :sending-message
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:keybindings
|
|
:specials
|
|
:windows
|
|
:modeline-window
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:message-ready-to-send
|
|
:language
|
|
:subject
|
|
:attachments
|
|
:reply-to
|
|
:visibility
|
|
:mentions
|
|
:body
|
|
:confirm-sending-window
|
|
:message-data
|
|
:init))
|
|
|
|
(defpackage :follow-requests
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:follow-requests-window
|
|
:init
|
|
:process-requests))
|
|
|
|
(defpackage :tags-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:tags-window
|
|
:resync-rows-db
|
|
:init))
|
|
|
|
(defpackage :conversations-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:conversations-window
|
|
:resync-rows-db
|
|
:init))
|
|
|
|
(defpackage :chats-list-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:chats-list-window
|
|
:chat->text
|
|
:open-chats-list-window))
|
|
|
|
(defpackage :gemini-viewer
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:specials
|
|
:windows
|
|
:line-oriented-window
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:*gemini-streams-db*
|
|
:push-db-stream
|
|
:remove-db-stream
|
|
:remove-all-db-stream
|
|
:find-db-stream-if
|
|
:find-db-stream-url
|
|
:ensure-just-one-stream-rendering
|
|
:abort-download-stream
|
|
:bury-download-stream
|
|
:db-entry-to-foreground
|
|
:gemini-metadata-p
|
|
:maybe-initialize-metadata
|
|
:make-gemini-metadata
|
|
:gemini-metadata-links
|
|
:gemini-metadata-source-file
|
|
:gemini-metadata-history
|
|
:gemini-metadata-p
|
|
:copy-gemini-metadata
|
|
:append-metadata-link
|
|
:append-metadata-source
|
|
:push-url-to-history
|
|
:pop-url-from-history
|
|
:current-gemini-url
|
|
:history-back
|
|
:view-source
|
|
:gemini-stream
|
|
:stream-status
|
|
:download-iri
|
|
:start-time
|
|
:download-stream
|
|
:download-socket
|
|
:support-file
|
|
:parsed-lines
|
|
:support-file
|
|
:octect-count
|
|
:port
|
|
:status-code
|
|
:status-code-description
|
|
:meta
|
|
:path
|
|
:query
|
|
:fragment
|
|
:host
|
|
:thread
|
|
:abort-downloading
|
|
:downloading-allowed-p
|
|
:request
|
|
:open-gemini-stream-window
|
|
:load-gemini-url))
|
|
|
|
(defpackage :gempub
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:esrap
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:specials
|
|
:windows
|
|
:line-oriented-window)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export
|
|
:gempub-file-p
|
|
:extract-metadata
|
|
:sync-library
|
|
:parse-search-gempub
|
|
:open-gempub-library-window))
|
|
|
|
(defpackage :main-window
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:tui-utils)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:focused-window
|
|
:focused-keybindings
|
|
:init
|
|
:parse-subwin-w
|
|
:parse-subwin-h))
|
|
|
|
(defpackage :ui-goodies
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:access
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc
|
|
:mtree
|
|
:specials
|
|
:windows
|
|
:tui-utils
|
|
:program-events)
|
|
(:nicknames :ui)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:fstree :filesystem-tree-window)
|
|
(:c :croatoan))
|
|
(:export
|
|
:tui-active-p
|
|
:delete-message-status-marked-to-delete
|
|
:open-manual
|
|
:quit-program
|
|
:clean-close-program
|
|
:confirm-and-clean-close-program
|
|
:notify
|
|
:notify-procedure
|
|
:with-blocking-notify-procedure
|
|
:info-dialog
|
|
:info-dialog-immediate
|
|
:error-dialog
|
|
:error-dialog-immediate
|
|
:input-dialog-immediate
|
|
:error-message
|
|
:info-message
|
|
:confirm-file-overwrite-dialog-immediate
|
|
:confirm-dialog-immediate
|
|
:request-error-window
|
|
:ask-string-input
|
|
:thread-go-up
|
|
:thread-go-down
|
|
:thread-goto-message
|
|
:thread-goto-first-message
|
|
:thread-goto-last-message
|
|
:thread-search-next-message-body
|
|
:thread-search-previous-message-body
|
|
:thread-search-next-message-meta
|
|
:thread-search-previous-message-meta
|
|
:repeat-search
|
|
:thread-search-next-unread-message
|
|
:thread-open-selected-message
|
|
:thread-mark-delete-selected-message
|
|
:thread-mark-prevent-delete-selected-message
|
|
:subscribe-to-hash
|
|
:unsubscribe-to-hash
|
|
:message-extract-links
|
|
:message-scroll-up
|
|
:message-scroll-down
|
|
:message-scroll-left
|
|
:message-scroll-right
|
|
:message-scroll-begin
|
|
:message-scroll-end
|
|
:message-scroll-next-page
|
|
:message-scroll-previous-page
|
|
:message-window-go-up
|
|
:message-window-go-down
|
|
:message-search-regex
|
|
:message-toggle-preformatted-block
|
|
:focus-to-message-window
|
|
:focus-to-thread-window
|
|
:focus-to-send-message-window
|
|
:focus-to-follow-requests-window
|
|
:focus-to-tags-window
|
|
:focus-to-conversations-window
|
|
:focus-to-gopher-window
|
|
:print-quick-help
|
|
:apropos-help
|
|
:apropos-help-global
|
|
:move-message-tree
|
|
:change-folder
|
|
:change-timeline
|
|
:update-current-timeline
|
|
:update-current-timeline-backwards
|
|
:refresh-thread
|
|
:refresh-thread-totally
|
|
:refresh-tags
|
|
:status-tree->text
|
|
:favourite-selected-status
|
|
:unfavourite-selected-status
|
|
:boost-selected-status
|
|
:unboost-selected-status
|
|
:ignore-user
|
|
:unignore-user
|
|
:message-exceeds-server-limit-p
|
|
:exceeding-characters-notify
|
|
:send-message
|
|
:compose-message
|
|
:reply-message
|
|
:open-message-attach
|
|
:open-all-message-attachments
|
|
:open-message-attach-go-up
|
|
:open-message-attach-go-down
|
|
:open-message-attach-perform-opening
|
|
:gemini-jump-to-link
|
|
:close-open-attach-window
|
|
:search-link-window
|
|
:open-gemini-message-link-window
|
|
:open-message-link
|
|
:gemini-images-montage
|
|
:open-message-link-go-up
|
|
:open-message-link-go-down
|
|
:open-message-link-perform-opening
|
|
:open-message-link-open-enqueue
|
|
:open-next-visible-link
|
|
:open-previous-link
|
|
:go-to-next-link
|
|
:go-to-previous-link
|
|
:copy-value-to-clipboard
|
|
:copy-link-to-clipboard
|
|
:close-open-message-link-window
|
|
:open-message-link-window-scroll-begin
|
|
:open-message-link-window-scroll-end
|
|
:attach-go-up
|
|
:attach-go-down
|
|
:attach-delete
|
|
:attach-add
|
|
:follow-request-go-up
|
|
:follow-request-go-down
|
|
:follow-request-delete
|
|
:start-follow-request-processing
|
|
:cancel-follow-requests
|
|
:process-follow-requests
|
|
:change-language
|
|
:change-subject
|
|
:change-visibility
|
|
:change-mentions
|
|
:edit-message-body
|
|
:close-focused-and-return-to-message
|
|
:cancel-send-message
|
|
:close-send-message-window
|
|
:follow-user
|
|
:unfollow-user
|
|
:tag-go-up
|
|
:tag-go-down
|
|
:open-tag-folder
|
|
:update-conversations
|
|
:open-conversation
|
|
:conversation-go-up
|
|
:conversation-go-down
|
|
:goto-conversation
|
|
:ignore-conversation
|
|
:delete-conversation
|
|
:rename-converation
|
|
:change-conversation-name
|
|
:report-status
|
|
:crypto-import-key
|
|
:crypto-export-key
|
|
:crypto-generate-key
|
|
:show-about-window
|
|
:show-welcome-window
|
|
:reset-timeline-pagination
|
|
:poll-vote
|
|
:refresh-chats
|
|
:refresh-chat-messages
|
|
:close-chats-list-window
|
|
:update-all-chats-data
|
|
:update-all-chats-messages
|
|
:open-chats-list-window
|
|
:show-chat-to-screen
|
|
:chat-loop
|
|
:open-chat-link-window
|
|
:change-chat-label
|
|
:chat-create-new
|
|
:chat-list-go-up
|
|
:chat-list-go-down
|
|
:open-url-prompt
|
|
:open-net-address
|
|
:open-gemini-address
|
|
:net-address-history-back
|
|
:delete-shown-post
|
|
:address-go-back-in-path
|
|
:address-go-root-path
|
|
:gemini-view-source
|
|
:gemini-abort-download
|
|
:gemini-open-streams-window
|
|
:gemini-open-certificates-window
|
|
:gemini-certificate-window-move
|
|
:gemini-certificate-window-go-down
|
|
:gemini-certificate-window-go-up
|
|
:gemini-close-certificate-window
|
|
:gemini-delete-certificate
|
|
:gemini-streams-window-up
|
|
:gemini-streams-window-down
|
|
:gemini-streams-window-close
|
|
:gemini-streams-window-open-stream
|
|
:gemini-refresh-page
|
|
:gemini-subscribe-gemlog
|
|
:gemini-certificate-information
|
|
:gemini-open-gemlog-window
|
|
:gemlogs-subscription-go-up
|
|
:gemlogs-subscription-go-down
|
|
:close-gemlog-window
|
|
:show-gemlog-to-screen
|
|
:gemlog-refresh-all
|
|
:gemlog-cancel-subscription
|
|
:send-to-pipe
|
|
:send-message-to-pipe
|
|
:shuffle-tour
|
|
:clean-tour
|
|
:clean-all-tour
|
|
:add-links-to-tour
|
|
:tour-mode-link
|
|
:next-tour-link
|
|
:show-tour-links
|
|
:save-selected-message-in-tour
|
|
:gemlog-add-unread-posts-tour
|
|
:open-gemini-toc
|
|
:gemini-toc-scroll-up
|
|
:gemini-toc-scroll-down
|
|
:gemini-toc-jump-to-entry
|
|
:gemini-toc-close
|
|
:gemini-toc-scroll-down-page
|
|
:gemini-toc-scroll-up-page
|
|
:pass-focus-on-left
|
|
:pass-focus-on-right
|
|
:pass-focus-on-bottom
|
|
:pass-focus-on-top
|
|
:pass-focus-next
|
|
:ask-input-on-tofu-error
|
|
:import-gemini-certificate
|
|
:bookmark-gemini-page
|
|
:bookmark-gopher-page
|
|
:display-bookmark
|
|
:delete-gemini-bookmark
|
|
:display-latest-visited-urls
|
|
:open-gempub-library
|
|
:gempub-library-window-move
|
|
:gempub-library-window-go-up
|
|
:gempub-library-window-go-down
|
|
:gempub-library-window-close
|
|
:gempub-open-file
|
|
:message-window-lock-scrolling
|
|
:message-window-unlock-scrolling
|
|
:eval-command
|
|
:load-script-file
|
|
:view-user-avatar
|
|
:open-file-explorer
|
|
:open-kami-address
|
|
:file-explorer-expand-path
|
|
:file-explorer-close-path
|
|
:file-explorer-rename-path
|
|
:file-explorer-download-path
|
|
:file-explorer-upload-path
|
|
:file-explorer-upload-path
|
|
:file-explorer-delete-path
|
|
:file-explorer-create-path
|
|
:file-explorer-go-down
|
|
:file-explorer-go-up
|
|
:file-explorer-search
|
|
:file-explorer-mark-entry
|
|
:file-explorer-mark-by-regexp
|
|
:file-explorer-delete-tree
|
|
:file-explorer-delete-marked
|
|
:file-explorer-scroll-begin
|
|
:file-explorer-scroll-end
|
|
:file-explorer-close-window
|
|
:file-explorer-open-node
|
|
:file-explorer-node-details
|
|
:file-explorer-edit-file
|
|
:file-explorer-upload-mirror
|
|
:file-explorer-download-mirror
|
|
:clear-cache
|
|
:print-mentions
|
|
:delete-notifications
|
|
:show-announcements
|
|
:show-parent-post))
|
|
|
|
(defpackage :scheduled-events
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:misc-utils
|
|
:text-utils
|
|
:specials)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export
|
|
:refresh-refresh-all-chats-data
|
|
:refresh-refresh-all-chats-messages
|
|
:run-scheduled-events))
|
|
|
|
(defpackage :modules
|
|
(:use
|
|
:cl
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:resources-utils
|
|
:specials
|
|
:db-utils
|
|
:windows
|
|
:sending-message
|
|
:keybindings
|
|
:program-events
|
|
:ui-goodies)
|
|
(:local-nicknames (:a :alexandria))
|
|
(:shadowing-import-from :resources-utils :init)
|
|
(:export
|
|
:load-sys-module
|
|
:load-module))
|
|
|
|
(defpackage :json-rpc2
|
|
(:use :cl
|
|
:alexandria
|
|
:yason)
|
|
(:export
|
|
:maybe-log-message
|
|
:generate-request-id
|
|
:*function-db*
|
|
:register-function
|
|
:unregister-function
|
|
:make-request
|
|
:make-request*
|
|
:make-notification
|
|
:make-notification*
|
|
:make-batch
|
|
:make-response-error
|
|
:make-response
|
|
:encode-to-string
|
|
:json-rpc-error
|
|
:make-rpc-error
|
|
:elaborate-request
|
|
:extract-results
|
|
:error-response-p
|
|
:extract-error
|
|
:transaction-id
|
|
:code
|
|
:text))
|
|
|
|
(defpackage :scripts
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils
|
|
:api-client)
|
|
(:shadowing-import-from :misc :random-elt :shuffle)
|
|
(:export))
|
|
|
|
(defpackage :json-rpc-communication
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:box
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:rpc :json-rpc2)
|
|
(:json :yason)
|
|
(:gw :gemini-viewer))
|
|
(:export
|
|
:+tofu-error-status-code+
|
|
:+certificate-password-not-found-error-status-code+
|
|
:gemini-window
|
|
:metadata
|
|
:init-gemini-window
|
|
:start-server
|
|
:close-server
|
|
:make-request
|
|
:start-client
|
|
:rpc-error-response
|
|
:message
|
|
:data
|
|
:code
|
|
:id))
|
|
|
|
(defpackage :client-configuration
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:nicknames :gui-conf)
|
|
(:local-nicknames (:re :cl-ppcre)
|
|
(:a :alexandria))
|
|
(:export
|
|
:+client-conf-filename+
|
|
:+client-sys-conf-filename+
|
|
:load-config-file
|
|
:config-icons-scaling
|
|
:gemini-default-favicon
|
|
:gemini-fetch-favicon-p
|
|
:gemini-text-font-configuration
|
|
:font-text-underlined
|
|
:font-text-bold
|
|
:font-text-italic
|
|
:gemini-link-font-configuration
|
|
:gemini-quote-font-configuration
|
|
:gemini-h1-font-configuration
|
|
:gemini-h2-font-configuration
|
|
:gemini-h3-font-configuration
|
|
:gemini-preformatted-text-font-configuration
|
|
:gemini-link-prefix-to-gemini
|
|
:gemini-link-prefix-to-other
|
|
:gemini-link-prefix-to-http
|
|
:gemini-quote-prefix
|
|
:gemini-h1-prefix
|
|
:gemini-h2-prefix
|
|
:gemini-h3-prefix
|
|
:gemini-bullet-prefix
|
|
:gemini-preformatted-fg
|
|
:gemini-link-colors
|
|
:gemini-quote-colors
|
|
:gemini-h1-colors
|
|
:gemini-h2-colors
|
|
:gemini-h3-colors
|
|
:gemini-window-colors
|
|
:gemini-preformatted-text-colors
|
|
:gemini-quote-justification
|
|
:gemini-h1-justification
|
|
:gemini-h2-justification
|
|
:gemini-h3-justification
|
|
:gemini-preformatted-text-justification
|
|
:config-toc-maximum-width
|
|
:config-toc-minimum-width
|
|
:config-toc-autoresize-p
|
|
:toc-font-configuration
|
|
:config-toc-show-p
|
|
:get-keybinding
|
|
:config-keybinding-tour-shuffle
|
|
:config-keybinding-tour-manage
|
|
:config-keybinding-tour-next
|
|
:config-keybinding-gemtext-scaling-increase
|
|
:config-keybinding-gemtext-scaling-decrease
|
|
:config-keybinding-gemtext-scaling-reset
|
|
:config-keybinding-gemtext-refresh
|
|
:config-gemtext-padding
|
|
:config-keybinding-bookmark-toggle
|
|
:config-keybinding-bookmark-show
|
|
:main-window-select-colors
|
|
:emphasize-wrapped-asterisk-p
|
|
:config-inline-scaling-ratio
|
|
:config-stream-frame-show-p))
|
|
|
|
(defpackage :client-os-utils
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants)
|
|
(:export
|
|
:open-resource-with-external-program))
|
|
|
|
(defpackage :client-events
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:gui :nodgui)
|
|
(:ev :program-events))
|
|
(:export
|
|
:events-loop-running-p
|
|
:stop-events-loop
|
|
:start-events-loop
|
|
:with-enqueue-request
|
|
:enqueue-request-and-wait-results))
|
|
|
|
(defpackage :icons
|
|
(:use :cl
|
|
:config
|
|
:constants
|
|
:misc
|
|
:text-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:gui :nodgui)
|
|
(:gui.pixmap :nodgui.pixmap)
|
|
(:gui-utils :nodgui.utils))
|
|
(:export
|
|
:+icon-dir+
|
|
:load-icons
|
|
:*search*
|
|
:*back*
|
|
:*open-iri*
|
|
:*open-tour*
|
|
:*refresh*
|
|
:*up*
|
|
:*document-delete*
|
|
:*document-add*
|
|
:*document-accept*
|
|
:*document-edit*
|
|
:*folder*
|
|
:*star-yellow*
|
|
:*star-blue*
|
|
:*arrow-up*
|
|
:*arrow-down*
|
|
:*cross*
|
|
:*bus-go*
|
|
:*dice*
|
|
:*gemlog-subscribe*
|
|
:*gemlog-unsubscribe*
|
|
:*inline-images*
|
|
:*text*
|
|
:*profile*
|
|
:*profile-disabled*))
|
|
|
|
(defpackage :validation
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:gui :nodgui)
|
|
(:gui-utils :nodgui.utils))
|
|
(:export
|
|
:validator
|
|
:regexp-validator
|
|
:validate))
|
|
|
|
(defpackage :gui-goodies
|
|
(:use :cl
|
|
:config
|
|
:constants
|
|
:misc
|
|
:text-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-utils :nodgui.utils)
|
|
(:gui-shapes :nodgui.shapes))
|
|
(:export
|
|
:*toplevel*
|
|
:*gui-server*
|
|
:*main-frame*
|
|
:parse-color
|
|
:make-font
|
|
:gui-resize-grid-all
|
|
:confirm-deletion
|
|
:info-operation-completed
|
|
:info-dialog
|
|
:error-dialog
|
|
:re-validate
|
|
:with-re-validate
|
|
:with-entry-text-validate
|
|
:attach-tooltip
|
|
:attach-tooltips
|
|
:with-busy*
|
|
:password-dialog
|
|
:change-password-dialog
|
|
:table-frame
|
|
:tree
|
|
:rows
|
|
:quite-good-dialog-width
|
|
:notify-request-error
|
|
:with-notify-errors))
|
|
|
|
(defpackage :client-menu-command
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:gui-goodies
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes))
|
|
(:export
|
|
:help-about
|
|
:quit
|
|
:show-certificates
|
|
:show-streams
|
|
:show-bookmarks-clsr
|
|
:manage-bookmarks-clsr
|
|
:show-search-frame-clsr
|
|
:show-tour
|
|
:manage-gemlogs))
|
|
|
|
(defpackage :client-certificates-window
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes)
|
|
(:menu :client-menu-command))
|
|
(:export
|
|
:certificate-frame
|
|
:tree
|
|
:rows
|
|
:init-window))
|
|
|
|
(defpackage :client-titan-window
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes)
|
|
(:menu :client-menu-command))
|
|
(:export
|
|
:init-window))
|
|
|
|
(defpackage :client-tour-window
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes)
|
|
(:menu :client-menu-command))
|
|
(:export
|
|
:enqueue-shuffle-tour
|
|
:init-window))
|
|
|
|
(defpackage :client-stream-frame
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:cert-win :client-certificates-window)
|
|
(:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes)
|
|
(:menu :client-menu-command))
|
|
(:export
|
|
:init-frame))
|
|
|
|
(defpackage :client-bookmark-window
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:cert-win :client-certificates-window)
|
|
(:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes)
|
|
(:menu :client-menu-command))
|
|
(:export
|
|
:init-window
|
|
:manage-bookmarks))
|
|
|
|
(defpackage :client-gemlog-window
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:cert-win :client-certificates-window)
|
|
(:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes)
|
|
(:menu :client-menu-command))
|
|
(:export
|
|
:init-window))
|
|
|
|
(defpackage :client-search-frame
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes))
|
|
(:export
|
|
:init-frame))
|
|
|
|
(defpackage :client-scheduler
|
|
(:use :cl
|
|
:config
|
|
:constants
|
|
:misc
|
|
:text-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:gui :nodgui)
|
|
(:gui-utils :nodgui.utils))
|
|
(:export
|
|
:start))
|
|
|
|
(defpackage :client-main-window
|
|
(:use
|
|
:cl
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:misc-utils)
|
|
(:local-nicknames (:comm :json-rpc-communication)
|
|
(:re :cl-ppcre)
|
|
(:a :alexandria)
|
|
(:ev :program-events)
|
|
(:cev :client-events)
|
|
(:gui :nodgui)
|
|
(:gui-mw :nodgui.mw)
|
|
(:gui-shapes :nodgui.shapes)
|
|
(:menu :client-menu-command))
|
|
(:export
|
|
:status
|
|
:+stream-status-streaming+
|
|
:stop-stream-thread
|
|
:stop-streaming-stream-thread
|
|
:remove-db-stream
|
|
:find-db-stream-url
|
|
:open-local-path
|
|
:init-main-window
|
|
:set-address-bar-text
|
|
:set-bookmark-button-true
|
|
:set-bookmark-button-false
|
|
:clear-gemtext
|
|
:print-info-message
|
|
:make-internal-iri
|
|
:internal-iri-bookmark
|
|
:show-bookmarks-page))
|
|
|
|
(defpackage :main
|
|
(:use
|
|
:cl
|
|
:alexandria
|
|
:cl-ppcre
|
|
:config
|
|
:constants
|
|
:text-utils
|
|
:command-line)
|
|
(:shadowing-import-from :text-utils :split-lines)
|
|
(:local-nicknames (:c :croatoan))
|
|
(:export))
|