Round 51: pdf-view (mode/goto/next/prev/fit/search/midnight), nov-mode, djvu-mode, notmuch-search/show/tree, wanderlust, mew, vm-visit-folder, bbdb/search, ebdb
ober
9d8859cd6fda4f83ce8bca2441e2376c4e7018ca
--- a/docs/jemacs-vs-emacs.md +++ b/docs/jemacs-vs-emacs.md @@ -2207,6 +2207,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features | General define key | :orange_circle: | Define key with general.el | | Use package report | :orange_circle: | Report loaded packages | +### Round 51 + +| Feature | Status | Notes | +|---------|--------|-------| +| PDF view mode | :orange_circle: | PDF document viewer | +| PDF view goto page | :orange_circle: | Jump to specific page | +| PDF view next page | :orange_circle: | Next PDF page | +| PDF view previous page | :orange_circle: | Previous PDF page | +| PDF view fit page | :orange_circle: | Fit page to window | +| PDF view search | :orange_circle: | Search within PDF | +| PDF view midnight mode | :orange_circle: | Dark mode for PDF viewing | +| Nov mode | :orange_circle: | EPUB reader | +| Nov next document | :orange_circle: | Next EPUB chapter | +| Nov previous document | :orange_circle: | Previous EPUB chapter | +| DjVu mode | :orange_circle: | DjVu document viewer | +| Notmuch search | :orange_circle: | Search notmuch mail | +| Notmuch show | :orange_circle: | Show notmuch message | +| Notmuch tree | :orange_circle: | Threaded mail view | +| Wanderlust | :orange_circle: | Mail/news reader | +| Mew | :orange_circle: | Mail environment | +| VM visit folder | :orange_circle: | Visit VM mail folder | +| BBDB | :orange_circle: | Contact database | +| BBDB search | :orange_circle: | Search contacts | +| EBDB | :orange_circle: | Enhanced contact database | + --- ## Recommended Development Roadmap --- a/src/jerboa-emacs/editor-extra-final.ss +++ b/src/jerboa-emacs/editor-extra-final.ss @@ -10783,3 +10783,87 @@ "(No packages loaded via use-package)")) (switch-to-buffer frame new-buf) (echo-message! echo "Use-package report"))) + +;;; Round 51 batch 2: djvu-mode, notmuch-search, notmuch-show, notmuch-tree, +;;; wanderlust, mew, vm-visit-folder, bbdb, bbdb-search, ebdb + +(def (cmd-djvu-mode app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DjVu mode: document viewer (not available)"))) + +(def (cmd-notmuch-search app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Notmuch search: " + (lambda (query) + (when (and query (not (string-empty? query))) + (let* ((frame (app-state-frame app)) + (new-buf (make-buffer "*notmuch-search*"))) + (buffer-content-set! new-buf + (str "Notmuch Search: " query "\n\n" + "(No mail database available)")) + (switch-to-buffer frame new-buf) + (echo-message! echo (str "Notmuch: " query)))))))) + +(def (cmd-notmuch-show app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Notmuch show: no message to display"))) + +(def (cmd-notmuch-tree app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Notmuch tree: threaded mail view"))) + +(def (cmd-wanderlust app) + (let* ((frame (app-state-frame app)) + (echo (app-state-echo app)) + (new-buf (make-buffer "*wanderlust*"))) + (buffer-content-set! new-buf + (str "Wanderlust -- mail/news reader\n\n" + "No folders configured.\n" + "Add folders to ~/.wl to get started.")) + (switch-to-buffer frame new-buf) + (echo-message! echo "Wanderlust (no folders)"))) + +(def (cmd-mew app) + (let* ((frame (app-state-frame app)) + (echo (app-state-echo app)) + (new-buf (make-buffer "*mew*"))) + (buffer-content-set! new-buf + (str "Mew -- mail environment\n\n" + "No mail configuration found.")) + (switch-to-buffer frame new-buf) + (echo-message! echo "Mew (not configured)"))) + +(def (cmd-vm-visit-folder app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "VM folder: " + (lambda (folder) + (when (and folder (not (string-empty? folder))) + (echo-message! echo (str "VM: " folder " (not available)"))))))) + +(def (cmd-bbdb app) + (let* ((frame (app-state-frame app)) + (echo (app-state-echo app)) + (new-buf (make-buffer "*BBDB*"))) + (buffer-content-set! new-buf + (str "BBDB -- Big Brother Database\n\n" + "Contact database is empty.\n" + "Use bbdb-create to add contacts.")) + (switch-to-buffer frame new-buf) + (echo-message! echo "BBDB: empty database"))) + +(def (cmd-bbdb-search app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "BBDB search: " + (lambda (query) + (when (and query (not (string-empty? query))) + (echo-message! echo (str "BBDB: no matches for '" query "'"))))))) + +(def (cmd-ebdb app) + (let* ((frame (app-state-frame app)) + (echo (app-state-echo app)) + (new-buf (make-buffer "*EBDB*"))) + (buffer-content-set! new-buf + (str "EBDB -- Insidious Big Brother Database\n\n" + "Contact database is empty.")) + (switch-to-buffer frame new-buf) + (echo-message! echo "EBDB: empty database"))) --- a/src/jerboa-emacs/editor-extra-modes.ss +++ b/src/jerboa-emacs/editor-extra-modes.ss @@ -11321,3 +11321,56 @@ (let* ((echo (app-state-echo app))) (echo-message! echo "Evil: quit (use C-x C-c to exit editor)"))) +;;; Round 51 batch 1: pdf-view-mode, pdf-view-goto-page, pdf-view-next-page, +;;; pdf-view-previous-page, pdf-view-fit-page, pdf-view-search, +;;; pdf-view-midnight-mode, nov-mode, nov-next-document, nov-previous-document + +(def (cmd-pdf-view-mode app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "PDF view mode (pdf-tools required)"))) + +(def (cmd-pdf-view-goto-page app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Go to page: " + (lambda (page) + (when (and page (not (string-empty? page))) + (echo-message! echo (str "PDF: page " page))))))) + +(def (cmd-pdf-view-next-page app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "PDF: next page"))) + +(def (cmd-pdf-view-previous-page app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "PDF: previous page"))) + +(def (cmd-pdf-view-fit-page app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "PDF: fit page to window"))) + +(def (cmd-pdf-view-search app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "PDF search: " + (lambda (query) + (when (and query (not (string-empty? query))) + (echo-message! echo (str "PDF search: " query))))))) + +(def (cmd-pdf-view-midnight-mode app) + (let* ((echo (app-state-echo app))) + (toggle-mode! app "pdf-midnight") + (if (mode-enabled? app "pdf-midnight") + (echo-message! echo "PDF midnight mode enabled (dark background)") + (echo-message! echo "PDF midnight mode disabled")))) + +(def (cmd-nov-mode app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Nov mode: EPUB reader"))) + +(def (cmd-nov-next-document app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Nov: next chapter"))) + +(def (cmd-nov-previous-document app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Nov: previous chapter"))) + --- a/src/jerboa-emacs/editor-extra-regs2.ss +++ b/src/jerboa-emacs/editor-extra-regs2.ss @@ -2514,4 +2514,25 @@ (register-command! 'which-key-show-major-mode cmd-which-key-show-major-mode) (register-command! 'general-define-key cmd-general-define-key) (register-command! 'use-package-report cmd-use-package-report) + ;; Round 51 + (register-command! 'pdf-view-mode cmd-pdf-view-mode) + (register-command! 'pdf-view-goto-page cmd-pdf-view-goto-page) + (register-command! 'pdf-view-next-page cmd-pdf-view-next-page) + (register-command! 'pdf-view-previous-page cmd-pdf-view-previous-page) + (register-command! 'pdf-view-fit-page cmd-pdf-view-fit-page) + (register-command! 'pdf-view-search cmd-pdf-view-search) + (register-command! 'pdf-view-midnight-mode cmd-pdf-view-midnight-mode) + (register-command! 'nov-mode cmd-nov-mode) + (register-command! 'nov-next-document cmd-nov-next-document) + (register-command! 'nov-previous-document cmd-nov-previous-document) + (register-command! 'djvu-mode cmd-djvu-mode) + (register-command! 'notmuch-search cmd-notmuch-search) + (register-command! 'notmuch-show cmd-notmuch-show) + (register-command! 'notmuch-tree cmd-notmuch-tree) + (register-command! 'wanderlust cmd-wanderlust) + (register-command! 'mew cmd-mew) + (register-command! 'vm-visit-folder cmd-vm-visit-folder) + (register-command! 'bbdb cmd-bbdb) + (register-command! 'bbdb-search cmd-bbdb-search) + (register-command! 'ebdb cmd-ebdb) )