branch: elpa/logview commit ab7eabfe9a24d60175121bcf26493d8f4ca14796 Author: Paul Pogonyshev <pogonys...@gmail.com> Commit: Paul Pogonyshev <pogonys...@gmail.com>
Fix and simplify 'logview-choose-submode' by reusing existing 'logview--get-split-alists' helper; fixes #23. --- logview.el | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/logview.el b/logview.el index 30540de19e..7fbc83dd40 100644 --- a/logview.el +++ b/logview.el @@ -1574,14 +1574,8 @@ minibuffer." (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 (catch 'found - (logview--iterate-split-alists (lambda (name definition) - (when (string= submode name) - (throw 'found definition))) - logview-additional-submodes logview-std-submodes))) + (let ((submode-definition (logview--get-split-alists submode "submode" logview-additional-submodes logview-std-submodes)) timestamp-definition) - (unless submode-definition - (error "Unknown submode `%s'" submode)) (when (string-match logview--timestamp-entry-part-regexp (cdr (assq 'format submode-definition))) (unless timestamp (unless (called-interactively-p 'interactive) @@ -1595,13 +1589,9 @@ minibuffer." (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 (catch 'found - (logview--iterate-split-alists (lambda (name definition) - (when (string= timestamp name) - (throw 'found definition))) - logview-additional-timestamp-formats logview-std-timestamp-formats) - ;; Unlike with submodes, allow unrecognized timestamps. - `(,timestamp (java-pattern . ,timestamp))))) + (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. @@ -2449,12 +2439,15 @@ next line, which is usually one line beyond END." (puthash alias t seen))))))) (defun logview--get-split-alists (key type &rest alists) + ;; If nothing is found: if TYPE is nil, just return nil, else signal + ;; a user error with TYPE as missing thing description. (catch 'found (apply 'logview--iterate-split-alists (lambda (name value) (when (or (equal name key) (member key (cdr (assq 'aliases value)))) (throw 'found value))) alists) - (user-error "Unknown %s '%s'" type key))) + (when type + (user-error "Unknown %s '%s'" type key)))) (defun logview--views () "Return the list of all defined views.