diff options
| -rw-r--r-- | bard-emacs-modules/bard-emacs-completion.el | 5 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-dired.el | 59 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-org.el | 94 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-prog.el | 48 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-theme.el | 29 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-ui.el | 74 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-web.el | 102 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-window.el | 150 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-writing.el | 116 |
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)) |
