summaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
authorThanos Apollo <[email protected]>2024-12-09 18:23:41 +0200
committerThanos Apollo <[email protected]>2024-12-09 18:23:41 +0200
commitef9a93d8fc94b31c3ab7346e5cf77167e61448bc (patch)
tree761a52fcb01125b3b948f1af3429b1b728777839 /.config
parent6e2f110312e43a11ad071857fd74aff60e11872b (diff)
emacs: Rewrite using built-in alternatives
Diffstat (limited to '.config')
-rw-r--r--.config/emacs/init.el503
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))