Function: logview-choose-submode

logview-choose-submode is an interactive and natively compiled function defined in logview.el.

Signature

(logview-choose-submode SUBMODE &optional TIMESTAMP)

Documentation

Manually choose submode for the current buffer.

SUBMODE must be a name or an alias a supported submode from logview-additional-submodes or logview-std-submodes (aliases are understood too). Timestamp may be either such a name or alias from logview-additional-timestamp-formats or logview-std-timestamp-formats, or just a raw Java pattern. If submode doesn't use timestamps, this parameter is ignored.

When called interactively, both parameters are read in the minibuffer.

Key Bindings

logview-mode-inactive-map C-c C-c logview-mode-map C-c C-c logview-mode-map o s

Source Code

;; Defined in /nix/store/3zkn9hgpv447zb8nrg55d9x2ynmmrk40-emacs-packages-deps/share/emacs/site-lisp/elpa/logview-20260218.2013/logview.el
(defun logview-choose-submode (submode &optional timestamp)
  "Manually choose submode for the current buffer.
SUBMODE must be a name or an alias a supported submode from
`logview-additional-submodes' or `logview-std-submodes' (aliases
are understood too).  Timestamp may be either such a name or
alias from `logview-additional-timestamp-formats' or
`logview-std-timestamp-formats', or just a raw Java pattern.  If
submode doesn't use timestamps, this parameter is ignored.

When called interactively, both parameters are read in the
minibuffer."
  (interactive (list (let (submodes)
                       (logview--iterate-split-alists (lambda (name definition)
                                                        (push name submodes)
                                                        (setq submodes (append (cdr (assq 'aliases definition)) submodes)))
                                                      logview-additional-submodes logview-std-submodes)
                       (logview--completing-read "Submode name: " submodes nil t nil 'logview--submode-name-history))))
  (let ((submode-definition (logview--get-split-alists submode "submode" logview-additional-submodes logview-std-submodes))
        timestamp-definition)
    (when (string-match-p logview--timestamp-entry-part-regexp (cdr (assq 'format submode-definition)))
      (unless timestamp
        (unless (called-interactively-p 'interactive)
          (error "Must specify a timestamp format for submode `%s'" submode))
        (setq timestamp (let (timestamps)
                          (logview--iterate-split-alists (lambda (name definition)
                                                           (push name timestamps)
                                                           (setq timestamps (append (cdr (assq 'aliases definition)) timestamps)))
                                                         logview-additional-timestamp-formats logview-std-timestamp-formats)
                          (dolist (format (logview--all-timestamp-formats))
                            (unless (datetime-pattern-locale-dependent-p 'java (car format))
                              (push (car format) timestamps)))
                          (logview--completing-read "Timestamp format: " timestamps nil nil nil 'logview--timestamp-format-history))))
      (setq timestamp-definition (or (logview--get-split-alists timestamp nil logview-additional-timestamp-formats logview-std-timestamp-formats)
                                     ;; Unlike with submodes, allow unrecognized timestamps.
                                     `(,timestamp (java-pattern . ,timestamp)))))
    (catch 'success
      (logview--initialize-submode submode submode-definition (list timestamp-definition))
      ;; This must not happen.
      (error "Internal error initializing submode `%s'" submode))))