From a09156f801854c98c6312f1edce3c5b686068bab Mon Sep 17 00:00:00 2001 From: SqrtMinusOne Date: Mon, 22 May 2023 23:33:50 +0300 Subject: [PATCH] feat(emacs): more ement config, remove wallabag & jabber --- .emacs.d/init.el | 55 ++++++++++++-------------------- Emacs.org | 83 +++++++++++++++--------------------------------- 2 files changed, 45 insertions(+), 93 deletions(-) diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 0f2f8ba..1ed2042 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -5539,29 +5539,6 @@ ENTRY is an instance of `elfeed-entry'." "https://www.youtube.com/watch?v=" (ytel-video-id (ytel-get-current-video))))) -(use-package wallabag - :straight (:host github :repo "chenyanming/wallabag.el" :files (:defaults "default.css" "emojis.alist")) - :disabled - :commands (wallabag wallabag-add-entry) - :config - (setq wallabag-host "https://wallabag.sqrtminusone.xyz") - (setq wallabag-username "sqrtminusone") - (setq wallabag-password (my/password-store-get "Selfhosted/wallabag")) - (setq wallabag-clientid (password-store-get-field "Selfhosted/wallabag" "client_id")) - (setq wallabag-secret (password-store-get-field "Selfhosted/wallabag" "client_secret"))) - -(defun my/elfeed-wallabag (entry) - (interactive (list elfeed-show-entry)) - (wallabag-add-entry (elfeed-entry-link entry) - (mapconcat #'symbol-name (elfeed-entry-tags entry) ",")) - (elfeed-recommender--rate-current 2)) - -(with-eval-after-load 'elfeed - (general-define-key - :states '(normal) - :keymaps '(elfeed-show-mode-map) - "gw" #'my/elfeed-wallabag)) - (defun my/toggle-shr-use-fonts () "Toggle the shr-use-fonts variable in buffer" (interactive) @@ -5980,22 +5957,28 @@ base toot." :user-id "@sqrtminusone:matrix.org" :password (my/password-store-get "My_Online/Accounts/matrix"))) -(defun my/ement-room-setup () - (display-line-numbers-mode 1)) - (use-package ement :straight (:host github :repo "alphapapa/ement.el") + :commands (ement-connect) :init (my-leader-def "ai" #'my/ement) :config (setq ement-room-list-auto-update t) (setq ement-room-mark-rooms-read 'send) + (my/persp-add-rule + ement-room-mode 3 "ement" + ement-describe-room-mode 3 "ement" + ement-room-occur-mode 3 "ement" + ement-room-list-mode 3 "ement") + ;; Room UI (setq ement-room-message-format-spec "%S> %W%B%r%R[%t]") (setq ement-room-left-margin-width 0) (setq ement-room-right-margin-width 10) (setq ement-room-sender-in-left-margin nil) (setq ement-room-sender-headers nil) (setq ement-room-sender-in-headers nil) + (setq ement-room-wrap-prefix "-> ") + ;; Changing some default faces (set-face-attribute 'ement-room-reactions nil :height 'unspecified) (set-face-attribute 'ement-room-reactions-key nil :height 'unspecified) (set-face-attribute 'ement-room-timestamp nil :inherit 'font-lock-function-name-face) @@ -6004,18 +5987,14 @@ base toot." (set-face-attribute 'ement-room-wrap-prefix nil :inherit 'unspecified) (set-face-attribute 'ement-room-timestamp-header nil :height 'unspecified) (set-face-attribute 'ement-room-wrap-prefix nil :inherit 'unspecified) - (setq ement-room-wrap-prefix "-> ") + ;; Notify only on mentions (setq ement-notify-notification-predicates '(ement-notify--event-mentions-session-user-p ement-notify--event-mentions-room-p ement-notify--room-unread-p)) - (advice-add #'ement-room-list-revert :around #'my/perspective-assign-ignore-advice) - (add-hook 'ement-room-mode-hook #'my/ement-room-setup) - (my/persp-add-rule - ement-room-mode 3 "ement" - ement-describe-room-mode 3 "ement" - ement-room-occur-mode 3 "ement" - ement-room-list-mode 3 "ement")) + ;; Fix the anti-synergy with major mode re-activation in `ement-room-list-revert' + (advice-add #'ement-room-list-revert + :around #'my/perspective-assign-ignore-advice)) (with-eval-after-load 'ement-room-list (general-define-key @@ -6028,7 +6007,13 @@ base toot." "gr" #'revert-buffer "RET" #'ement-room-list-RET)) -(with-eval-after-load 'ement-room-mode +(with-eval-after-load 'ement-tabulated-room-list + (general-define-key + :states '(normal visual) + :keymaps '(ement-tabulated-room-list-mode-map) + "q" #'quit-window)) + +(with-eval-after-load 'ement (general-define-key :states '(normal visual) :keymaps '(ement-room-mode-map) diff --git a/Emacs.org b/Emacs.org index b3e4e28..0891771 100644 --- a/Emacs.org +++ b/Emacs.org @@ -55,6 +55,8 @@ I decided not to keep configs for features that I do not use anymore because thi | pomidor | 8594d6f53e42c70bbf903e168607841854818a38 | | elfeed-score | 8e591e0d2afd909ae5be00caf17f9b17c6cd8b61 | | org-trello | 3f5967a5f63928ea9c8567d8d9f31e84cdbbc21f | +| jabber | 9b0e73a4703ff35a2d30fd704200052888191217 | +| wallabag | 9b0e73a4703ff35a2d30fd704200052888191217 | * Initial setup Setting up the environment, performance tuning and a few basic settings. @@ -7843,37 +7845,6 @@ Also, a function to copy a URL to the video under cursor. (ytel-video-id (ytel-get-current-video))))) #+end_src -*** OFF wallabag -[[https://github.com/wallabag/wallabag][Wallabag]] is a self-hosted read-it-later project. I'm not yet sold on integrating it in my workflow, but let's keep it here for now. - -Edit <2023-01-24 Tue>: well, that didn't work out. Running Tiny Tiny RSS & syncing it with elfeed seems to cover most of my read-it-later use cases. - -#+begin_src emacs-lisp -(use-package wallabag - :straight (:host github :repo "chenyanming/wallabag.el" :files (:defaults "default.css" "emojis.alist")) - :disabled - :commands (wallabag wallabag-add-entry) - :config - (setq wallabag-host "https://wallabag.sqrtminusone.xyz") - (setq wallabag-username "sqrtminusone") - (setq wallabag-password (my/password-store-get "Selfhosted/wallabag")) - (setq wallabag-clientid (password-store-get-field "Selfhosted/wallabag" "client_id")) - (setq wallabag-secret (password-store-get-field "Selfhosted/wallabag" "client_secret"))) -#+end_src - -#+begin_src emacs-lisp -(defun my/elfeed-wallabag (entry) - (interactive (list elfeed-show-entry)) - (wallabag-add-entry (elfeed-entry-link entry) - (mapconcat #'symbol-name (elfeed-entry-tags entry) ",")) - (elfeed-recommender--rate-current 2)) - -(with-eval-after-load 'elfeed - (general-define-key - :states '(normal) - :keymaps '(elfeed-show-mode-map) - "gw" #'my/elfeed-wallabag)) -#+end_src *** EWW Emacs built-in web browser. +I wonder if anyone actually uses it.+ @@ -8360,6 +8331,8 @@ And the prefix itself: #+end_src *** ement.el +[[https://github.com/alphapapa/ement.el][ement.el]] is a Matrix client for Emacs. This package turned out to be somewhat complicated to setup. + #+begin_src emacs-lisp (use-package plz :straight (:host github :repo "alphapapa/plz.el") @@ -8371,22 +8344,28 @@ And the prefix itself: :user-id "@sqrtminusone:matrix.org" :password (my/password-store-get "My_Online/Accounts/matrix"))) -(defun my/ement-room-setup () - (display-line-numbers-mode 1)) - (use-package ement :straight (:host github :repo "alphapapa/ement.el") + :commands (ement-connect) :init (my-leader-def "ai" #'my/ement) :config (setq ement-room-list-auto-update t) (setq ement-room-mark-rooms-read 'send) + (my/persp-add-rule + ement-room-mode 3 "ement" + ement-describe-room-mode 3 "ement" + ement-room-occur-mode 3 "ement" + ement-room-list-mode 3 "ement") + ;; Room UI (setq ement-room-message-format-spec "%S> %W%B%r%R[%t]") (setq ement-room-left-margin-width 0) (setq ement-room-right-margin-width 10) (setq ement-room-sender-in-left-margin nil) (setq ement-room-sender-headers nil) (setq ement-room-sender-in-headers nil) + (setq ement-room-wrap-prefix "-> ") + ;; Changing some default faces (set-face-attribute 'ement-room-reactions nil :height 'unspecified) (set-face-attribute 'ement-room-reactions-key nil :height 'unspecified) (set-face-attribute 'ement-room-timestamp nil :inherit 'font-lock-function-name-face) @@ -8395,21 +8374,17 @@ And the prefix itself: (set-face-attribute 'ement-room-wrap-prefix nil :inherit 'unspecified) (set-face-attribute 'ement-room-timestamp-header nil :height 'unspecified) (set-face-attribute 'ement-room-wrap-prefix nil :inherit 'unspecified) - (setq ement-room-wrap-prefix "-> ") + ;; Notify only on mentions (setq ement-notify-notification-predicates '(ement-notify--event-mentions-session-user-p ement-notify--event-mentions-room-p ement-notify--room-unread-p)) - (advice-add #'ement-room-list-revert :around #'my/perspective-assign-ignore-advice) - (add-hook 'ement-room-mode-hook #'my/ement-room-setup) - (my/persp-add-rule - ement-room-mode 3 "ement" - ement-describe-room-mode 3 "ement" - ement-room-occur-mode 3 "ement" - ement-room-list-mode 3 "ement")) + ;; Fix the anti-synergy with major mode re-activation in `ement-room-list-revert' + (advice-add #'ement-room-list-revert + :around #'my/perspective-assign-ignore-advice)) #+end_src -Some custom keymaps: +Some custom keymaps for room lists: #+begin_src emacs-lisp (with-eval-after-load 'ement-room-list (general-define-key @@ -8421,11 +8396,17 @@ Some custom keymaps: "q" #'quit-window "gr" #'revert-buffer "RET" #'ement-room-list-RET)) + +(with-eval-after-load 'ement-tabulated-room-list + (general-define-key + :states '(normal visual) + :keymaps '(ement-tabulated-room-list-mode-map) + "q" #'quit-window)) #+end_src Also a keymap for room mode: #+begin_src emacs-lisp -(with-eval-after-load 'ement-room-mode +(with-eval-after-load 'ement (general-define-key :states '(normal visual) :keymaps '(ement-room-mode-map) @@ -8593,20 +8574,6 @@ References: "Q" 'google-translate-query-translate-reverse "t" 'google-translate-smooth-translate) #+end_src -*** OFF (OFF) jabber -#+begin_src emacs-lisp :tangle no -(use-package srv - :straight t - :defer t) - -(use-package fsm - :straight t - :defer t) - -(use-package emacs-jabber - :straight (jabber :host nil :repo - "https://tildegit.org/wgreenhouse/emacs-jabber")) -#+end_src ** Reading documentation *** tldr [[https://tldr.sh/][tldr]] is a collaborative project providing cheatsheets for various console commands. For some reason, the built-in download in the package is broken, so I use my own function.