mirror of https://codeberg.org/cage/tinmop/
- added searching in command's help.
This commit is contained in:
parent
53c0fb4fc5
commit
0274841672
|
@ -131,6 +131,10 @@
|
|||
|
||||
(define-key "?" #'print-quick-help)
|
||||
|
||||
(define-key "C-h h" #'print-quick-help)
|
||||
|
||||
(define-key "C-h a" #'apropos-help)
|
||||
|
||||
(define-key "!" #'gemini-search)
|
||||
|
||||
(define-key ">" #'open-gemini-address)
|
||||
|
|
|
@ -477,7 +477,7 @@ and `make-blocking-list-dialog-window') showing the full docstring for a command
|
|||
bg
|
||||
fg)))
|
||||
|
||||
(defun print-help (main-window)
|
||||
(defun print-help (main-window &key (regex ".*"))
|
||||
"Generate an help text for the focused window and main window"
|
||||
(multiple-value-bind (header-bg header-fg attribute-header)
|
||||
(swconf:quick-help-header-colors)
|
||||
|
@ -502,7 +502,13 @@ and `make-blocking-list-dialog-window') showing the full docstring for a command
|
|||
(alpha-b-p
|
||||
nil)
|
||||
(t
|
||||
(string< text-a text-b))))))))
|
||||
(string< text-a text-b)))))))
|
||||
(make-filter-help-text (scanner)
|
||||
(lambda (a)
|
||||
(scan scanner
|
||||
(if (stringp a)
|
||||
a
|
||||
(tui:tui-string->chars-string a))))))
|
||||
(when-let* ((focused-keybindings (main-window:focused-keybindings main-window))
|
||||
(global-help (sort-help (key-paths *global-keymap*)))
|
||||
(header-focused (colorize-header (_ "Focused window keys")))
|
||||
|
@ -516,10 +522,15 @@ and `make-blocking-list-dialog-window') showing the full docstring for a command
|
|||
focused-help
|
||||
(list global-header-fields)
|
||||
global-help))
|
||||
(let ((all-lines (mapcar #'help-fields-get-text
|
||||
fields)))
|
||||
(line-oriented-window:make-blocking-list-dialog-window specials:*main-window*
|
||||
fields
|
||||
all-lines
|
||||
#'help-expand
|
||||
(_ "Quick help")))))))
|
||||
(handler-case
|
||||
(let* ((scanner (create-scanner regex :case-insensitive-mode t))
|
||||
(all-lines (remove-if-not (make-filter-help-text scanner)
|
||||
(mapcar #'help-fields-get-text
|
||||
fields))))
|
||||
(line-oriented-window:make-blocking-list-dialog-window specials:*main-window*
|
||||
fields
|
||||
all-lines
|
||||
#'help-expand
|
||||
(_ "Quick help")))
|
||||
(error ()
|
||||
(ui:error-message (_ "Invalid regular expression"))))))))
|
||||
|
|
|
@ -328,7 +328,8 @@ this exact quantity wold go beyond the length or rows or zero."
|
|||
"Draw a window with a scrollable list of entries, pressing enter
|
||||
will fire the `callback' function (with the selected field from `all-fields'
|
||||
and text from `text-line'. This window is fitten into `screen' sizes."
|
||||
(assert (length= all-fields text-lines))
|
||||
(assert (>= (length all-fields)
|
||||
(length text-lines)))
|
||||
(let* ((low-level-window (make-blocking-croatoan-window :enable-function-keys t))
|
||||
(window-width (max (+ 4
|
||||
(length title))
|
||||
|
|
|
@ -1260,6 +1260,7 @@
|
|||
:chat-change-label-event
|
||||
:chat-create-event
|
||||
:search-link-event
|
||||
:help-apropos-event
|
||||
:function-event
|
||||
:dispatch-program-events
|
||||
:add-pagination-status-event
|
||||
|
@ -2135,6 +2136,7 @@
|
|||
:focus-to-tags-window
|
||||
:focus-to-conversations-window
|
||||
:print-quick-help
|
||||
:apropos-help
|
||||
:move-message-tree
|
||||
:change-folder
|
||||
:change-timeline
|
||||
|
|
|
@ -1166,6 +1166,16 @@
|
|||
(regex regex)) object
|
||||
(line-oriented-window:search-row window regex)))
|
||||
|
||||
(defclass help-apropos-event (program-event)
|
||||
((regex
|
||||
:initform nil
|
||||
:initarg :regex
|
||||
:accessor regex)))
|
||||
|
||||
(defmethod process-event ((object help-apropos-event))
|
||||
(with-accessors ((regex regex)) object
|
||||
(keybindings:print-help specials:*main-window* :regex regex)))
|
||||
|
||||
;;;; general usage
|
||||
|
||||
(defclass function-event (program-event) ())
|
||||
|
|
|
@ -523,6 +523,16 @@ Metadata includes:
|
|||
"Print a quick help"
|
||||
(keybindings:print-help *main-window*))
|
||||
|
||||
(defun apropos-help ()
|
||||
"Print a command's documentation matching a regular expression."
|
||||
(flet ((on-input-complete (regex)
|
||||
(let ((event (make-instance 'help-apropos-event
|
||||
:regex regex)))
|
||||
(push-event event))))
|
||||
(ask-string-input #'on-input-complete
|
||||
:prompt (_ "Search for commands (regexp): ")
|
||||
:complete-fn #'complete:complete-always-empty)))
|
||||
|
||||
(defun move-message-tree ()
|
||||
"Move messages tree"
|
||||
(flet ((on-input-complete (new-folder)
|
||||
|
|
Loading…
Reference in New Issue