diff options
author | Thanos Apollo <[email protected]> | 2024-12-09 18:23:41 +0200 |
---|---|---|
committer | Thanos Apollo <[email protected]> | 2024-12-09 18:23:41 +0200 |
commit | ef9a93d8fc94b31c3ab7346e5cf77167e61448bc (patch) | |
tree | 761a52fcb01125b3b948f1af3429b1b728777839 /.config | |
parent | 6e2f110312e43a11ad071857fd74aff60e11872b (diff) |
emacs: Rewrite using built-in alternatives
Diffstat (limited to '.config')
-rw-r--r-- | .config/emacs/init.el | 503 |
1 files changed, 252 insertions, 251 deletions
diff --git a/.config/emacs/init.el b/.config/emacs/init.el index d78f4f9..c54fb98 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -58,12 +58,22 @@ (add-to-list 'completion-styles 'initials t) (setf tab-always-indent 'complete) +(setf completion-styles '(flex) + completion-auto-select t + completion-auto-help 'always + completion-cycle-threshold nil + completions-format 'vertical + completions-sort 'historical) + +(when (> emacs-major-version 29) + (global-completion-preview-mode)) + ;; Search (setf search-default-mode #'char-fold-to-regexp) ;; make it easier to search Greek chars ;; xref -(setf xref-show-xrefs-function #'consult-xref - xref-show-definitions-function #'consult-xref) +;; (setf xref-show-xrefs-function #'consult-xref +;; xref-show-definitions-function #'consult-xref) ;; Set and load custom.el (setf custom-file (locate-user-emacs-file "custom.el")) @@ -146,11 +156,11 @@ ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}") ("\\paragraph{%s}" . "\\paragraph*{%s}"))) - :hook ((org-mode . (lambda () (display-line-numbers-mode -1) (flyspell-mode) (corfu-mode -1)))) + :hook ((org-mode . (lambda () (display-line-numbers-mode -1) (flyspell-mode)))) :bind (:map org-mode-map (("C-c l" . org-store-link) ("C-c M-t" . org-todo) ("C-c RET" . org-table-hline-and-move)))) - +;; (completion-styles-alist ) ;; Export (defun thanos/org-html-remove-curly-braces (text backend info) @@ -316,65 +326,23 @@ (unless (file-exists-p "~/Notes") (make-directory "~/Notes")) -(use-package org-gnosis - :vc t - :load-path "~/Dev/emacs-lisp/org-gnosis" - :init - (define-prefix-command 'thanos/notes-map) - (define-prefix-command 'thanos/journal-map) - :config - (setf org-gnosis-dir "~/Notes" - org-gnosis-journal-template - "* Daily Notes\n\n* Goals\n+ [] Πρωινὴ Προσευχή\n+ [] Ἑσπερινή Προσευχή\n\n* Extras" - org-gnosis-show-tags t) - - (defun thanos/org-open-at-point () - "Open Org link at point in the same window, if possible." - (interactive) - (let ((org-link-frame-setup '((file . find-file)))) - (org-open-at-point))) - :bind (("C-c n" . thanos/notes-map) - ("C-c j" . thanos/journal-map) - :map thanos/notes-map - ("f" . org-gnosis-find) - ("i" . org-gnosis-insert) - :map thanos/journal-map - ("j" . org-gnosis-journal) - ("f" . org-gnosis-journal-find) - ("i" . org-gnosis-journal-insert) - :map org-mode-map - ("C-c C-." . org-gnosis-insert-tag) - ("C-c i" . org-id-get-create) - ("C-c C-o" . thanos/org-open-at-point))) - ;; (use-package org-roam ;; :vc (:url "https://github.com/org-roam/org-roam")) -(use-package org-roam-ui - :vc (:url "https://github.com/org-roam/org-roam-ui") - :after org-roam - :config - (setq org-roam-ui-sync-theme t - org-roam-ui-follow t - org-roam-ui-update-on-save t - org-roam-ui-open-on-start t)) - -(use-package org-present - :vc (:url "https://github.com/rlister/org-present") - :hook ((org-present-mode . (lambda () - (org-present-big) - (org-display-inline-images) - (org-present-hide-cursor) - (org-present-read-only))) - (org-present-mode-quit . (lambda () - (org-present-small) - (org-remove-inline-images) - (org-present-show-cursor) - (org-present-read-write))))) +;; (use-package org-roam-ui +;; :vc (:url "https://github.com/org-roam/org-roam-ui") +;; :after org-roam +;; :config +;; (setq org-roam-ui-sync-theme t +;; org-roam-ui-follow t +;; org-roam-ui-update-on-save t +;; org-roam-ui-open-on-start t)) + + (unless (or is-phone is-uranus) (use-package modus-themes - :vc (:url "https://github.com/protesilaos/modus-themes") + :defer t :config (setf modus-themes-italic-constructs nil modus-themes-bold-constructs nil @@ -460,92 +428,11 @@ :config (which-key-mode 1)) -(use-package elfeed - :defer t - :vc (:url "https://github.com/skeeto/elfeed") - :config - (setf elfeed-search-filter "@1-week-ago +unread" - browse-url-browser-function #'browse-url-default-browser - elfeed-db-directory "~/.config/elfeed") - ;; Feeds - (setf elfeed-feeds - '(("https://hackaday.com/blog/feed/" - hackaday linux) - ("https://thanosapollo.org/index.xml" - thanos) - ("http://wikileaks.org/feed" - wikileaks) - ("https://hackernoon.com/feed" - hackernoon) - ("https://torrentfreak.com/feed" - torrentfreak piracy) - ("https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=sciimmunol" - science) - ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.medscape.com%2Findex%2Flist_13470_0&url_selector=a.title&url_pattern=viewarticle%2F.*&content_selector=div.article__main-content&content_cleanup=&title_cleanup=+-+Index&limit=&format=Atom" medscape med) - ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.tovima.gr%2Flatest-news%2F&url_selector=a.columns&url_pattern=&content_selector=div.main-content&content_cleanup=div.wrap-facebook%2Cdiv.googlenews&title_cleanup=&limit=&format=Atom" tovima greek news) - ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.estianews.gr%2Feidiseis-arthra%2F&url_selector=h3.entry-title&url_pattern=&content_selector=div.col-lg-8&content_cleanup=&title_cleanup=&limit=&format=Atom" estia greek news) - ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.estianews.gr%2Fkentriko-thema%2F&url_selector=h3.entry-title&url_pattern=&content_selector=div.col-md-8&content_cleanup=&title_cleanup=&limit=&format=Atom" estia greek kyrio) - ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.estianews.gr%2Fapopseis%2F&url_selector=h3.entry-title&url_pattern=&content_selector=div.col-lg-8&content_cleanup=&title_cleanup=&limit=&format=Atom" estia greek opinions) - ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.reuters.com%2Fbusiness%2Fhealthcare-pharmaceuticals%2F&url_selector=a.basic-card__title__37xHl&url_pattern=&content_selector=div.article-body__wrapper__3IxHM&content_cleanup=svg.link__new-tab-symbol__3T19s%2C+div.toolbar__container__3kIkw%2C+div.article-body__row__dFOPA+article-body__element__2p5pI&title_cleanup=&limit=&format=Atom" reuters med news) - ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.reuters.com%2Ftechnology%2Fcybersecurity%2F&url_selector=a.media-story-card__headline__tFMEu%2C+a.media-story-card__heading__eqhp9&url_pattern=&content_selector=article.article__container__2MUeZ&content_cleanup=div.info-content__toolbar__3AkHm%2C+svg.link__new-tab-symbol__3T19s%2C+div.article-body__row__dFOPA%2C+div.read-next-tablet-up__container__3MpHN%2C+div.author-bio__multiple-authors__5YGrG%2C+div.article__read-next__Kjxdw&title_cleanup=&limit=&format=Atom" reuters cybersec news) - ("https://annas-blog.org/ -rss.xml" anna piracy) - ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.ethnos.gr%2Ftag%2F842%2Fellhnotoyrkika&url_selector=a.single-title&url_pattern=&content_selector=div.content-section&content_cleanup=div.article-related-posts%2C+div.ReadMore%2C+script&title_cleanup=&limit=&format=Atom" greek ethnos ellinotourkika) - ("https://planet.emacslife.com/atom.xml" emacs emacslife) - ("https://localmonero.co/static/rss/the-monero-standard/feed.xml" monero) - ("https://devonzuegel.com/feed" devon) - ("https://www.addtoany.com/add_to/feed?linkurl=http%3A%2F%2Fwww.thelancet.com%2Frssfeed%2Flancet_online.xml&type=feed&linkname=The%20Lancet%20Online%20First&linknote=" lancet med) - ("https://www.propublica.org/feeds/propublica/main" probublica news) - ("http://tools.cdc.gov/podcasts/feed.asp?feedid=183" cdc med) - ("http://planet.lisp.org/rss20.xml" lisp planetlisp) - ("https://guix.gnu.org/feeds/blog.atom" guix) - ("https://protesilaos.com/master.xml" prot) - ("https://static.fsf.org/fsforg/rss/news.xml" gnu fsf) - ;; YouTube - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg" - distrotube yt linux) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA" - brodie yt linux) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCAiiOTio8Yu69c3XnR7nQBQ" - systemcrafters yt linux) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC6QYFutt9cluQ3uSM963_KQ" - ninja yt med) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC1yNl2E66ZzKApQdRuTQ4tw" - sabine yt physics) - ("https://www.aartaka.me.eu.org/" - artyom blog lisp) - ("https://nyxt-browser.com/feed" - nyxt lisp))) - - (defun elfeed-mpv (&optional use-generic-p) - "Play video link with mpv." - (interactive "P") - (let ((entries (elfeed-search-selected))) - (cl-loop for entry in entries - do (elfeed-untag entry 'unread) - when (elfeed-entry-link entry) - do (start-process-shell-command "elfeed-video" nil (format "mpv \"%s\"" it))) - (mapc #'elfeed-search-update-entry entries) - (unless (use-region-p) (forward-line)))) - - :bind (("C-x f" . elfeed) - :map elfeed-search-mode-map - ("v" . 'elfeed-mpv) - ("U" . 'elfeed-update)) - :hook ((elfeed-searchacw-mode . (lambda () (display-line-numbers-mode 0))))) ;; Python (add-to-list 'auto-mode-alist '("\\.py\\'" . python-ts-mode)) ;; Lisp -(use-package rainbow-delimiters - :vc (:url "https://github.com/Fanael/rainbow-delimiters") - :defer t - :hook ((emacs-lisp-mode . rainbow-delimiters-mode) - (lisp-mode . rainbow-delimiters-mode) - (clojure-mode . rainbow-delimiters-mode) - (scheme-mode . rainbow-delimiters-mode))) - (use-package sly :init (setf inferior-lisp-program "sbcl") :ensure t) @@ -629,14 +516,6 @@ rss.xml" anna piracy) (global-set-key (kbd "C-x M-[") 'insert-brackets) -(use-package orderless - :init (add-to-list 'completion-styles 'initials t) - :ensure t - :config - (setf completion-category-overrides '((file (style basic partial-completion))) - completion-styles '(orderless) - completion-cycle-threshold 2)) - (use-package pdf-tools :ensure nil :config @@ -705,6 +584,8 @@ rss.xml" anna piracy) (interactive) (eshell/clear-scrollback)) + + (use-package eshell :config (setf eshell-highlight-prompt t) @@ -788,12 +669,7 @@ rss.xml" anna piracy) :map erc-mode-map ("C-c RET" . 'erc-cmd-QUERY))) -(use-package transmission - :vc (:url "https://github.com/holomorph/transmission") - :defer t) - (use-package sudo-edit - :vc (:url "https://github.com/nflath/sudo-edit") :ensure t :config (setf sudo-edit-local-method "sudo")) @@ -810,100 +686,230 @@ rss.xml" anna piracy) xref-show-definitions-function #'consult-xref)) ;; My packages -(when (or is-zeus is-hermes) - (use-package yeetube - :init (define-prefix-command 'thanos/yeetube-map) - :vc t - :load-path "~/Dev/emacs-lisp/yeetube" - :ensure t - :config - (setf yeetube-results-limit 20 - yeetube-mpv-disable-video t - yeetube-display-thumbnails t - yeetube-play-function #'yeetube-mpv-play) - - (defun yeetube-download-videos-ffmpeg () - "Download videos using ffmpeg." - (interactive) - (let ((url "") - (name "") - (download-counter 1) - (stored-contents nil)) - ;; Read links and names until "q" is entered - (while (not (string= url "q")) - (setf url (read-string "Enter URL (q to quit): ")) - (unless (string= url "q") - (setf name - (read-string (format "Custom name (download counter: %d) " download-counter))) - (push (cons url name) stored-contents) - (setf download-counter (1+ download-counter)))) - ;; Process the collected links and names - (dolist (pair stored-contents) - (let ((url (car pair)) - (name (cdr pair))) - (async-shell-command - (format - "ffmpeg -protocol_whitelist file,crypto,data,https,tls,tcp -stats -i '%s' -codec copy '%s.mp4'" - url name)))))) - - (defun yeetube-download-vimeo-videos () - "Download videos from vimeo services." - (interactive) - (let ((url "") - (name "") - (download-counter 1)) - (while (not (string= url "q")) - (setf url (read-string "Enter URL (q to quit): ")) - (unless (string= url "q") - (setf name - (read-string (format "Custom name (download counter: %d) " download-counter))) - (setf download-counter (1+ download-counter)) - (call-process-shell-command - (format - "yt-dlp '%s' -o '%s'" - (replace-regexp-in-string "\\.json" ".m3u8" url) name) - nil 0))))) - - :bind (("C-c y" . 'thanos/yeetube-map) - :map thanos/yeetube-map - ("s" . 'yeetube-search) - ("b" . 'yeetube-play-saved-video) - ("d" . 'yeetube-download-videos) - ("C-d" . 'yeetube-download-vimeo-videos) - ("p" . 'yeetube-mpv-toggle-pause) - ("v" . 'yeetube-mpv-toggle-video) - ("V" . 'yeetube-mpv-toggle-no-video-flag) - ("C-p" . 'yeetube-mpv-toggle-video) - ("k" . 'yeetube-remove-saved-video))) - - (use-package gnosis - :load-path "~/Dev/emacs-lisp/gnosis" - :ensure t - :init (define-prefix-command 'thanos/gnosis-map) - :config - (setf gnosis-vc-auto-push t - gnosis-mcq-display-choices nil - gnosis-image-width (and is-hermes 150) - gnosis-image-height (and is-hermes 150)) - (gnosis-modeline-mode) - (setf gnosis-custom-values '((:deck "Bulgarian" (:amnesia 0.55 :proto (0 1 3))) - (:deck "Unking" (:amnesia 0.45)) - (:tag "vocabulary" (:amnesia 0.65 :proto (0 1 3))))) - :bind (("C-M-r" . 'gnosis-dashboard) - ("C-c c" . 'gnosis-add-note))) - - ;; Sync gnosis on startup - (gnosis-vc-pull) - - (use-package pcmpl-tailscale - :vc t - :load-path "~/Dev/emacs-lisp/pcmpl-tailscale" - :ensure nil)) - -;; Emacs dev - -(use-package package-lint - :defer t) +(and (or is-zeus is-hermes) + (>= emacs-major-version 30) + (use-package yeetube + :init (define-prefix-command 'thanos/yeetube-map) + :vc t + :load-path "~/Dev/emacs-lisp/yeetube" + :ensure t + :config + (setf yeetube-results-limit 20 + yeetube-mpv-disable-video t + yeetube-display-thumbnails t + yeetube-play-function #'yeetube-mpv-play) + + (defun yeetube-download-videos-ffmpeg () + "Download videos using ffmpeg." + (interactive) + (let ((url "") + (name "") + (download-counter 1) + (stored-contents nil)) + ;; Read links and names until "q" is entered + (while (not (string= url "q")) + (setf url (read-string "Enter URL (q to quit): ")) + (unless (string= url "q") + (setf name + (read-string (format "Custom name (download counter: %d) " download-counter))) + (push (cons url name) stored-contents) + (setf download-counter (1+ download-counter)))) + ;; Process the collected links and names + (dolist (pair stored-contents) + (let ((url (car pair)) + (name (cdr pair))) + (async-shell-command + (format + "ffmpeg -protocol_whitelist file,crypto,data,https,tls,tcp -stats -i '%s' -codec copy '%s.mp4'" + url name)))))) + + (defun yeetube-download-vimeo-videos () + "Download videos from vimeo services." + (interactive) + (let ((url "") + (name "") + (download-counter 1)) + (while (not (string= url "q")) + (setf url (read-string "Enter URL (q to quit): ")) + (unless (string= url "q") + (setf name + (read-string (format "Custom name (download counter: %d) " download-counter))) + (setf download-counter (1+ download-counter)) + (call-process-shell-command + (format + "yt-dlp '%s' -o '%s'" + (replace-regexp-in-string "\\.json" ".m3u8" url) name) + nil 0))))) + + :bind (("C-c y" . 'thanos/yeetube-map) + :map thanos/yeetube-map + ("s" . 'yeetube-search) + ("b" . 'yeetube-play-saved-video) + ("d" . 'yeetube-download-videos) + ("C-d" . 'yeetube-download-vimeo-videos) + ("p" . 'yeetube-mpv-toggle-pause) + ("v" . 'yeetube-mpv-toggle-video) + ("V" . 'yeetube-mpv-toggle-no-video-flag) + ("C-p" . 'yeetube-mpv-toggle-video) + ("k" . 'yeetube-remove-saved-video))) + + (use-package gnosis + :load-path "~/Dev/emacs-lisp/gnosis" + :ensure t + :init (define-prefix-command 'thanos/gnosis-map) + :config + (setf gnosis-vc-auto-push t + gnosis-mcq-display-choices nil + gnosis-image-width (and is-hermes 150) + gnosis-image-height (and is-hermes 150)) + (gnosis-modeline-mode) + (setf gnosis-custom-values '((:deck "Bulgarian" (:amnesia 0.55 :proto (0 1 3))) + (:deck "Unking" (:amnesia 0.45)) + (:tag "vocabulary" (:amnesia 0.65 :proto (0 1 3))))) + :bind (("C-M-r" . 'gnosis-dashboard) + ("C-c c" . 'gnosis-add-note))) + + ;; Sync gnosis on startup + (gnosis-vc-pull) + + (use-package org-gnosis + :vc t + :load-path "~/Dev/emacs-lisp/org-gnosis" + :init + (define-prefix-command 'thanos/notes-map) + (define-prefix-command 'thanos/journal-map) + :config + (setf org-gnosis-dir "~/Notes" + org-gnosis-journal-template + "* Daily Notes\n\n* Goals\n+ [] Πρωινὴ Προσευχή\n+ [] Ἑσπερινή Προσευχή\n\n* Extras" + org-gnosis-show-tags t) + + (defun thanos/org-open-at-point () + "Open Org link at point in the same window, if possible." + (interactive) + (let ((org-link-frame-setup '((file . find-file)))) + (org-open-at-point))) + :bind (("C-c n" . thanos/notes-map) + ("C-c j" . thanos/journal-map) + :map thanos/notes-map + ("f" . org-gnosis-find) + ("i" . org-gnosis-insert) + :map thanos/journal-map + ("j" . org-gnosis-journal) + ("f" . org-gnosis-journal-find) + ("i" . org-gnosis-journal-insert) + :map org-mode-map + ("C-c C-." . org-gnosis-insert-tag) + ("C-c i" . org-id-get-create) + ("C-c C-o" . thanos/org-open-at-point))) + + (use-package pcmpl-tailscale + :vc t + :load-path "~/Dev/emacs-lisp/pcmpl-tailscale" + :ensure nil) + + (use-package greek-polytonic + :vc t + :load-path "~/Dev/emacs-lisp/greek-polytonic") + + (use-package org-present + :vc (:url "https://github.com/rlister/org-present") + :hook ((org-present-mode . (lambda () + (org-present-big) + (org-display-inline-images) + (org-present-hide-cursor) + (org-present-read-only))) + (org-present-mode-quit . (lambda () + (org-present-small) + (org-remove-inline-images) + (org-present-show-cursor) + (org-present-read-write))))) + + (use-package elfeed + :defer t + :vc (:url "https://github.com/skeeto/elfeed") + :config + (setf elfeed-search-filter "@1-week-ago +unread" + browse-url-browser-function #'browse-url-default-browser + elfeed-db-directory "~/.config/elfeed") + ;; Feeds + (setf elfeed-feeds + '(("https://hackaday.com/blog/feed/" + hackaday linux) + ("https://thanosapollo.org/index.xml" + thanos) + ("http://wikileaks.org/feed" + wikileaks) + ("https://hackernoon.com/feed" + hackernoon) + ("https://torrentfreak.com/feed" + torrentfreak piracy) + ("https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=sciimmunol" + science) + ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.medscape.com%2Findex%2Flist_13470_0&url_selector=a.title&url_pattern=viewarticle%2F.*&content_selector=div.article__main-content&content_cleanup=&title_cleanup=+-+Index&limit=&format=Atom" medscape med) + ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.tovima.gr%2Flatest-news%2F&url_selector=a.columns&url_pattern=&content_selector=div.main-content&content_cleanup=div.wrap-facebook%2Cdiv.googlenews&title_cleanup=&limit=&format=Atom" tovima greek news) + ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.estianews.gr%2Feidiseis-arthra%2F&url_selector=h3.entry-title&url_pattern=&content_selector=div.col-lg-8&content_cleanup=&title_cleanup=&limit=&format=Atom" estia greek news) + ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.estianews.gr%2Fkentriko-thema%2F&url_selector=h3.entry-title&url_pattern=&content_selector=div.col-md-8&content_cleanup=&title_cleanup=&limit=&format=Atom" estia greek kyrio) + ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.estianews.gr%2Fapopseis%2F&url_selector=h3.entry-title&url_pattern=&content_selector=div.col-lg-8&content_cleanup=&title_cleanup=&limit=&format=Atom" estia greek opinions) + ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.reuters.com%2Fbusiness%2Fhealthcare-pharmaceuticals%2F&url_selector=a.basic-card__title__37xHl&url_pattern=&content_selector=div.article-body__wrapper__3IxHM&content_cleanup=svg.link__new-tab-symbol__3T19s%2C+div.toolbar__container__3kIkw%2C+div.article-body__row__dFOPA+article-body__element__2p5pI&title_cleanup=&limit=&format=Atom" reuters med news) + ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.reuters.com%2Ftechnology%2Fcybersecurity%2F&url_selector=a.media-story-card__headline__tFMEu%2C+a.media-story-card__heading__eqhp9&url_pattern=&content_selector=article.article__container__2MUeZ&content_cleanup=div.info-content__toolbar__3AkHm%2C+svg.link__new-tab-symbol__3T19s%2C+div.article-body__row__dFOPA%2C+div.read-next-tablet-up__container__3MpHN%2C+div.author-bio__multiple-authors__5YGrG%2C+div.article__read-next__Kjxdw&title_cleanup=&limit=&format=Atom" reuters cybersec news) + ("https://annas-blog.org/ +rss.xml" anna piracy) + ("http://localhost/?action=display&bridge=CssSelectorBridge&home_page=https%3A%2F%2Fwww.ethnos.gr%2Ftag%2F842%2Fellhnotoyrkika&url_selector=a.single-title&url_pattern=&content_selector=div.content-section&content_cleanup=div.article-related-posts%2C+div.ReadMore%2C+script&title_cleanup=&limit=&format=Atom" greek ethnos ellinotourkika) + ("https://planet.emacslife.com/atom.xml" emacs emacslife) + ("https://localmonero.co/static/rss/the-monero-standard/feed.xml" monero) + ("https://devonzuegel.com/feed" devon) + ("https://www.addtoany.com/add_to/feed?linkurl=http%3A%2F%2Fwww.thelancet.com%2Frssfeed%2Flancet_online.xml&type=feed&linkname=The%20Lancet%20Online%20First&linknote=" lancet med) + ("https://www.propublica.org/feeds/propublica/main" probublica news) + ("http://tools.cdc.gov/podcasts/feed.asp?feedid=183" cdc med) + ("http://planet.lisp.org/rss20.xml" lisp planetlisp) + ("https://guix.gnu.org/feeds/blog.atom" guix) + ("https://protesilaos.com/master.xml" prot) + ("https://static.fsf.org/fsforg/rss/news.xml" gnu fsf) + ;; YouTube + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg" + distrotube yt linux) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA" + brodie yt linux) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCAiiOTio8Yu69c3XnR7nQBQ" + systemcrafters yt linux) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC6QYFutt9cluQ3uSM963_KQ" + ninja yt med) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC1yNl2E66ZzKApQdRuTQ4tw" + sabine yt physics) + ("https://www.aartaka.me.eu.org/" + artyom blog lisp) + ("https://nyxt-browser.com/feed" + nyxt lisp))) + + (defun elfeed-mpv (&optional use-generic-p) + "Play video link with mpv." + (interactive "P") + (let ((entries (elfeed-search-selected))) + (cl-loop for entry in entries + do (elfeed-untag entry 'unread) + when (elfeed-entry-link entry) + do (start-process-shell-command "elfeed-video" nil (format "mpv \"%s\"" it))) + (mapc #'elfeed-search-update-entry entries) + (unless (use-region-p) (forward-line)))) + + :bind (("C-x f" . elfeed) + :map elfeed-search-mode-map + ("v" . 'elfeed-mpv) + ("U" . 'elfeed-update)) + :hook ((elfeed-searchacw-mode . (lambda () (display-line-numbers-mode 0))))) + + (use-package transmission + :vc (:url "https://github.com/holomorph/transmission") + :defer t) + + (use-package rainbow-delimiters + :vc (:url "https://github.com/Fanael/rainbow-delimiters") + :defer t + :hook ((emacs-lisp-mode . rainbow-delimiters-mode) + (lisp-mode . rainbow-delimiters-mode) + (clojure-mode . rainbow-delimiters-mode) + (scheme-mode . rainbow-delimiters-mode)))) ;; AI tools (use-package gptel @@ -975,8 +981,7 @@ rss.xml" anna piracy) :map notmuch-search-mode-map ("u" . notmuch-refresh-all-buffers)) :hook ((notmuch-hello-mode . (lambda () (display-line-numbers-mode 0))) - (notmuch-search-mode . (lambda () (display-line-numbers-mode 0) (emojify-mode))) - (message-mode . (lambda () (corfu-mode -1)))) + (notmuch-search-mode . (lambda () (display-line-numbers-mode 0) (emojify-mode)))) :custom (setf notmuch-archive-tags '("-inbox" "-unread" "+archived") notmuch-show-all-tags-list t @@ -1289,10 +1294,6 @@ Create a temporary frame to execute BODY, which will then be deleted." (insert (format "%s" (+ i str))) (org-table-hline-and-move))) -(use-package greek-polytonic - :vc t - :load-path "~/Dev/emacs-lisp/greek-polytonic") - (require 'server) (unless (server-running-p) (server-start)) |