diff --git a/custom.el b/custom.el index e238492..60fc185 100644 --- a/custom.el +++ b/custom.el @@ -198,6 +198,14 @@ (t (setq current-layout "nous"))) (shell-command (concat "setxkbmap " current-layout))) +(defun fez/change-volume (delta) + "Change volume. Delta must be a valid amixer string, like '5%+' or '5%-'" + (interactive) + (shell-command + (concat + "amixer sset Master " delta + " | grep \"Front Left:\" | head -n 1 | sed 's/\\].*//g' | sed 's/.*\\[//g'"))) + (defun fez/man-at-point () (interactive) (let ((word (current-word))) @@ -261,7 +269,22 @@ (interactive) (eshell 'N)) -;; Eshell convinience commands. +(defun fez/goto-file () + "Go to the file associated with the given name in fez/file-keys." + (interactive) + (let ((match (assoc (completing-read "Key: " fez/file-keys) fez/file-keys))) + (when match + (find-file (cdr match))))) + +(defun fez/dired-open-file () + "In dired, open the file named on this line in the default application for the filetype." + (interactive) + (let ((file (dired-get-filename nil t))) + (message "Opening %s..." file) + (call-process "xdg-open" nil 0 nil file) + (message "Opening %s done" file))) + +;; Eshell convenience commands. (defalias 'open 'find-file-other-window) (defalias 'clean 'eshell/clear-scrollback) diff --git a/init.el b/init.el index 931a6a4..db6be22 100644 --- a/init.el +++ b/init.el @@ -13,6 +13,10 @@ ;; Correct bad defaults. (load "~/.emacs.d/tweaks.el") +(setq fez/file-keys + '(("config" . "~/.emacs.d/init.el") + ("agenda" . "~/doc/agenda.org"))) + ;; Additional functions, keybinds. (load "~/.emacs.d/custom.el") @@ -78,4 +82,4 @@ (setq geiser-chez-binary "/usr/bin/scheme") ;; I use emacs as my window manager. -;; (exwm-config) +(exwm-config) diff --git a/packages.el b/packages.el index 62102ab..77a4655 100644 --- a/packages.el +++ b/packages.el @@ -1,3 +1,4 @@ + ;; Automatically update packages and removes old ones. (use-package auto-package-update :ensure t @@ -10,6 +11,12 @@ (use-package basic-theme :ensure t) +;;; Built-in packages +(use-package dired + :init + (with-eval-after-load 'dired-mode + (define-key dired-mode-map (kbd "M-o") 'fez/dired-open-file))) + ;;; Languages (use-package haskell-mode :ensure t @@ -31,7 +38,7 @@ (geiser-eval-definition))))) ;; geiser requires extra packages for every implementation you want to use (use-package geiser-guile - :ensure t) + :ensure t) (use-package geiser-mit :ensure t) (use-package geiser-chez @@ -97,6 +104,13 @@ (use-package rust-mode :ensure t) +(use-package vterm + :ensure t) + +(use-package julia-snail + :ensure t + :hook (julia-mode . julia-snail-mode)) + ;; Amazing s-expression editing mode. ;; (use-package lispy ;; :ensure t @@ -113,8 +127,7 @@ (add-hook 'lisp-mode-hook 'paredit-mode) (add-hook 'emacs-lisp-mode-hook 'paredit-mode) (add-hook 'racket-mode 'paredit-mode) - (add-hook 'fennel-mode 'paredit-mode) - ) + (add-hook 'fennel-mode 'paredit-mode)) ;;; Utility packages ;; undo-tree is mainly used for its redo functionality. @@ -126,6 +139,14 @@ ;; :config ;; (global-undo-tree-mode)) +;; Use ISO-format (YYYY-MM-DD) for calendar. +(use-package calendar + :config (calendar-set-date-style 'iso)) + +(use-package fzf + :ensure t + ) + ;; Nice startup screen. (use-package dashboard :ensure t @@ -161,10 +182,32 @@ :ensure t) ;; Minibuffer completion. Vertical display and faster than ido. -(use-package selectrum + +;; (use-package selectrum +;; :ensure t +;; :config +;; (selectrum-mode t)) + +(use-package helm + ;; TODO: configure helm theme :ensure t + :bind + ("M-x" . helm-M-x) + ("C-x C-f" . helm-find-files) + ("C-c C-x C-p" . helm-locate) + ("C-x b" . helm-mini) :config - (selectrum-mode t)) + (helm-mode t) + (setq helm-mode-fuzzy-match t) + (setq helm-completion-in-region-fuzzy-match t) + (setq helm-always-two-windows nil) + (setq helm-display-buffer-default-height 15) + (setq helm-default-display-buffer-functions '(display-buffer-in-side-window)) + + (define-key helm-map (kbd "") 'helm-execute-persistent-action) ; rebind tab to run persistent action + (define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB work in terminal + (define-key helm-map (kbd "C-z") 'helm-select-action) ; list actions using C-z + ) ;; better incremental search with minibuffer (use-package swiper @@ -172,11 +215,11 @@ :bind ("C-s" . 'swiper)) ;; Instead of opening windows inside of Emacs, create new frames. This is great -;; for tiling window managers. -(use-package frames-only-mode - :ensure t - :config - (frames-only-mode)) +;; for tiling window managers, but not for exwm. +;; (use-package frames-only-mode +;; :ensure t +;; :config +;; (frames-only-mode)) ;; Mode for browsing gemini/gopher sites. (use-package elpher @@ -251,10 +294,18 @@ (use-package god-mode :ensure t :init - (global-set-key (kbd "") #'god-mode-all) + (god-mode-all) + (defun fez/god-mode-update-cursor-type () + (setq cursor-type (if (or god-local-mode buffer-read-only) 'box 'bar))) + (add-hook 'post-command-hook #'fez/god-mode-update-cursor-type) (setq god-exempt-major-modes nil) (setq god-exempt-predicates nil) - (setq god-mode-enable-function-key-translation nil)) + (setq god-mode-enable-function-key-translation nil) + :bind (("" . god-mode-all) + ("C-x C-1" . delete-other-windows) + ("C-x C-2" . split-window-below) + ("C-x C-3" . split-window-right) + ("C-x C-0" . delete-window))) (use-package tex :ensure auctex @@ -267,156 +318,227 @@ '((output-pdf "Zathura"))) (setq tex-fontify-script nil) (setq font-latex-fontify-script nil) - (fset 'tex-font-lock-suscript 'ignore)) + (fset 'tex-font-lock-suscript 'ignore) + (add-hook 'LaTeX-mode-hook 'turn-on-reftex) + (setq reftex-plug-into-auctex t) + (setq reftex-label-alist '((nil ?e nil "~\\eqref{%s}" nil nil)))) ;; mu4e doesn't have a (m)elpa package, apparently, so it is set up manually here ;; (require 'mu4e) -;; (use-package exwm -;; :init -;; (defun fez/exwm-init-hook () -;; (exwm-workspace-switch-create 1)) +(use-package exwm + :ensure dmenu + :ensure edwina + :hook + (latex-mode + . (lambda () + (local-set-key (kbd "C-c C-v") + (lambda () (interactive) + (split-window-right) + (other-window 1) + (TeX-view))))) + :init + (defun fez/exwm-init-hook () + (exwm-workspace-switch-create 1)) -;; (require 'exwm-randr) -;; (setq exwm-randr-workspace-output-plist '(0 "HDMI-0")) -;; (add-hook 'exwm-randr-screen-change-hook -;; (lambda () -;; (start-process-shell-command -;; "xrandr" nil "xrandr --output HDMI-0 --left-of DVI-D-0 --auto"))) -;; (exwm-randr-enable) + (require 'exwm-randr) + (setq exwm-randr-workspace-output-plist '(0 "HDMI-0")) + (add-hook 'exwm-randr-screen-change-hook + (lambda () + (start-process-shell-command + "xrandr" nil "xrandr --output HDMI-0 --left-of DVI-D-0 --auto"))) + (exwm-randr-enable) + (require 'exwm-systemtray) + (exwm-systemtray-enable) -;; (defun exwm-config () -;; "EXWM configuration." -;; ;; Set the initial workspace number. -;; (unless (get 'exwm-workspace-number 'saved-value) -;; (setq exwm-workspace-number 4)) -;; ;; Make class name the buffer name -;; (add-hook 'exwm-update-class-hook -;; (lambda () -;; (exwm-workspace-rename-buffer exwm-class-name))) -;; ;; Global keybindings. -;; (unless (get 'exwm-input-global-keys 'saved-value) -;; (setq exwm-input-global-keys -;; `( -;; ;; 's-r': Reset (to line-mode, fullscreen). -;; ([?\s-r] . exwm-reset) -;; ;; 's-w': Switch workspace. -;; ([?\s-w] . exwm-workspace-switch) -;; ;; 's-&': Launch application. -;; ([?\s-&] . (lambda (command) -;; (interactive (list (read-shell-command "$ "))) -;; (start-process-shell-command command nil command))) -;; ;; 's-N': Switch to certain workspace. -;; (\,@(mapcar (lambda (i) -;; `(,(kbd (format "s-%d" i)) . -;; (lambda () -;; (interactive) -;; (exwm-workspace-switch-create ,i)))) -;; (number-sequence 0 9))) -;; ;; 's-a': Toggle X mouse -;; ([?\s-a] . fez/toggle-x-mouse) -;; ;; 's-': Toggle keyboard layouts -;; ([?\s-\ ] . fez/swap-keyboard) -;; ;; 's-l': Toggle line-mode and char-mode for the current window. -;; ([?\s-l] . exwm-input-toggle-keyboard) -;; ;; windmove movement commands -;; ([?\s-u] . windmove-left) -;; ([?\s-i] . windmove-down) -;; ([?\s-o] . windmove-up) -;; ([?\s-p] . windmove-right))) -;; ;; Line-editing shortcuts -;; (unless (get 'exwm-input-simulation-keys 'saved-value) -;; (setq exwm-input-simulation-keys -;; '(([?\C-b] . [left]) -;; ([?\C-f] . [right]) -;; ([?\C-p] . [up]) -;; ([?\C-n] . [down]) -;; ([?\C-a] . [home]) -;; ([?\C-e] . [end]) -;; ([?\M-v] . [prior]) -;; ([?\C-v] . [next]) -;; ([?\C-d] . [delete]) -;; ([?\C-k] . [S-end delete])))) -;; ;; Enable windmove keybinds -;; (winner-mode t) -;; ;; Enable EXWM -;; (exwm-enable)))) + (setq exwm-workspace-show-all-buffers t + exwm-layout-show-all-buffers t) + + (display-battery-mode t) + + (defun exwm-config () + "EXWM configuration." + ;; Set the initial workspace number. + (unless (get 'exwm-workspace-number 'saved-value) + (setq exwm-workspace-number 4)) + ;; Make class name the buffer name + (add-hook 'exwm-update-class-hook + (lambda () + (exwm-workspace-rename-buffer exwm-class-name))) + ;; Global keybindings. + (unless (get 'exwm-input-global-keys 'saved-value) + (setq exwm-input-global-keys + `(;; 's-g': C-g for other windows, used to clear the minibuffer. + ([?\s-g] . keyboard-quit) + ;; 's-r': Reset (to line-mode, fullscreen). + ([?\s-r] . exwm-reset) + ;; 's-w': Switch workspace. + ([?\s-w] . exwm-workspace-switch) + ;; 's-f': Toggle floating + ([?\s-f] . exwm-floating-toggle-floating) + ;; 's-p': Launch application. + ([?\s-p] . dmenu + ;; (lambda (command) + ;; (interactive (list (read-shell-command "$ "))) + ;; (start-process-shell-command command nil command)) + ) + ;; 's-N': Switch to certain workspace. + (\,@(mapcar (lambda (i) + `(,(kbd (format "s-%d" i)) . + (lambda () + (interactive) + (exwm-workspace-switch-create ,i)))) + (number-sequence 0 9))) + ;; 's-m': Toggle X mouse + ([?\s-m] . fez/toggle-x-mouse) + ;; 's-': Toggle keyboard layouts + ([?\s-\ ] . fez/swap-keyboard) + ;; 's-t': Toggle line-mode and char-mode for the current window. + ([?\s-t] . exwm-input-toggle-keyboard) + ;; windmove movement commands + ;; ([?\s-j] . windmove-left) + ;; ([?\s-k] . windmove-down) + ;; ([?\s-l] . windmove-up) + ;; ([?\s-\;] . windmove-right) + ;; window management + ([?\s-j] . edwina-dec-mfact) + ([?\s-k] . edwina-select-next-window) + ([?\s-l] . edwina-select-previous-window) + ([?\s-\;] . edwina-inc-mfact) + ([?\s-i] . edwina-inc-nmaster) + ([?\s-u] . edwina-dec-nmaster) + ([?\s-a] . edwina-arrange) + (,(kbd "s-") . edwina-zoom) + (,(kbd "s-S-") . edwina-clone-window) + (,(kbd "") . (lambda () + (interactive) + (shell-command "flameshot gui"))) + (,(kbd "") . (lambda () + (interactive) + (fez/change-volume "5%-"))) + (,(kbd "") . (lambda () + (interactive) + (fez/change-volume "5%+"))) + (,(kbd "") . (lambda () + (interactive) + (shell-command "amixer sset Master toggle > /dev/null"))))) + ;; Line-editing shortcuts + (unless (get 'exwm-input-simulation-keys 'saved-value) + (setq exwm-input-simulation-keys + '(([?\C-b] . [left]) + ([?\C-f] . [right]) + ([?\C-p] . [up]) + ([?\C-n] . [down]) + ([?\C-a] . [home]) + ([?\C-e] . [end]) + ([?\M-v] . [prior]) + ([?\C-v] . [next]) + ([?\C-d] . [delete]) + ([?\C-k] . [S-end delete])))) + ;; Enable windmove keybinds + (winner-mode t) + ;; Enable EXWM + (exwm-enable)))) + +(use-package exwm-modeline + :ensure t + :after (exwm) + :config + (setq exwm-modeline-short t) + (setq exwm-modeline-display-urgent nil) + (add-hook 'exwm-init-hook #'exwm-modeline-mode)) (use-package elfeed :ensure t :config (setq elfeed-curl-extra-arguments '("--insecure")) - (setq elfeed-feeds '(("http://tilde.town/~opfez/music_rss.xml" music) - ("https://tilde.town/~dzwdz/blog.xml" friend) - ("https://m455.casa/feed.rss" friend) - ("https://itwont.work/atom.xml" friend) - ("http://tilde.town/~archenoth/.weed" friend) - ("https://tilde.town/~opfez/blog_rss.xml" friend) - ;; ("https://dataswamp.org/~solene/rss.xml" blog) - ("https://stevelosh.com/rss.xml" blog) - ("https://ftrv.se/posts.rss" blog) - ("https://ambrevar.xyz/atom.xml" blog) - ("http://wingolog.org/feed/atom" blog) - ("https://nullprogram.com/feed/" blog) - ("https://www.brain-dump.org/index.xml" blog) - ("https://hyper.dev/feed.xml" blog) - ("https://100r.co/links/rss.xml" blog) - ("https://weinholt.se/feed.xml" blog) - ("https://www.more-magic.net/feed.atom" blog) - ;; ("https://planet.emacslife.com/atom.xml" blog) - ;; ("https://planet.lisp.org/rss20.xml" blog) - ("https://git.qorg11.net/kill9.git/rss" blog) - ("https://regularflolloping.com/rss.xml" blog) - ("https://sigkill.dk/atom.xml" blog) - ("https://doisinkidney.com/rss.xml" blog) - ("http://leahneukirchen.org/trivium/index.atom" blog) - ("https://cosmic.voyage/rss.xml" other) - ("https://xkcd.com/rss.xml" other) - ;; ("https://nixers.net/syndication.php?limit=15" other) - ("http://lambda-the-ultimate.org/node/feed" other) - ("https://esoteric.codes/rss" other) - ("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" news) - ("http://n-gate.com/index.rss" news) - ("https://suckless.org/atom.xml" news) - ;("https://www.aftenposten.no/rss/" news) - ;("https://www.nrk.no/toppsaker.rss" news) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCeh-pJYRZTBJDXMNZeWSUVA" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC_QIfHvN9auy2CoOdSfMWDw" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCD6VugMZKRhSyzWEWA9W2fg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UClOGLGPOqlAiLmOvXW5lKbw" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC4nJnJ-HO5vVbGlJ14rf5yg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCsvn_Po0SmunchJYOWpOxMg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCl_dlV_7ofr4qeP1drJQ-qg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC3ts8coMP645hZw9JSD3pqQ" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCtUbO6rBht0daVIOGML3c8w" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCJ8V9aiz50m6NVn0ix5v8RQ" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCEKJKJ3FO-9SFv5x5BzyxhQ" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCmu9PVIZBk-ZCi-Sk2F2utA" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCUzQJ3JBuQ9w-po4TXRJHiA" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCakAg8hC_RFJm4RI3DlD7SA" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCEbYhDd6c6vngsF5PQpFVWg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC3azLjQuz9s5qk76KEXaTvA" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCk2KE7yg0BwsJfr8Dp9ivUQ" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCSdma21fnJzgmPodhC9SJ3g" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCmtyQOKKmrMVaKuRXz02jbQ" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCah7IyEzRnRdttwDGDdy_gw" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCD6VugMZKRhSyzWEWA9W2fg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCL7DDQWP6x7wy0O6L5ZIgxg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCqp1yi_juq5JJuzKY71Hoag" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC1kBxkk2bcG78YBX7LMl9pQ" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UChl_NKOs1qqh_x7yJfaDpDw" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCTvH45HvnOzqXvfNJqdc3xg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCd-qVRcjoK9zjtDs_LRxSmw" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCsUablJrqdwCh83e55tBWPQ" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCXYejH-GyeQblhfNM01L-Rg" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCrv269YwJzuZL3dH5PCgxUw" youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCt7fwAhXDy3oNFTAzF2o8Pw" youtube) ; theneedledrop - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCOjLfFE0TABS9bk05oH-kgw" youtube) ; patricia taxxon - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC9DkCKm4_VDztRRyge4mCJQ" youtube) ; amoeba records - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC2PA-AKmVpU6NKCGtZq_rKQ" youtube) ; philosophy tube - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC5qqBFOKTNAzIyE4g3SvuwQ" youtube) ; sleep deprived - ))) + (setq elfeed-feeds + '(;; Music + ("http://tilde.town/~opfez/music_rss.xml" music) + + ;; Friends + ("https://tilde.town/~dzwdz/blog.xml" friend) + ("https://m455.casa/feed.rss" friend) + ("https://itwont.work/atom.xml" friend) + ("http://tilde.town/~archenoth/.weed" friend) + ("https://tilde.town/~opfez/blog_rss.xml" friend) + + ;; Blogs + ;; ("https://dataswamp.org/~solene/rss.xml" blog) + ("https://stevelosh.com/rss.xml" blog) + ("https://ftrv.se/posts.rss" blog) + ("https://ambrevar.xyz/atom.xml" blog) + ("http://wingolog.org/feed/atom" blog) + ("https://nullprogram.com/feed/" blog) + ("https://www.brain-dump.org/index.xml" blog) + ("https://hyper.dev/feed.xml" blog) + ("https://100r.co/links/rss.xml" blog) + ("https://weinholt.se/feed.xml" blog) + ("https://www.more-magic.net/feed.atom" blog) + ;; ("https://planet.emacslife.com/atom.xml" blog) + ;; ("https://planet.lisp.org/rss20.xml" blog) + ("https://git.qorg11.net/kill9.git/rss" blog) + ("https://regularflolloping.com/rss.xml" blog) + ("https://sigkill.dk/atom.xml" blog) + ("https://doisinkidney.com/rss.xml" blog) + ("http://leahneukirchen.org/trivium/index.atom" blog) + ("https://moufawad-paul.blogspot.com/rss.xml" blog) + + ;; Other + ("https://xkcd.com/rss.xml" other) + ;; ("https://nixers.net/syndication.php?limit=15" other) + ("http://lambda-the-ultimate.org/node/feed" other) + ("https://esoteric.codes/rss" other) + + ;; News + ("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" news) + ("http://n-gate.com/index.rss" news) + ("https://suckless.org/atom.xml" news) + ;("https://www.aftenposten.no/rss/" news) + ;("https://www.nrk.no/toppsaker.rss" news) + + ;; Youtube + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCeh-pJYRZTBJDXMNZeWSUVA" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC_QIfHvN9auy2CoOdSfMWDw" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCD6VugMZKRhSyzWEWA9W2fg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UClOGLGPOqlAiLmOvXW5lKbw" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC4nJnJ-HO5vVbGlJ14rf5yg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCsvn_Po0SmunchJYOWpOxMg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCl_dlV_7ofr4qeP1drJQ-qg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC3ts8coMP645hZw9JSD3pqQ" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCtUbO6rBht0daVIOGML3c8w" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCJ8V9aiz50m6NVn0ix5v8RQ" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCEKJKJ3FO-9SFv5x5BzyxhQ" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCmu9PVIZBk-ZCi-Sk2F2utA" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCUzQJ3JBuQ9w-po4TXRJHiA" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCakAg8hC_RFJm4RI3DlD7SA" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCEbYhDd6c6vngsF5PQpFVWg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC3azLjQuz9s5qk76KEXaTvA" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCk2KE7yg0BwsJfr8Dp9ivUQ" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCSdma21fnJzgmPodhC9SJ3g" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCmtyQOKKmrMVaKuRXz02jbQ" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCah7IyEzRnRdttwDGDdy_gw" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCD6VugMZKRhSyzWEWA9W2fg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCL7DDQWP6x7wy0O6L5ZIgxg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCqp1yi_juq5JJuzKY71Hoag" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC1kBxkk2bcG78YBX7LMl9pQ" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UChl_NKOs1qqh_x7yJfaDpDw" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCTvH45HvnOzqXvfNJqdc3xg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCd-qVRcjoK9zjtDs_LRxSmw" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCsUablJrqdwCh83e55tBWPQ" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCXYejH-GyeQblhfNM01L-Rg" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCrv269YwJzuZL3dH5PCgxUw" youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCt7fwAhXDy3oNFTAzF2o8Pw" youtube) ; theneedledrop + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCnxQ8o9RpqxGF2oLHcCn9VQ" youtube) ; fantano + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCOjLfFE0TABS9bk05oH-kgw" youtube) ; patricia taxxon + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC9DkCKm4_VDztRRyge4mCJQ" youtube) ; amoeba records + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC2PA-AKmVpU6NKCGtZq_rKQ" youtube) ; philosophy tube + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC5qqBFOKTNAzIyE4g3SvuwQ" youtube) ; sleep deprived + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCyNtlmLB73-7gtlBz00XOQQ" youtube) ; folding ideas + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCgVm8xdaCcTFZWkJQ8NbEqA" youtube) ; ceicocat + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCIWEHR8n8GiLMWY8v7IP0Gg" youtube) ; mikasacus + ))) (provide 'packages) diff --git a/tweaks.el b/tweaks.el index 2a1580b..570d88c 100644 --- a/tweaks.el +++ b/tweaks.el @@ -100,6 +100,12 @@ ;; Calendar should start on Monday (setq calendar-week-start-day 1) +;; Don't move cursor position when scrolling +(setq scroll-preserve-screen-position 1) + +;; Display temporary buffers below the current one +(setq display-buffer-base-action nil) + ;; Auto-indent pasted code. (dolist (command '(yank yank-pop)) (eval