refactor: organize emacs config
Signed-off-by: Lucas Sta Maria <lucas@priime.dev>
This commit is contained in:
parent
5997e83b32
commit
7c75810123
7 changed files with 220 additions and 175 deletions
|
@ -44,7 +44,16 @@
|
||||||
];
|
];
|
||||||
.config/bspwm/bspwmrc;
|
.config/bspwm/bspwmrc;
|
||||||
.config/sxhkd/sxhkdrc;
|
.config/sxhkd/sxhkdrc;
|
||||||
.emacs.d/init.el;
|
.emacs.d/[
|
||||||
|
init.el,
|
||||||
|
include/[
|
||||||
|
general.el,
|
||||||
|
misc.el,
|
||||||
|
orgconfig.el,
|
||||||
|
mu4econfig.el,
|
||||||
|
racket.el
|
||||||
|
]
|
||||||
|
];
|
||||||
.config/picom.conf;
|
.config/picom.conf;
|
||||||
.config/zathura/zathurarc;
|
.config/zathura/zathurarc;
|
||||||
.config/dunst/dunstrc;
|
.config/dunst/dunstrc;
|
||||||
|
|
60
.emacs.d/include/general.el
Normal file
60
.emacs.d/include/general.el
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
;;; general.el --- General configuration settings.
|
||||||
|
;;; Commentary:
|
||||||
|
;; General configuration for Emacs.
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'nano-theme)
|
||||||
|
|
||||||
|
(setq inhibit-startup-message t
|
||||||
|
visible-bell nil)
|
||||||
|
|
||||||
|
;; Backups
|
||||||
|
(setq make-backup-files nil)
|
||||||
|
(rassq-delete-all 'auto-save-mode auto-mode-alist)
|
||||||
|
|
||||||
|
;; UI
|
||||||
|
(menu-bar-mode -1)
|
||||||
|
(tool-bar-mode -1)
|
||||||
|
(scroll-bar-mode -1)
|
||||||
|
|
||||||
|
;; Line
|
||||||
|
(global-display-line-numbers-mode 1)
|
||||||
|
(hl-line-mode -1)
|
||||||
|
(setq line-number-mode t)
|
||||||
|
(setq column-number-mode t)
|
||||||
|
|
||||||
|
;; Tabs
|
||||||
|
(setq-default tab-width 2)
|
||||||
|
|
||||||
|
;; Cursor
|
||||||
|
(blink-cursor-mode 1)
|
||||||
|
|
||||||
|
;; Font
|
||||||
|
(defvar font-size 10)
|
||||||
|
(defvar font-family "JetBrains Mono SemiBold")
|
||||||
|
(set-frame-font (format "%s %d" font-family font-size))
|
||||||
|
|
||||||
|
;; Use spaces instead of tabs
|
||||||
|
(setq-default indent-tabs-mode nil)
|
||||||
|
|
||||||
|
;; Column width
|
||||||
|
(setq fill-column 80)
|
||||||
|
|
||||||
|
;; Directional window moving
|
||||||
|
(windmove-default-keybindings)
|
||||||
|
|
||||||
|
;; Auto file refresh
|
||||||
|
(global-auto-revert-mode t)
|
||||||
|
|
||||||
|
;; Theme
|
||||||
|
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
|
||||||
|
(load-theme 'nano t)
|
||||||
|
(nano-light)
|
||||||
|
|
||||||
|
;; Keybindings
|
||||||
|
(global-set-key (kbd "C-M-j") (lambda () (interactive) (scroll-up 1)))
|
||||||
|
(global-set-key (kbd "C-M-k") (lambda () (interactive) (scroll-down 1)))
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'general)
|
||||||
|
;;; general.el ends here
|
36
.emacs.d/include/misc.el
Normal file
36
.emacs.d/include/misc.el
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
;;; misc.el --- Miscellaneous configuration for packages.
|
||||||
|
;;; Commentary:
|
||||||
|
;; Miscellaneous configuration for packages. If a package doesn't
|
||||||
|
;; necessarily require its own configuration file (its configuration could be
|
||||||
|
;; short), then it belongs here.
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'git-gutter)
|
||||||
|
(require 'elfeed)
|
||||||
|
|
||||||
|
;; Git Gutter
|
||||||
|
(global-git-gutter-mode +1)
|
||||||
|
|
||||||
|
;; Elfeed
|
||||||
|
(setq elfeed-feeds
|
||||||
|
'(("https://edwardwibowo.com/rss.xml" blog)
|
||||||
|
("https://priime.dev/feed.xml" blog)
|
||||||
|
("https://fasterthanli.me/index.xml" blog)
|
||||||
|
("https://blog.cleancoder.com/atom.xml" blog)))
|
||||||
|
|
||||||
|
;; Bind Magit
|
||||||
|
(global-set-key (kbd "C-c g g") 'magit)
|
||||||
|
|
||||||
|
;; Web configuration
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.jsx?$" . web-mode))
|
||||||
|
(setq web-mode-content-types-alist '(("jsx" . "\\.js[x]?\\")))
|
||||||
|
(setq web-mode-markup-indent-offset 2)
|
||||||
|
|
||||||
|
;; Rust LSP configuration
|
||||||
|
(setq lsp-rust-analyzer-cargo-watch-enable t)
|
||||||
|
(setq lsp-rust-analyzer-cargo-watch-command "clippy")
|
||||||
|
(setq lsp-rust-analyzer-server-display-inlay-hints t)
|
||||||
|
(setq lsp-rust-analyzer-inlay-hints-mode t)
|
||||||
|
|
||||||
|
(provide 'misc)
|
||||||
|
;;; misc.el ends here
|
42
.emacs.d/include/mu4econfig.el
Normal file
42
.emacs.d/include/mu4econfig.el
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
;;; mu4econfig.el --- Configuration for mu4e.
|
||||||
|
;;; Commentary:
|
||||||
|
;; Configuration for mu4e.
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e")
|
||||||
|
(require 'mu4e)
|
||||||
|
|
||||||
|
(setq
|
||||||
|
mue4e-headers-skip-duplicates t
|
||||||
|
mu4e-view-show-images t
|
||||||
|
mu4e-view-show-addresses t
|
||||||
|
mu4e-compose-format-flowed nil
|
||||||
|
mu4e-date-format "%Y-%m-%d"
|
||||||
|
mu4e-headers-date-format "%Y-%m-%d"
|
||||||
|
mu4e-change-filenames-when-moving t
|
||||||
|
mu4e-attachments-dir "~/Downloads"
|
||||||
|
|
||||||
|
mu4e-maildir "~/mail" ;; top-level Maildir
|
||||||
|
;; note that these folders below must start with /
|
||||||
|
;; the paths are relative to maildir root
|
||||||
|
mu4e-refile-folder "/Archive"
|
||||||
|
mu4e-sent-folder "/Sent"
|
||||||
|
mu4e-drafts-folder "/Drafts"
|
||||||
|
mu4e-trash-folder "/Trash")
|
||||||
|
|
||||||
|
;; this setting allows to re-sync and re-index mail
|
||||||
|
;; by pressing U
|
||||||
|
(setq mu4e-get-mail-command "mbsync -a")
|
||||||
|
|
||||||
|
(setq
|
||||||
|
message-send-mail-function 'smtpmail-send-it
|
||||||
|
smtpmail-default-smtp-server "smtp.fastmail.com"
|
||||||
|
smtpmail-smtp-server "smtp.fastmail.com")
|
||||||
|
|
||||||
|
(setq user-full-name "Lucas Sta Maria")
|
||||||
|
(setq user-mail-address "lucas@priime.dev")
|
||||||
|
(setq smtpmail-smtp-service 587)
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'mu4econfig)
|
||||||
|
;;; mu4econfig.el ends here
|
52
.emacs.d/include/orgconfig.el
Normal file
52
.emacs.d/include/orgconfig.el
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
;;; orgconfig.el --- Configuration for org-mode.
|
||||||
|
;;; Commentary:
|
||||||
|
;; Configuration for org-mode.
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'org)
|
||||||
|
(require 'org-capture)
|
||||||
|
(setq org-hide-emphasis-markers t)
|
||||||
|
(setcar (nthcdr 4 org-emphasis-regexp-components) 20)
|
||||||
|
(org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components)
|
||||||
|
(setq org-agenda-files '("~/org/inbox.org"
|
||||||
|
"~/org/gtd.org"
|
||||||
|
"~/org/tickler.org"))
|
||||||
|
(setq org-capture-templates '(("t" "Todo [inbox]" entry
|
||||||
|
(file+headline "~/org/inbox.org" "Tasks")
|
||||||
|
"* TODO %i%?")
|
||||||
|
("T" "Tickler" entry
|
||||||
|
(file+headline "~/org/tickler.org" "Tickler")
|
||||||
|
"* %i%? \n %U")))
|
||||||
|
(setq org-refile-targets '(("~/org/gtd.org" :maxlevel . 3)
|
||||||
|
("~/org/someday.org" :level . 1)
|
||||||
|
("~/org/tickler.org" :maxlevel . 2)))
|
||||||
|
(global-set-key (kbd "C-c a") #'org-agenda)
|
||||||
|
(global-set-key (kbd "C-c c") #'org-capture)
|
||||||
|
(setq org-todo-keywords '((sequence "TODO(t)" "WAITING(w)" "|" "DONE(d)" "CANCELLED(c)")))
|
||||||
|
|
||||||
|
;; Enable Racket in Org-mode Babel
|
||||||
|
(org-babel-do-load-languages
|
||||||
|
'org-babel-load-languages
|
||||||
|
'((racket . t)))
|
||||||
|
|
||||||
|
(defmacro η (fnc)
|
||||||
|
"Return function that ignores its arguments and invokes FNC."
|
||||||
|
`(lambda (&rest _rest)
|
||||||
|
(funcall ,fnc)))
|
||||||
|
|
||||||
|
;; Auto-save org buffers
|
||||||
|
(advice-add 'org-deadline :after (η #'org-save-all-org-buffers))
|
||||||
|
(advice-add 'org-schedule :after (η #'org-save-all-org-buffers))
|
||||||
|
(advice-add 'org-store-log-note :after (η #'org-save-all-org-buffers))
|
||||||
|
(advice-add 'org-todo :after (η #'org-save-all-org-buffers))
|
||||||
|
(advice-add 'org-refile :after (η #'org-save-all-org-buffers))
|
||||||
|
(advice-add 'org-sort :after (η #'org-save-all-org-buffers))
|
||||||
|
|
||||||
|
;; Org hooks
|
||||||
|
(add-hook 'org-agenda-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(add-hook 'auto-save-hook 'org-save-all-org-buffers nil t)
|
||||||
|
(auto-save-mode)))
|
||||||
|
|
||||||
|
(provide 'orgconfig)
|
||||||
|
;;; orgconfig.el ends here
|
14
.emacs.d/include/racket.el
Normal file
14
.emacs.d/include/racket.el
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
;;; racket.el --- Configuration for Racket.
|
||||||
|
;;; Commentary:
|
||||||
|
;; Configuration for Racket and Racket-based languages, including Pollen.
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(add-to-list 'load-path (expand-file-name "lisp/pollen-mode" user-emacs-directory))
|
||||||
|
(autoload 'pollen-mode "pollen" "A major mode for the pollen preprocessor." t)
|
||||||
|
|
||||||
|
;; Recognize pollen filetypes
|
||||||
|
(setq auto-mode-alist (cons '("\\.pp$" . racket-mode) auto-mode-alist))
|
||||||
|
(setq auto-mode-alist (cons '("\\.pm$" . racket-mode) auto-mode-alist))
|
||||||
|
|
||||||
|
(provide 'racket)
|
||||||
|
;;; racket.el ends here
|
180
.emacs.d/init.el
180
.emacs.d/init.el
|
@ -46,162 +46,14 @@
|
||||||
(straight-use-package '(nano-theme :type git :host github
|
(straight-use-package '(nano-theme :type git :host github
|
||||||
:repo "rougier/nano-theme"))
|
:repo "rougier/nano-theme"))
|
||||||
|
|
||||||
(add-to-list 'load-path (expand-file-name "lisp/pollen-mode" user-emacs-directory))
|
(add-to-list 'load-path "~/.emacs.d/include")
|
||||||
(add-to-list 'load-path (expand-file-name "lisp/" user-emacs-directory))
|
(add-to-list 'load-path (expand-file-name "lisp/" user-emacs-directory))
|
||||||
(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e")
|
|
||||||
(autoload 'pollen-mode "pollen" "A major mode for the pollen preprocessor." t)
|
|
||||||
|
|
||||||
;; ====== Configuration ======================
|
(load-library "general")
|
||||||
|
(load-library "misc")
|
||||||
(setq inhibit-startup-message t
|
(load-library "orgconfig")
|
||||||
visible-bell nil)
|
(load-library "mu4econfig")
|
||||||
|
(load-library "racket")
|
||||||
;; Backups
|
|
||||||
(setq make-backup-files nil)
|
|
||||||
(rassq-delete-all 'auto-save-mode auto-mode-alist)
|
|
||||||
|
|
||||||
;; UI
|
|
||||||
(menu-bar-mode -1)
|
|
||||||
(tool-bar-mode -1)
|
|
||||||
(scroll-bar-mode -1)
|
|
||||||
|
|
||||||
;; Line
|
|
||||||
(global-display-line-numbers-mode 1)
|
|
||||||
(hl-line-mode -1)
|
|
||||||
(setq line-number-mode t)
|
|
||||||
(setq column-number-mode t)
|
|
||||||
|
|
||||||
;; Tabs
|
|
||||||
(setq-default tab-width 2)
|
|
||||||
|
|
||||||
;; Cursor
|
|
||||||
(blink-cursor-mode 1)
|
|
||||||
|
|
||||||
;; Font
|
|
||||||
(defvar font-size 10)
|
|
||||||
(defvar font-family "JetBrains Mono SemiBold")
|
|
||||||
(set-frame-font (format "%s %d" font-family font-size))
|
|
||||||
|
|
||||||
;; Use spaces instead of tabs
|
|
||||||
(setq-default indent-tabs-mode nil)
|
|
||||||
|
|
||||||
;; Directional window moving
|
|
||||||
(windmove-default-keybindings)
|
|
||||||
|
|
||||||
;; Auto file refresh
|
|
||||||
(global-auto-revert-mode t)
|
|
||||||
|
|
||||||
;; Git Gutter
|
|
||||||
(global-git-gutter-mode +1)
|
|
||||||
|
|
||||||
;; Elfeed
|
|
||||||
(setq elfeed-feeds
|
|
||||||
'(("https://edwardwibowo.com/rss.xml" blog)
|
|
||||||
("https://priime.dev/feed.xml" blog)
|
|
||||||
("https://fasterthanli.me/index.xml" blog)
|
|
||||||
("https://blog.cleancoder.com/atom.xml" blog)))
|
|
||||||
|
|
||||||
;; Theme
|
|
||||||
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
|
|
||||||
(load-theme 'nano t)
|
|
||||||
(nano-light)
|
|
||||||
|
|
||||||
;; ====== Org Mode ===========================
|
|
||||||
|
|
||||||
(require 'org)
|
|
||||||
(require 'org-capture)
|
|
||||||
(setq org-hide-emphasis-markers t)
|
|
||||||
(setcar (nthcdr 4 org-emphasis-regexp-components) 20)
|
|
||||||
(org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components)
|
|
||||||
(setq org-agenda-files '("~/org/inbox.org"
|
|
||||||
"~/org/gtd.org"
|
|
||||||
"~/org/tickler.org"))
|
|
||||||
(setq org-capture-templates '(("t" "Todo [inbox]" entry
|
|
||||||
(file+headline "~/org/inbox.org" "Tasks")
|
|
||||||
"* TODO %i%?")
|
|
||||||
("T" "Tickler" entry
|
|
||||||
(file+headline "~/org/tickler.org" "Tickler")
|
|
||||||
"* %i%? \n %U")))
|
|
||||||
(setq org-refile-targets '(("~/org/gtd.org" :maxlevel . 3)
|
|
||||||
("~/org/someday.org" :level . 1)
|
|
||||||
("~/org/tickler.org" :maxlevel . 2)))
|
|
||||||
(global-set-key (kbd "C-c a") #'org-agenda)
|
|
||||||
(global-set-key (kbd "C-c c") #'org-capture)
|
|
||||||
(setq org-todo-keywords '((sequence "TODO(t)" "WAITING(w)" "|" "DONE(d)" "CANCELLED(c)")))
|
|
||||||
|
|
||||||
;; Enable Racket in Org-mode Babel
|
|
||||||
(org-babel-do-load-languages
|
|
||||||
'org-babel-load-languages
|
|
||||||
'((racket . t)))
|
|
||||||
|
|
||||||
(defmacro η (fnc)
|
|
||||||
"Return function that ignores its arguments and invokes FNC."
|
|
||||||
`(lambda (&rest _rest)
|
|
||||||
(funcall ,fnc)))
|
|
||||||
|
|
||||||
;; Auto-save org buffers
|
|
||||||
(advice-add 'org-deadline :after (η #'org-save-all-org-buffers))
|
|
||||||
(advice-add 'org-schedule :after (η #'org-save-all-org-buffers))
|
|
||||||
(advice-add 'org-store-log-note :after (η #'org-save-all-org-buffers))
|
|
||||||
(advice-add 'org-todo :after (η #'org-save-all-org-buffers))
|
|
||||||
(advice-add 'org-refile :after (η #'org-save-all-org-buffers))
|
|
||||||
(advice-add 'org-sort :after (η #'org-save-all-org-buffers))
|
|
||||||
|
|
||||||
;; ====== mu4e ===============================
|
|
||||||
|
|
||||||
(require 'mu4e)
|
|
||||||
|
|
||||||
(setq
|
|
||||||
mue4e-headers-skip-duplicates t
|
|
||||||
mu4e-view-show-images t
|
|
||||||
mu4e-view-show-addresses t
|
|
||||||
mu4e-compose-format-flowed nil
|
|
||||||
mu4e-date-format "%Y-%m-%d"
|
|
||||||
mu4e-headers-date-format "%Y-%m-%d"
|
|
||||||
mu4e-change-filenames-when-moving t
|
|
||||||
mu4e-attachments-dir "~/Downloads"
|
|
||||||
|
|
||||||
mu4e-maildir "~/mail" ;; top-level Maildir
|
|
||||||
;; note that these folders below must start with /
|
|
||||||
;; the paths are relative to maildir root
|
|
||||||
mu4e-refile-folder "/Archive"
|
|
||||||
mu4e-sent-folder "/Sent"
|
|
||||||
mu4e-drafts-folder "/Drafts"
|
|
||||||
mu4e-trash-folder "/Trash")
|
|
||||||
|
|
||||||
;; this setting allows to re-sync and re-index mail
|
|
||||||
;; by pressing U
|
|
||||||
(setq mu4e-get-mail-command "mbsync -a")
|
|
||||||
|
|
||||||
(setq
|
|
||||||
message-send-mail-function 'smtpmail-send-it
|
|
||||||
smtpmail-default-smtp-server "smtp.fastmail.com"
|
|
||||||
smtpmail-smtp-server "smtp.fastmail.com")
|
|
||||||
|
|
||||||
(setq user-full-name "Lucas Sta Maria")
|
|
||||||
(setq user-mail-address "lucas@priime.dev")
|
|
||||||
(setq smtpmail-smtp-service 587)
|
|
||||||
|
|
||||||
(require 'mu4e-dashboard)
|
|
||||||
|
|
||||||
;; ====== Keybindings ========================
|
|
||||||
|
|
||||||
(global-set-key (kbd "C-c g g") 'magit)
|
|
||||||
(global-set-key (kbd "C-M-j") (lambda () (interactive) (scroll-up 1)))
|
|
||||||
(global-set-key (kbd "C-M-k") (lambda () (interactive) (scroll-down 1)))
|
|
||||||
|
|
||||||
;; ====== Filetypes ==========================
|
|
||||||
|
|
||||||
(setq auto-mode-alist (cons '("\\.pp$" . racket-mode) auto-mode-alist))
|
|
||||||
(setq auto-mode-alist (cons '("\\.pm$" . racket-mode) auto-mode-alist))
|
|
||||||
(add-to-list 'auto-mode-alist '("\\.jsx?$" . web-mode))
|
|
||||||
(setq web-mode-content-types-alist '(("jsx" . "\\.js[x]?\\")))
|
|
||||||
(setq web-mode-markup-indent-offset 2)
|
|
||||||
|
|
||||||
(setq lsp-rust-analyzer-cargo-watch-enable t)
|
|
||||||
(setq lsp-rust-analyzer-cargo-watch-command "clippy")
|
|
||||||
(setq lsp-rust-analyzer-server-display-inlay-hints t)
|
|
||||||
(setq lsp-rust-analyzer-inlay-hints-mode t)
|
|
||||||
|
|
||||||
;; ====== Hooks ==============================
|
;; ====== Hooks ==============================
|
||||||
(add-hook 'after-init-hook 'global-company-mode)
|
(add-hook 'after-init-hook 'global-company-mode)
|
||||||
|
@ -218,29 +70,9 @@
|
||||||
(add-hook 'racket-mode-hook 'paredit-mode)
|
(add-hook 'racket-mode-hook 'paredit-mode)
|
||||||
(add-hook 'clojure-mode-hook 'paredit-mode)
|
(add-hook 'clojure-mode-hook 'paredit-mode)
|
||||||
|
|
||||||
;(add-hook 'racket-mode-hook 'lsp-racket-enable)
|
|
||||||
|
|
||||||
(add-hook 'lsp-mode 'lsp-ui-mode)
|
(add-hook 'lsp-mode 'lsp-ui-mode)
|
||||||
|
|
||||||
(add-hook 'python-mode 'lsp-mode)
|
(add-hook 'python-mode 'lsp-mode)
|
||||||
(add-hook 'rust-mode 'lsp-rust)
|
(add-hook 'rust-mode 'lsp-rust)
|
||||||
|
|
||||||
(add-hook 'racket-mode-hook 'racket-xp-mode)
|
(add-hook 'racket-mode-hook 'racket-xp-mode)
|
||||||
|
|
||||||
(add-hook 'org-agenda-mode-hook
|
|
||||||
(lambda ()
|
|
||||||
(add-hook 'auto-save-hook 'org-save-all-org-buffers nil t)
|
|
||||||
(auto-save-mode)))
|
|
||||||
|
|
||||||
(custom-set-variables
|
|
||||||
;; custom-set-variables was added by Custom.
|
|
||||||
;; If you edit it by hand, you could mess it up, so be careful.
|
|
||||||
;; Your init file should contain only one such instance.
|
|
||||||
;; If there is more than one, they won't work right.
|
|
||||||
'(fill-column 80))
|
|
||||||
(custom-set-faces
|
|
||||||
;; custom-set-faces was added by Custom.
|
|
||||||
;; If you edit it by hand, you could mess it up, so be careful.
|
|
||||||
;; Your init file should contain only one such instance.
|
|
||||||
;; If there is more than one, they won't work right.
|
|
||||||
)
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue