summaryrefslogtreecommitdiff
path: root/.config/emacs/bd-default.el
blob: 7d863475a4db85669d4c79bb63a55ec206a058cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
;; -*- lexical-binding: t; -*-


;;;; packages
(require 'package)
(add-to-list 'load-path (expand-file-name "~/.guix-profile/share/emacs/site-lisp"))
(guix-emacs-autoload-packages)

(require 'use-package-ensure)
(setopt use-package-always-ensure t)
;; (setq use-package-verbose t) ; for debugging


(setenv "PATH" (format "%s:%s" (expand-file-name "~/Personal/scripts/") (getenv "PATH")))


;;;; functions
(defun clamp (lower-bound upper-bound value)
  (max lower-bound (min value upper-bound)))

(defun request-sudo ()
  "Uses TRAMP to edit currently opened file as root."
  (interactive)
  (when buffer-file-name
    (find-alternate-file
     (concat "/sudo:root@localhost:"
             buffer-file-name))))

(defun rip-video ()
  "If region, open SEARCH with mpv in --full-screen. Else,
open URL at point."
  (interactive)
  (let ((URL-OR-SEARCH
         (if (use-region-p)
             (buffer-substring (mark) (point))
           (shr-url-at-point nil))))
    (message "Ludu %s" URL-OR-SEARCH)
    (start-process-shell-command "rip-video" nil (concat "rip-video " URL-OR-SEARCH))))


;;;; defaults
(global-unset-key (kbd "C-z"))
(global-unset-key (kbd "C-x C-z")) ; terrible binding

(global-set-key (kbd "C-z =") 'text-scale-increase)
(global-set-key (kbd "C-z -") 'text-scale-decrease)

(setopt inhibit-startup-message t)
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)

(require 'display-line-numbers)
(global-display-line-numbers-mode)
(global-visual-line-mode t)
(setopt display-line-numbers-type 'relative)
(global-hl-line-mode 1)

(global-auto-revert-mode 1)
(winner-mode 1)

;; prompts
(setopt use-short-answers t)
(setopt vc-follow-symlinks t)

(setopt kill-whole-line t)

;; allow one side window per side of frame
(setopt window-sides-slots '(1 1 1 1))

;; do not show async command buffers by default
(add-to-list 'display-buffer-alist
             (cons "\\*Async Shell Command\\*.*" (cons #'display-buffer-no-window nil)))

(setopt scroll-up-aggressively '0.0
        scroll-down-aggressively '0.0)

;; move backups to tmp folder
(setopt backup-directory-alist `(("." . ,(expand-file-name "tmp/backups/" user-emacs-directory))))
(make-directory (expand-file-name "tmp/auto_saves/" user-emacs-directory) t)
;; move auto-saves to tmp folder
(setopt auto-save-list-file-prefix (expand-file-name "tmp/auto_saves/sessions/" user-emacs-directory)
        auto-save-file-transforms `((".*" ,(expand-file-name "tmp/auto_saves/" user-emacs-directory) t)))


;;;; built-in packages
(use-package newsticker
  :demand t
  :bind (("C-z C-n" . newsticker-show-news)
         :map newsticker-treeview-item-mode-map
         ("C-j" . rip-video))
  :custom
  (newsticker-url-list-defaults nil)
  (newsticker-automatically-mark-items-as-old nil)
  (newsticker-url-list '(("Ambrose and Elsewhere" "https://jamesenge.com/engeblog/feed" nil nil nil)
                         ("James Enge Mastodon" "https://mastodon.sdf.org/@jamesenge.rss" nil nil nil)
                         ("Tales From the Magician's Skull" "https://goodman-games.com/tftms/category/book-reviews/feed" nil nil nil)
                         ("Parabola GNU/Linux-libre" "https://www.parabola.nu/feeds/news/" nil nil nil)
                         ("suckless.org news" "https://suckless.org/atom.xml" nil nil nil)
                         ("Mental Outlaw" "https://vid.puffyan.us/feed/channel/UC7YOGHUfC1Tb6E4pudI9STA" nil nil nil)
                         ("Luke Smith" "https://vid.puffyan.us/feed/channel/UC2eYFnH61tmytImy1mTYvhA" nil nil nil)
                         ("Brent Westbrook" "https://yewtu.be/feed/channel/UC0PBefyEK7qQ7HN325nUamQ" nil nil nil)
                         ("Bugswriter" "https://yewtu.be/feed/channel/UCngn7SVujlvskHRvRKc1cTw" nil nil nil)
                         ("Protesilaos Stravrou" "https://yewtu.be/feed/playlist/PL8Bwba5vnQK14z96Gil86pLMDO2GnOhQ6" nil nil nil)))
  ;; may require ./newsticker/groups to be cleared
  (newsticker-groups '("Feeds"
                       ("READING" "James Enge Mastodon" "Tales From the Magician's Skull" "Ambrose and Elsewhere")
                       ("TECH" "Parabola GNU/Linux-libre" "suckless.org news")
                       ("VIDEO" "Mental Outlaw" "Luke Smith" "Brent Westbrook" "Bugswriter" "Protesilaos Stravrou"))))

(use-package eww
  :demand t
  :custom
  (eww-auto-rename-buffer 'title))

(use-package image-dired
  :bind (("C-c d" . dired-jump))
  :custom
  (dired-listing-switches "-alh")
  (dired-guess-shell-alist-user
   `((,(regexp-opt '(".mkv" ".mov" ".mp4" ".webm" ".m4v" ".wav" ".mp3" ".opus" ".ogv" ".flac")) "mpv &")
     (,(regexp-opt '(".pdf")) "zathura &"))))

(use-package erc
  :config
  (defalias 'erc 'erc-tls)
  :custom
  (erc-lurker-threshold-time 3600)
  (erc-server "irc.libera.chat")
  (erc-nick "Isaz")
  (erc-kill-buffer-on-part t)
  (erc-autojoin-channels-alist '(("irc.libera.chat" "#parabola" "#emacs" "#guix"))))