aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bard-emacs-modules/bard-emacs-completion.el5
-rw-r--r--bard-emacs-modules/bard-emacs-dired.el59
-rw-r--r--bard-emacs-modules/bard-emacs-org.el94
-rw-r--r--bard-emacs-modules/bard-emacs-prog.el48
-rw-r--r--bard-emacs-modules/bard-emacs-theme.el29
-rw-r--r--bard-emacs-modules/bard-emacs-ui.el74
-rw-r--r--bard-emacs-modules/bard-emacs-web.el102
-rw-r--r--bard-emacs-modules/bard-emacs-window.el150
-rw-r--r--bard-emacs-modules/bard-emacs-writing.el116
9 files changed, 324 insertions, 353 deletions
diff --git a/bard-emacs-modules/bard-emacs-completion.el b/bard-emacs-modules/bard-emacs-completion.el
index f66a8ab..c354179 100644
--- a/bard-emacs-modules/bard-emacs-completion.el
+++ b/bard-emacs-modules/bard-emacs-completion.el
@@ -32,7 +32,7 @@
;; minibuffer completion
(use-package vertico
:ensure t
- :init
+ :config
(vertico-mode 1))
(use-package marginalia
@@ -64,7 +64,6 @@
(add-to-list 'savehist-additional-variables 'corfu-history)))
(use-package minibuffer
- :ensure nil
:config
;;;; Completion styles
(setq completion-styles '(basic substring initials flex orderless))
@@ -82,6 +81,7 @@
(eglot (styles . (emacs22 substring orderless))))))
(use-package consult
+ :ensure t
:defer 2
:bind*
("M-g M-g" . consult-goto-line)
@@ -92,6 +92,7 @@
("M-s M-y" . consult-yank-pop)
("M-s M-o" . consult-outline)
("M-s M-l" . consult-line)
+ ("M-s M-k" . consult-kmacro)
:config
(setq consult-find-args
(concat "find . -not ( "
diff --git a/bard-emacs-modules/bard-emacs-dired.el b/bard-emacs-modules/bard-emacs-dired.el
index 0375417..41f8ee8 100644
--- a/bard-emacs-modules/bard-emacs-dired.el
+++ b/bard-emacs-modules/bard-emacs-dired.el
@@ -6,37 +6,38 @@
(use-package wdired
:ensure t)
-(define-key global-map (kbd "C-j") #'dired-jump)
-(add-hook 'org-mode-hook
- (lambda()
- (local-unset-key (kbd "C-j"))))
-
-(setq dired-guess-shell-alist-user ; those are the suggestions for ! and & in Dired
- '(("\\.\\(png\\|jpe?g\\|tiff\\)" "nsxiv" "feh" "xdg-open")
- ("\\.\\(mp[34]\\|m4a\\|ogg\\|flac\\|webm\\|mkv\\)" "mpv" "xdg-open")
- (".gif" "mpv --loop=inf")
- (".*" "xdg-open")))
-
-(add-hook 'dired-mode-hook #'dired-hide-details-mode)
-
-(add-hook 'dired-mode-hook
- (lambda()
- (define-key dired-mode-map (kbd "E") #'emms-add-dired)
- (define-key dired-mode-map (kbd "<tab>") #'dired-subtree-toggle)
- (define-key dired-mode-map (kbd "<backtab>") #'dired-subtree-cycle)))
-
-;; hook for attaching emails mode
-(add-hook 'dired-mode-hook #'turn-on-gnus-dired-mode)
+(use-package dired
+ :bind*
+ (("C-j" . dired-jump))
+ :bind (:map dired-mode-map
+ (("E" . emms-add-dired)
+ ("<tab>" . dired-subtree-toggle)
+ ("<backtab>" . dired-subtree-cycle)))
+ :config
+ (setq dired-guess-shell-alist-user ; those are the suggestions for ! and & in Dired
+ '(("\\.\\(png\\|jpe?g\\|tiff\\)" "nsxiv" "feh" "xdg-open")
+ ("\\.\\(mp[34]\\|m4a\\|ogg\\|flac\\|webm\\|mkv\\)" "mpv" "xdg-open")
+ (".gif" "mpv --loop=inf")
+ (".*" "xdg-open")))
+ :hook
+ ((dired-mode . dired-hide-details-mode)
+ ;; attachments for email through dired
+ (dired-mode . turn-on-gnus-dired-mode)))
(setq dired-dwim-target t)
;; Image dired
-(setq image-dired-thumbnail-storage 'standard)
-(setq image-dired-external-viewer "nsxiv")
-(setq image-dired-thumb-size 80)
-(setq image-dired-thumb-margin 2)
-(setq image-dired-thumb-relief 0)
-(setq image-dired-thumbs-per-row 4)
+(use-package image-dired
+ :bind
+ (:map dired-mode-map
+ ((")" . image-dired-dired-display-external)))
+ :config
+ (setq image-dired-thumbnail-storage 'standard)
+ (setq image-dired-external-viewer "nsxiv")
+ (setq image-dired-thumb-size 80)
+ (setq image-dired-thumb-margin 2)
+ (setq image-dired-thumb-relief 0)
+ (setq image-dired-thumbs-per-row 4))
;; Taken from https://superuser.com/a/176629
(defun bard/dired-do-command (command)
@@ -49,7 +50,3 @@ open and unsaved."
(find-file filename)
(call-interactively command))
(dired-get-marked-files))))
-
-
-;; (define-key image-dired-thumbnail-mode-map
-;; (kbd "<return>") #'image-dired-thumbnail-display-external)
diff --git a/bard-emacs-modules/bard-emacs-org.el b/bard-emacs-modules/bard-emacs-org.el
index e4b4cde..e68c773 100644
--- a/bard-emacs-modules/bard-emacs-org.el
+++ b/bard-emacs-modules/bard-emacs-org.el
@@ -5,6 +5,16 @@
(require 'ox)
(require 'org-habit)
+(use-package org-mode
+ :bind
+ (:map org-mode-map
+ ("C-M-a" . backward-paragraph)
+ ("C-M-e" . forward-paragraph)
+ ("C-c l" . org-store-link)
+ )
+ :bind
+ (("C-c c" . org-capture)))
+
;; Org Variables
(setq org-directory "~/Notes/denote/")
;; symlinked file to shorten denote file name in agenda buffers
@@ -13,10 +23,10 @@
(setq org-log-done 'time)
(setq org-structure-template-alist
'(("c" . "center")
- ("x" . "example")
- ("q" . "quote")
- ("v" . "verse")
- ("s" . "src")
+ ("x" . "example")
+ ("q" . "quote")
+ ("v" . "verse")
+ ("s" . "src")
("E" . "src emacs-lisp :results value code :lexical t") ; for code examples in notes
("t" . "src emacs-lisp :tangle FILENAME") ; tangle without making dir, below makes dir
("T" . "src emacs-lisp :tangle FILENAME :mkdirp yes")))
@@ -24,7 +34,6 @@
;; mainly for denote, org throws away a link that i might reuse later
(setq org-id-link-to-org-use-id t)
(setq org-link-keep-stored-after-insertion nil)
-(define-key org-mode-map (kbd "C-c l") #'org-store-link)
(use-package org-cliplink
:ensure t
@@ -65,8 +74,6 @@
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))))
-
-
;; Org Babel
(org-babel-do-load-languages
'org-babel-load-languages
@@ -80,18 +87,17 @@
:ensure t)
;; Calendar
-
-(with-eval-after-load 'calendar-mode
+(use-package calendar-mode
+ :config
(setq calendar-holidays (append calendar-holidays russian-holidays))
- (add-hook 'calendar-today-visible-hook 'calendar-mark-today)
- (add-hook 'calendar-today-visible-hook 'calendar-mark-holidays))
-
-(define-key global-map (kbd "C-c C") #'calendar)
+ :hook
+ (calendar-today-visible . calendar-mark-today)
+ (calendar-today-visible . calendar-mark-holidays))
;; Org todo keywords - changed to using hl-todo faces fixed by modus/ef themes
(setq org-todo-keywords
'((sequence "TODO(t)" "|" "DONE(d)" "KILLED(k)")
- (sequence "MEET(m)" "|" "MET(M)")))
+ (sequence "MEET(m)" "|" "MET(M)")))
;; Org Agenda Faces
(custom-set-faces '(org-agenda-structure ((t (:inherit bold :height 1.5 :family "Iosevka Comfy Motion")))))
@@ -134,33 +140,33 @@
;; Org Agenda
(setq org-agenda-custom-commands
`(("D" "Daily agenda and top priority tasks"
- ((tags-todo "!TODO"
- ((org-agenda-overriding-header "Unscheduled Tasks \n")
- (org-agenda-skip-function '(org-agenda-skip-entry-if 'timestamp))))
- (agenda "" ((org-agenda-span 1)
- (org-agenda-start-day nil)
- (org-deadline-warning-days 0)
- (org-scheduled-past-days 0)
- (org-agenda-day-face-function (lambda (date) 'org-agenda-date))
- (org-agenda-format-date "%A %-e %B %Y")
- (org-agenda-overriding-header "Today's agenda \n")))
- (agenda "" ((org-agenda-span 8)
- (org-deadline-warning-days 0)
- (org-agenda-skip-function '(org-agenda-skip-entry-if 'notscheduled))
- (org-agenda-overriding-header "Upcoming this week \n")))
- (tags "+wait"
- ((org-agenda-overriding-header "Low Priority Tasks\n")
- (org-agenda-skip-function '(org-agenda-skip-entry-if 'timestamp))))))
- ("Y" "Yearly view for all tasks"
- ((agenda "" ((org-agenda-span 365)
- (org-deadline-warning-days 2)
- (org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
- (org-agenda-overriding-header "Upcoming this Year\n")))))
- ("M" "Monthly view for all tasks"
- ((agenda "" ((org-agenda-span 31)
- (org-deadline-warning-days 2)
- (org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
- (org-agenda-overriding-header "Upcoming this month\n")))))))
+ ((tags-todo "!TODO"
+ ((org-agenda-overriding-header "Unscheduled Tasks \n")
+ (org-agenda-skip-function '(org-agenda-skip-entry-if 'timestamp))))
+ (agenda "" ((org-agenda-span 1)
+ (org-agenda-start-day nil)
+ (org-deadline-warning-days 0)
+ (org-scheduled-past-days 0)
+ (org-agenda-day-face-function (lambda (date) 'org-agenda-date))
+ (org-agenda-format-date "%A %-e %B %Y")
+ (org-agenda-overriding-header "Today's agenda \n")))
+ (agenda "" ((org-agenda-span 8)
+ (org-deadline-warning-days 0)
+ (org-agenda-skip-function '(org-agenda-skip-entry-if 'notscheduled))
+ (org-agenda-overriding-header "Upcoming this week \n")))
+ (tags "+wait"
+ ((org-agenda-overriding-header "Low Priority Tasks\n")
+ (org-agenda-skip-function '(org-agenda-skip-entry-if 'timestamp))))))
+ ("Y" "Yearly view for all tasks"
+ ((agenda "" ((org-agenda-span 365)
+ (org-deadline-warning-days 2)
+ (org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
+ (org-agenda-overriding-header "Upcoming this Year\n")))))
+ ("M" "Monthly view for all tasks"
+ ((agenda "" ((org-agenda-span 31)
+ (org-deadline-warning-days 2)
+ (org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
+ (org-agenda-overriding-header "Upcoming this month\n")))))))
(use-package orthodox-christian-new-calendar-holidays
:ensure t
@@ -168,14 +174,12 @@
(setq holiday-other-holidays (append holiday-other-holidays orthodox-christian-new-calendar-holidays))
(setq holiday-bahai-holidays nil
- holiday-christian-holidays nil
- holiday-islamic-holidays nil))
+ holiday-christian-holidays nil
+ holiday-islamic-holidays nil))
;;; Org capture
(setq org-capture-bookmark nil)
-(define-key global-map (kbd "C-c c") #'org-capture)
-
(require 'org-protocol)
(setq org-capture-templates
'(("i" "Important Stuff" entry (file+olp "~/Notes/denote/20240328T215727--todo__self.org" "Inbox" "Important Stuff")
diff --git a/bard-emacs-modules/bard-emacs-prog.el b/bard-emacs-modules/bard-emacs-prog.el
index 0eab0b7..f783eb0 100644
--- a/bard-emacs-modules/bard-emacs-prog.el
+++ b/bard-emacs-modules/bard-emacs-prog.el
@@ -26,33 +26,45 @@
;;; Code:
;; Input methods
-(global-set-key (kbd "<f10>") 'toggle-input-method)
+(use-package emacs
+ :bind
+ (("<f10>" . toggle-input-method)))
-(defun bard/common-modes-hook ()
- "Commonly used modes, bundled in one hook."
- (display-line-numbers-mode 1)
- (bard/set-up-whitespace-handling)
- (hl-todo-mode 1))
+(use-package prog-mode
+ :hook
+ ((prog-mode . display-line-numbers-mode)
+ (prog-mode . whitespace-mode)
+ (prog-mode . hl-todo-mode)))
-(add-hook 'prog-mode-hook 'bard/common-modes-hook)
-(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
-(add-hook 'haskell-mode-hook 'haskell-doc-mode)
-(add-hook 'haskell-mode-hook 'haskell-indent-mode)
+(use-package haskell-mode
+ :hook
+ ((haskell-mode . interactive-haskell-mode)
+ (haskell-mode . haskell-doc-mode)
+ (haskell-mode . haskell-indent-mode))
+ :bind
+ (:map haskell-mode-map ("C-`" . complete)))
;; CPP Mode
-
-(add-hook 'c++-mode 'bard/common-modes-hook)
-(setq-default c-basic-offset 4)
+(use-package prog-mode
+ :config
+ (setq-default c-basic-offset 4))
;;; Haskell
;; disable ghci popups
-(setq haskell-interactive-popup-errors nil)
+(use-package haskell-mode
+ :config
+ (setq haskell-interactive-popup-errors nil))
-(add-to-list 'exec-path "/home/bard/.ghcup/bin")
-(add-to-list 'exec-path "/home/bard/.cabal/bin")
-(add-to-list 'exec-path "/home/bard/.local/bin")
-(add-to-list 'exec-path "/home/bard/opt/")
+(use-package emacs
+ :config
+ (add-to-list 'exec-path "$HOME/.ghcup/bin")
+ (add-to-list 'exec-path "/home/bard/.cabal/bin")
+ (add-to-list 'exec-path "/home/bard/.local/bin")
+ (add-to-list 'exec-path "/home/bard/opt/")
+ (let ((bard/ghcup-path (expand-file-name "~/.ghcup/bin")))
+ (setenv "PATH" (concat bard/ghcup-path ":" (getenv "PATH")))
+ (add-to-list 'exec-path bard/ghcup-path)))
;;; Lisp
(use-package clojure-mode
diff --git a/bard-emacs-modules/bard-emacs-theme.el b/bard-emacs-modules/bard-emacs-theme.el
index ed66f34..2cbe367 100644
--- a/bard-emacs-modules/bard-emacs-theme.el
+++ b/bard-emacs-modules/bard-emacs-theme.el
@@ -26,8 +26,6 @@
;;; Commentary:
-;; commentary
-
;;; Code:
;; declare all themes as safe (i trust developers)
@@ -140,12 +138,21 @@ The exact color values are taken from the active Ef theme."
(("<f6>" . theme-buffet-a-la-carte))
:config
(setq theme-buffet-menu 'end-user)
- (setq theme-buffet--end-user
- '( :night (modus-vivendi ef-autumn ef-winter ef-dream ef-symbiosis)
- :morning (modus-operandi ef-cyprus ef-spring ef-frost)
- :afternoon (modus-operandi-tinted ef-arbutus ef-day ef-kassio ef-summer ef-elea-dark)
- :evening (modus-vivendi ef-elea-dark ef-melissa-dark ef-night ef-winter)))
- (theme-buffet-timer-hours 1))
+ (setq theme-buffet-end-user
+ '(:night
+ (ef-autumn ef-duo-dark ef-night ef-winter ef-dark)
+ :twilight
+ (ef-bio ef-cherie modus-vivendi)
+ :morning
+ (ef-elea-light ef-maris-light ef-spring)
+ :day
+ (ef-frost ef-light ef-trio-light modus-operandi)
+ :afternoon
+ (ef-cyprus ef-arbutus ef-day ef-duo-light ef-kassio ef-melissa-light ef-summer modus-operandi-tinted)
+ :evening
+ (ef-elea-dark ef-maris-dark ef-melissa-dark ef-symbiosis ef-trio-dark)))
+ (theme-buffet-timer-hours 1)
+ (theme-buffet-mode t))
;;;; Fonts
(use-package fontaine
@@ -164,6 +171,12 @@ The exact color values are taken from the active Ef theme."
:mode-line-active-height 130
:mode-line-inactive-height 130
)
+ (super-small
+ :inherit small
+ :default-family "Unifont"
+ :default-height 100
+ :mode-line-active-height 100
+ :mode-line-inactive-height 100)
(medium
:inherit small
:default-height 140
diff --git a/bard-emacs-modules/bard-emacs-ui.el b/bard-emacs-modules/bard-emacs-ui.el
index 228ee8e..d18b593 100644
--- a/bard-emacs-modules/bard-emacs-ui.el
+++ b/bard-emacs-modules/bard-emacs-ui.el
@@ -22,15 +22,11 @@
;;; Code:
-;; Variables
-(setq display-line-numbers-type 'relative)
-
-;; Whitespace, used in bard-emacs-lang.el
-(defun bard/set-up-whitespace-handling ()
- (interactive)
- (whitespace-mode 1))
-
-(setq whitespace-style '(face tabs spaces trailing space-before-tab newline indentation empty space-after-tab space-mark tab-mark))
+;; Generic variables for modes
+(use-package emacs
+ :config
+ (setq display-line-numbers-type 'relative)
+ (setq whitespace-style '(face tabs spaces trailing space-before-tab newline indentation empty space-after-tab space-mark tab-mark)))
;; display line numbers custom mode
(define-minor-mode bard/display-line-numbers-mode
@@ -71,66 +67,6 @@
:init
(which-key-mode 1))
-;;; Tab bars
-;; ;; taken from https://www.jamescherti.com/emacs-tab-bar-vim-style-colors/
-;; (defun bard/tab-bar-vim-name-format-function (tab i)
-;; "Add a space on the sides of every tab."
-;; (let ((current-p (eq (car tab) 'current-tab)))
-;; (propertize
-;; (concat " "
-;; (if tab-bar-tab-hints (format "%d " i) "")
-;; (alist-get 'name tab)
-;; (or (and tab-bar-close-button-show
-;; (not (eq tab-bar-close-button-show
-;; (if current-p 'non-selected 'selected)))
-;; tab-bar-close-button)
-;; "")
-;; " ")
-;; 'face (funcall tab-bar-tab-face-function tab))))
-
-;; (defun bard/tab-bar-vim-like-colors ()
-;; "Apply Vim-like color themes to Emacs tab bars."
-;; (let* ((fallback-light "white")
-;; (fallback-dark "#333333")
-;; (bg-default (or (face-attribute 'default :background) fallback-light))
-;; (fg-default (or (face-attribute 'default :foreground) fallback-dark))
-;; (bg-modeline-inactive (or (face-attribute 'mode-line-inactive :background)
-;; fallback-dark))
-;; (fg-modeline-inactive (or (face-attribute 'mode-line-inactive :foreground)
-;; fallback-light))
-;; (bg-tab-inactive bg-modeline-inactive)
-;; (fg-tab-inactive fg-modeline-inactive)
-;; (fg-tab-active fg-default)
-;; (bg-tab-active bg-default))
-;; (setq tab-bar-tab-name-format-function #'bard/tab-bar-vim-name-format-function)
-;; (setq tab-bar-format '(tab-bar-format-tabs tab-bar-separator))
-;; (setq tab-bar-separator "\u200B") ;; Zero width space to fix color bleeding
-;; (setq tab-bar-tab-hints nil) ;; Tab numbers of the left of the label
-;; (setq tab-bar-new-button-show nil)
-;; (setq tab-bar-close-button-show nil)
-;; (setq tab-bar-auto-width nil)
-;; (custom-set-faces
-;; ;; The tab bar's appearance
-;; `(tab-bar
-;; ((t (:background ,bg-tab-inactive
-;; :foreground ,fg-tab-inactive
-;; :box (:line-width 3 :color ,bg-tab-inactive :style nil)))))
-;; ;; Inactive tabs
-;; `(tab-bar-tab-inactive
-;; ((t (:background ,bg-tab-inactive
-;; :foreground ,fg-tab-inactive
-;; :box (:line-width 3 :color ,bg-tab-inactive :style nil)))))
-;; ;; Active tab
-;; `(tab-bar-tab
-;; ((t (:background ,bg-tab-active :foreground ,fg-tab-active
-;; :box (:line-width 3 :color ,bg-tab-active :style nil))))))))
-
-;; ;; Customize the appearance of the tab bar
-;; ;; Make sure to load your theme using 'load-theme' before
-;; ;; calling 'bard/tab-bar-vim-like-colors'.
-;; (tab-bar-mode 1)
-;; (bard/tab-bar-vim-like-colors)
-
(provide 'bard-emacs-ui)
;;; bard-emacs-ui.el ends here
diff --git a/bard-emacs-modules/bard-emacs-web.el b/bard-emacs-modules/bard-emacs-web.el
index f5cff6b..62a471e 100644
--- a/bard-emacs-modules/bard-emacs-web.el
+++ b/bard-emacs-modules/bard-emacs-web.el
@@ -1,27 +1,27 @@
;;; IRC
(use-package circe
- :ensure t)
-
-(setq auth-sources '("~/.authinfo.gpg"))
-
-(defun my-fetch-password (&rest params)
- (require 'auth-source)
- (let ((match (car (apply 'auth-source-search params))))
- (if match
- (let ((secret (plist-get match :secret)))
- (if (functionp secret)
- (funcall secret)
- secret))
- (error "Password not found for %S" params))))
-
-(defun my-nickserv-password (server)
- (my-fetch-password :user "bardman" :machine "irc.libera.chat"))
-
-(setq circe-network-options
- '(("Libera Chat"
- :nick "bardman"
- :channels ("#emacs" "##anime" "#gentoo")
- :nickserv-password my-nickserv-password)))
+ :ensure t
+ :config
+ (setq auth-sources '("~/.authinfo.gpg"))
+
+ (defun my-fetch-password (&rest params)
+ (require 'auth-source)
+ (let ((match (car (apply 'auth-source-search params))))
+ (if match
+ (let ((secret (plist-get match :secret)))
+ (if (functionp secret)
+ (funcall secret)
+ secret))
+ (error "Password not found for %S" params))))
+
+ (defun my-nickserv-password (server)
+ (my-fetch-password :user "bardman" :machine "irc.libera.chat"))
+
+ (setq circe-network-options
+ '(("Libera Chat"
+ :nick "bardman"
+ :channels ("#emacs" "##anime" "#gentoo")
+ :nickserv-password my-nickserv-password))))
;;; RSS Feeds
(use-package elfeed
@@ -47,34 +47,35 @@
;;; Web Browsing (EWW and Firefox/Librewolf)
-(setq browse-url-browser-function 'eww-browse-url)
-(setq browse-url-secondary-browser-function 'browse-url-default-browser)
-
-(setq
- browse-url-handlers
- '(("wikipedia\\.org" . eww-browse-url)
- ;; ("github" . browse-url-chromium)
- ("github" . browse-url-default-browser)
- ("youtube.com" . browse-url-default-browser)
- ("reddit.com" . browse-url-default-browser)))
-
-;; shr optimizations
-(setq shr-use-colors nil)
-(setq shr-use-fonts nil)
-(setq shr-max-image-proportion 0.6)
-(setq shr-image-animate nil)
-(setq shr-width fill-column)
-(setq shr-max-width fill-column)
-(setq shr-discard-aria-hidden t)
-(setq shr-cookie-policy nil)
-
-;; eww
-(setq eww-search-prefix "https://duckduckgo.com/html/?q=")
-(setq eww-history-limit 150)
-(setq eww-use-external-browser-for-content-type
+(use-package eww
+ :config
+ (setq browse-url-browser-function 'eww-browse-url)
+ (setq browse-url-secondary-browser-function 'browse-url-default-browser)
+
+ (setq browse-url-handlers
+ '(("wikipedia\\.org" . eww-browse-url)
+ ;; ("github" . browse-url-chromium)
+ ("github" . browse-url-default-browser)
+ ("youtube.com" . browse-url-default-browser)
+ ("reddit.com" . browse-url-default-browser)))
+
+ ;; shr optimizations
+ (setq shr-use-colors nil)
+ (setq shr-use-fonts nil)
+ (setq shr-max-image-proportion 0.6)
+ (setq shr-image-animate nil)
+ (setq shr-width fill-column)
+ (setq shr-max-width fill-column)
+ (setq shr-discard-aria-hidden t)
+ (setq shr-cookie-policy nil)
+
+ ;; eww
+ (setq eww-search-prefix "https://duckduckgo.com/html/?q=")
+ (setq eww-history-limit 150)
+ (setq eww-use-external-browser-for-content-type
"\\`\\(video/\\|audio\\)")
-
-(global-set-key (kbd "C-c w") 'eww)
+ :bind
+ ("C-c w" . eww))
;; librewolf open browser
@@ -102,8 +103,5 @@ instead of `browse-url-new-window-flag'."
"librewolf"
(list url))))
-;; remote connections with emacs
-(use-package tramp)
-
(provide 'bard-emacs-web)
;;; bard-emacs-web.el ends here
diff --git a/bard-emacs-modules/bard-emacs-window.el b/bard-emacs-modules/bard-emacs-window.el
index 2dc63e0..8ee8d00 100644
--- a/bard-emacs-modules/bard-emacs-window.el
+++ b/bard-emacs-modules/bard-emacs-window.el
@@ -1,17 +1,23 @@
(require 'bard-window)
-(setq focus-follows-mouse t)
-(setq mouse-autoselect-window t)
-(setq window-combination-resize t)
-(setq even-window-sizes 'height-only)
-(setq window-sides-vertical nil)
-(setq switch-to-buffer-in-dedicated-window 'pop)
-(setq split-height-threshold 80)
-(setq split-width-threshold 125)
-(setq window-min-height 3)
-(setq window-min-width 30)
+(use-package emacs
+ ;; configuration for window splits/window sizes
+ :config
+ (setq focus-follows-mouse t)
+ (setq mouse-autoselect-window t)
+ (setq window-combination-resize t)
+ (setq even-window-sizes 'height-only)
+ (setq window-sides-vertical nil)
+ (setq switch-to-buffer-in-dedicated-window 'pop)
+ (setq split-height-threshold 80)
+ (setq split-width-threshold 125)
+ (setq window-min-height 3)
+ (setq window-min-width 30))
-(define-key global-map (kbd "C-x f") #'other-frame-prefix)
+(use-package emacs
+ :bind
+ (("C-x f" . other-window-prefix)
+ ("C-c TAB" . other-frame-prefix)))
(use-package eyebrowse
:ensure t
@@ -27,10 +33,9 @@
("M-6" . eyebrowse-switch-to-window-config-6)
("M-7" . eyebrowse-switch-to-window-config-7)
("M-8" . eyebrowse-switch-to-window-config-8)
- ("M-9" . eyebrowse-switch-to-window-config-9))
- )
+ ("M-9" . eyebrowse-switch-to-window-config-9)))
-(use-package emacs
+(use-package windmove
:bind*
(("C-M-<up>" . windmove-up)
("C-M-<right>" . windmove-right)
@@ -41,65 +46,68 @@
("C-M-S-<down>" . windmove-swap-states-down)
("C-M-S-<left>" . windmove-swap-states-left)))
-(setq display-buffer-alist
- `(("\\`\\*Async Shell Command\\*\\'"
- (display-buffer-no-window))
- ("\\`\\*\\(Warnings\\|Compile-Log\\)\\*\\'"
- (display-buffer-no-window)
- (allow-no-window . t))
- ("\\*\\(Calendar\\|wclock\\).*"
- (display-buffer-reuse-mode-window display-buffer-below-selected)
- (dedicated . t)
- (window-height . fit-window-to-buffer))
- ("\\magit: .*"
- (display-buffer-same-window)
- (inhibit-same-window . nil)
- (dedicated . t))
- ("\\*Org Agenda\\*"
- (display-buffer-same-window)
- (inhibit-same-window . nil)
- (dedicated . t))
- ("\\*Embark Actions\\*"
- (display-buffer-reuse-mode-window display-buffer-below-selected)
- (window-height . fit-window-to-buffer)
- (window-parameters . ((no-other-window . t)
- (mode-line-format . none))))
- ("\\(\\*Capture\\*\\|CAPTURE-.*\\)"
- (display-buffer-reuse-mode-window display-buffer-below-selected))
- ;; error stuff
- ((or . ((derived-mode . flymake-diagnostics-buffer-mode)
- (derived-mode . flymake-project-diagnostics-mode)
- (derived-mode . messages-buffer-mode)
- (derived-mode . backtrace-mode)
- (derived-mode . cider-stacktrace-mode)))
- (display-buffer-reuse-mode-window display-buffer-at-bottom)
- (window-height . 0.3)
- (dedicated . t)
- (preserve-size . (t . t)))
-
- ((or . ((derived-mode . occur-mode)
- (derived-mode . grep-mode)
- (derived-mode . Man-mode)
- (derived-mode . Buffer-menu-mode)
- (derived-mode . log-view-mode)
- (derived-mode . help-mode) ; See the hooks for `visual-line-mode'
- "\\*\\(|Buffer List\\|Occur\\|Man.*\\|Org Select\\|vc-change-log\\|eldoc.*\\).*"
- prot-window-shell-or-term-p
- ,world-clock-buffer-name))
- (prot-window-display-buffer-below-or-pop)
- (body-function . prot-window-select-fit-size))
- ))
+(use-package emacs
+ :config
+ (setq display-buffer-alist
+ `(("\\`\\*Async Shell Command\\*\\'"
+ (display-buffer-no-window))
+ ("\\`\\*\\(Warnings\\|Compile-Log\\|tex-shell\\)\\*\\'"
+ (display-buffer-no-window)
+ (allow-no-window . t))
+ ("\\*\\(Calendar\\|wclock\\).*"
+ (display-buffer-reuse-mode-window display-buffer-below-selected)
+ (dedicated . t)
+ (window-height . fit-window-to-buffer))
+ ("\\magit: .*"
+ (display-buffer-same-window)
+ (inhibit-same-window . nil)
+ (dedicated . t))
+ ("\\*Org Agenda\\*"
+ (display-buffer-same-window)
+ (inhibit-same-window . nil)
+ (dedicated . t))
+ ("\\*Embark Actions\\*"
+ (display-buffer-reuse-mode-window display-buffer-below-selected)
+ (window-height . fit-window-to-buffer)
+ (window-parameters . ((no-other-window . t)
+ (mode-line-format . none))))
+ ("\\(\\*Capture\\*\\|CAPTURE-.*\\)"
+ (display-buffer-reuse-mode-window display-buffer-below-selected))
+ ;; error stuff
+ ((or . ((derived-mode . flymake-diagnostics-buffer-mode)
+ (derived-mode . flymake-project-diagnostics-mode)
+ (derived-mode . messages-buffer-mode)
+ (derived-mode . backtrace-mode)
+ (derived-mode . cider-stacktrace-mode)))
+ (display-buffer-reuse-mode-window display-buffer-at-bottom)
+ (window-height . 0.3)
+ (dedicated . t)
+ (preserve-size . (t . t)))
-(winner-mode 1)
-(let ((map global-map))
- (define-key map (kbd "C-x <right>") #'winner-redo)
- (define-key map (kbd "C-x <left>") #'winner-undo)
- (define-key map (kbd "C-x C-n") #'next-buffer)
- (define-key map (kbd "C-x C-p") #'previous-buffer)
- (define-key map (kbd "C-x <up>") #'next-buffer)
- (define-key map (kbd "C-x <down>") #'previous-buffer))
+ ((or . ((derived-mode . occur-mode)
+ (derived-mode . grep-mode)
+ (derived-mode . Man-mode)
+ (derived-mode . Buffer-menu-mode)
+ (derived-mode . log-view-mode)
+ (derived-mode . help-mode) ; See the hooks for `visual-line-mode'
+ "\\*\\(|Buffer List\\|Occur\\|Man.*\\|Org Select\\|vc-change-log\\|eldoc.*\\).*"
+ prot-window-shell-or-term-p
+ ,world-clock-buffer-name))
+ (prot-window-display-buffer-below-or-pop)
+ (body-function . prot-window-select-fit-size))
+ ))
+ )
-(define-key global-map (kbd "C-x w") #'delete-frame)
+(use-package winner-mode
+ :init
+ (winner-mode 1)
+ :bind
+ (("C-x <right>" . winner-redo)
+ ("C-x <left>" . winner-undo)
+ ("C-x C-n" . next-buffer)
+ ("C-x C-p" . previous-buffer)
+ ("C-x <up>" . next-buffer)
+ ("C-x <down>" . previous-buffer)))
(provide 'bard-emacs-window)
;;; bard-emacs-window.el ends here
diff --git a/bard-emacs-modules/bard-emacs-writing.el b/bard-emacs-modules/bard-emacs-writing.el
index f57b562..13043ea 100644
--- a/bard-emacs-modules/bard-emacs-writing.el
+++ b/bard-emacs-modules/bard-emacs-writing.el
@@ -1,26 +1,21 @@
;;; Sentence size
(setq sentence-end-double-space nil)
-(define-key org-mode-map (kbd "C-M-a") #'backward-paragraph)
-(define-key org-mode-map (kbd "C-M-e") #'forward-paragraph)
;;; Keyboard things
(setq default-input-method "cyrillic-yawerty")
(setq default-transient-input-method "cyrillic-yawerty")
;; Tab settings
-(setq tab-always-indent 'complete)
-(setq tab-first-completion 'word-or-paren-or-punct)
-(setq-default tab-width 4
- indent-tabs-mode nil)
+(use-package emacs
+ :config
+ (setq tab-always-indent 'complete)
+ (setq tab-first-completion 'word-or-paren-or-punct)
+ (setq-default tab-width 4
+ indent-tabs-mode nil))
(use-package electric
:hook
- (prog-mode . electric-indent-local-mode)
- :config
- ;; only indents for programming
- (electric-pair-mode -1)
- (electric-quote-mode -1)
- (electric-indent-mode -1))
+ (prog-mode . electric-indent-local-mode))
(use-package paren
:hook (prog-mode . show-paren-local-mode)
@@ -33,8 +28,8 @@
;; Altcaps
(use-package altcaps
:ensure t
- :config
- (define-key global-map (kbd "C-x C-a") #'altcaps-dwim))
+ :bind
+ (("C-x C-a" . altcaps-dwim)))
;; snippets
@@ -59,9 +54,10 @@
(cons #'tempel-expand
completion-at-point-functions)))
- (add-hook 'conf-mode-hook 'tempel-setup-capf)
- (add-hook 'prog-mode-hook 'tempel-setup-capf)
- (add-hook 'text-mode-hook 'tempel-setup-capf)
+ :hook
+ ((conf-mode . tempel-setup-capf)
+ (prog-mode . tempel-setup-capf)
+ (text-mode . tempel-setup-capf))
:config
(setq tempel-path "~/.emacs.d/tempel-snippets.el"))
@@ -72,22 +68,23 @@
(setq denote-directory "~/Notes/denote/")
(setq denote-journal-extras-directory "~/Notes/journal")
(setq denote-known-keywords
- '("emacs"
- "linux"
- "programming"
- "org"
- "school"
- "language"
- "history"
- "biology"
- ))
+ '("emacs"
+ "linux"
+ "programming"
+ "org"
+ "school"
+ "language"
+ "history"
+ "biology"
+ ))
(denote-rename-buffer-mode 1)
- (add-hook 'dired-mode-hook #'denote-dired-mode)
+ :hook
+ ((dired-mode . denote-dired-mode)
- ;; journalling with timer
- (add-hook 'denote-journal-extras-hook (lambda ()
- (tmr "10" "Journalling")
- (bard/scroll-center-cursor-mode t)))
+ ;; journalling with timer
+ (denote-journal-extras-hook . (lambda ()
+ (tmr "10" "Journalling")
+ (bard/scroll-center-cursor-mode t))))
:bind
(("C-c n n" . denote-open-or-create)
@@ -117,22 +114,24 @@
;;; Focus mode for writing
;; Center line scrolling for focused writing
-(define-minor-mode bard/scroll-center-cursor-mode
- "Toggle centered cursor scrolling behavior."
- :init-value nil
- :lighter " S="
- :global nil
- (if bard/scroll-center-cursor-mode
- (setq-local scroll-margin (* (frame-height) 2)
- scroll-conservatively 0
- maximum-scroll-margin 0.5)
- (dolist (local '(scroll-preserve-screen-position
- scroll-conservatively
- maximum-scroll-margin
- scroll-margin))
- (kill-local-variable `,local))))
-
-(define-key global-map (kbd "C-c L") #'bard/scroll-center-cursor-mode)
+(use-package emacs
+ :config
+ (define-minor-mode bard/scroll-center-cursor-mode
+ "Toggle centered cursor scrolling behavior."
+ :init-value nil
+ :lighter " S="
+ :global nil
+ (if bard/scroll-center-cursor-mode
+ (setq-local scroll-margin (* (frame-height) 2)
+ scroll-conservatively 0
+ maximum-scroll-margin 0.5)
+ (dolist (local '(scroll-preserve-screen-position
+ scroll-conservatively
+ maximum-scroll-margin
+ scroll-margin))
+ (kill-local-variable `,local))))
+ :bind
+ (("C-c L" . bard/scroll-center-cursor-mode)))
(use-package olivetti
:ensure t
@@ -140,8 +139,9 @@
(setq olivetti-minimum-body-width 100)
(setq olivetti-recall-visual-line-mode-entry-state t)
:hook
- ((olivetti-mode-on-hook . (lambda () (olivetti-set-width 100)))
- (olivetti-mode-hook . (lambda () (bard/scroll-center-cursor-mode t)))))
+ ((olivetti-mode-on . (lambda () (olivetti-set-width 100)))
+ ;; (olivetti-mode . (lambda () (bard/scroll-center-cursor-mode t)))
+ ))
;; narrowing and focus mode
(use-package logos
@@ -160,17 +160,17 @@
(setq logos-outlines-are-pages t)
(setq logos-outline-regexp-alist
- `((emacs-lisp-mode . "^;;;+ ")
+ `((emacs-lisp-mode . "^;;;+ ")
(org-mode . "^\\* +")
(t . ,(or outline-regexp logos--page-delimiter))))
(setq-default logos-hide-cursor nil
- logos-hide-mode-line nil
- logos-hide-header-line t
- logos-hide-buffer-boundaries t
- logos-hide-fringe t
- logos-variable-pitch t
- logos-olivetti t)
+ logos-hide-mode-line nil
+ logos-hide-header-line t
+ logos-hide-buffer-boundaries t
+ logos-hide-fringe t
+ logos-variable-pitch t
+ logos-olivetti t)
(let ((map global-map))
(define-key map [remap narrow-to-region] #'logos-narrow-dwim)
(define-key map [remap forward-page] #'logos-forward-page-dwim)
@@ -184,10 +184,12 @@
(unless (derived-mode-p 'prog-mode)
(recenter 1))) ; Use 0 for the absolute top
- (add-hook 'logos-page-motion-hook #'bard/logos--recenter-top))
+ :hook
+ ((logos-page-motion . bard/logos--recenter-top)))
(use-package pdf-tools
:ensure t
+ :defer t
:config
(pdf-tools-install))