230 lines
8.7 KiB
EmacsLisp
230 lines
8.7 KiB
EmacsLisp
;; Who am I?
|
|
(setq user-full-name "Luis Guilherme Coelho"
|
|
user-email-address "lgcoelho@disroot.org"
|
|
copyright-names-regexp (format "%s <%s>"
|
|
user-full-name
|
|
user-mail-address))
|
|
(load-file "~/projects/code/scm/guix/etc/copyright.el")
|
|
|
|
;; Emacs directories
|
|
(setq user-emacs-directory "~/.config/emacs")
|
|
|
|
;; Organizing backups
|
|
(setq backup-directory-alist
|
|
'(("." . "~/.local/share/emacs/saves")))
|
|
|
|
;; Emacs load path
|
|
(add-to-list 'load-path
|
|
"~/.guix-home/profile/share/emacs/site-lisp")
|
|
(setq-default buffer-file-coding-system
|
|
'utf-8-unix)
|
|
|
|
;; Garbage collection
|
|
(setq gc-cons-threshold (* 50 1000 1000))
|
|
|
|
;; No more tabs
|
|
(setq-default indent-line-function 'insert-tab
|
|
indent-tabs-mode nil)
|
|
|
|
;; Profile emacs startup
|
|
(add-hook 'emacs-startup-hook
|
|
(lambda () (message
|
|
"*:** Emacs loaded in %s seconds with %d garbage collections."
|
|
(emacs-init-time "%.2f")
|
|
gcs-done)))
|
|
|
|
;; Disable compiler and large file warnings
|
|
(setq native-comp-async-report-warnings-errors nil
|
|
large-file-warning-threshold nil)
|
|
|
|
;; Remove start message and scratch message
|
|
(setq inhibit-startup-message t
|
|
initial-scratch-message nil)
|
|
|
|
;; Enable some minor modes globally
|
|
(dolist (mode '(server-mode ; Emacs server
|
|
savehist-mode ; Command history
|
|
column-number-mode ; Cursor column number
|
|
global-prettify-symbols-mode ; Pretty symbols
|
|
delete-selection-mode)) ; Normal selection behavior
|
|
(funcall mode 1))
|
|
|
|
;; Disable some minor modes globally
|
|
(dolist (mode '(tool-bar-mode menu-bar-mode ; Menus
|
|
scroll-bar-mode ; Scroll-bar
|
|
tooltip-mode ; Tooltip
|
|
indent-tabs-mode ; Tabs
|
|
blink-cursor-mode ; Cursor
|
|
fringe-mode)) ; Fringe
|
|
(funcall mode 0))
|
|
|
|
;; Line numbers settings
|
|
(setq display-line-numbers-type 'relative
|
|
display-line-numbers-current-absolute t
|
|
display-line-numbers-grow-only t
|
|
display-line-numbers-width-start t)
|
|
|
|
;; Display whitespaces
|
|
(setq-default fill-column 80)
|
|
(setq whitespace-display-mappings
|
|
'((space-mark ?\ [?⋅] [?.])
|
|
(space-mark ?\xA0 [?⋅] [?_])
|
|
(newline-mark ?\n [?¬ ?\n] [?$ ?\n])
|
|
(tab-mark ?\t [?» ?\t] [?\\ ?\t])))
|
|
(dolist (mode '(text-mode-hook
|
|
prog-mode-hook
|
|
conf-mode-hook))
|
|
(add-hook mode (lambda ()
|
|
(setq display-line-numbers-witdth
|
|
(length (format "%s" (count-lines (point-max)
|
|
(point-min)))))
|
|
(dolist (mode '(display-line-numbers-mode
|
|
rainbow-delimiters-mode
|
|
display-fill-column-indicator-mode
|
|
whitespace-mode))
|
|
(funcall mode 1)))))
|
|
(add-hook 'org-mode-hook
|
|
(lambda ()
|
|
(dolist (mode '(whitespace-mode
|
|
display-fill-column-indicator-mode))
|
|
(funcall mode 0))
|
|
(setq org-pretty-entities t)))
|
|
|
|
;; Aesthetics
|
|
(load-theme 'meimuna t)
|
|
(setq cursor-type 'box)
|
|
|
|
;; Smooth scroll
|
|
(setq scroll-step 1)
|
|
|
|
;; Please never show me a dialog box again
|
|
(setq use-dialog-box nil)
|
|
|
|
;; IRC
|
|
(setq circe-nick "anemofilia")
|
|
(setq circe-channels '("#emacs"
|
|
"#gnu"
|
|
"#guile"
|
|
"#guix"
|
|
"#libreboot"))
|
|
|
|
;; EMMS
|
|
(setq emms-player-list '(emms-player-mpv))
|
|
|
|
;(require 'setup)
|
|
;(setup-define :pkg
|
|
; (lambda (feature-or-package)
|
|
; `(unless (locate-file ,(symbol-name feature-or-package)
|
|
; load-path
|
|
; (get-load-suffixes))
|
|
; (:package ',feature-or-package)))
|
|
; :documentation "Install PACKAGE if it is not available locally.
|
|
;This macro can be used as NAME, and it will replace itself with
|
|
;the first PACKAGE."
|
|
; :repeatable t
|
|
; :shorthand #'cadr)
|
|
;
|
|
;(setup-define :disabled
|
|
; (lambda () `,(setup-quit))
|
|
; :documentation "Always stop evaluating the body.")
|
|
;
|
|
;(setup-define :load-after
|
|
; (lambda (features &rest body)
|
|
; (let ((body `(progn
|
|
; (require ',(setup-get 'feature))
|
|
; ,@body)))
|
|
; (dolist (feature (if (listp features)
|
|
; (nreverse features)
|
|
; (list features)))
|
|
; (setq body `(with-eval-after-load ',feature ,body)))
|
|
; body))
|
|
; :documentation "Load the current feature after FEATURES."
|
|
; :indent 1)
|
|
;
|
|
;(setup-define :file-match
|
|
; (lambda (regexp)
|
|
; `(add-to-list 'auto-mode-alist (cons ,regexp ',(setup-get 'mode))))
|
|
; :documentation "Associate the current mode with files that match REGEXP."
|
|
; :debug '(form)
|
|
; :repeatable t)
|
|
;
|
|
;(setup-define :leader
|
|
; (lambda (&rest args)
|
|
; `(with-eval-after-load 'general
|
|
; (general-define-key ,@args
|
|
; :states 'normal
|
|
; :keymaps 'override
|
|
; :prefix "SPC"
|
|
; :global-prefix "C-SPC")))
|
|
; :documentation "Define a leader keybind"
|
|
; :debug '(form)
|
|
; :indent 0)
|
|
;
|
|
;(setup-define :local-leader
|
|
; (lambda (&rest args)
|
|
; `(with-eval-after-load 'general
|
|
; (let ((map ',(setup-get 'map)))
|
|
; (general-define-key ,@args
|
|
; :states 'normal
|
|
; :keymaps map
|
|
; :prefix "SPC m"
|
|
; :global-prefix "C-SPC m"))))
|
|
; :documentation "Define a local leader keybind"
|
|
; :debug '(form)
|
|
; :indent 0)
|
|
;
|
|
;(setup-define :ignore-buffers
|
|
; (lambda (&rest buffers)
|
|
; `(setq ignored-buffers (append ignored-buffers ',buffers)))
|
|
; :documentation "Ignore buffers")
|
|
;
|
|
;(setup-define :display-rule
|
|
; (lambda (condition &rest actions)
|
|
; `(add-to-list 'display-buffer-alist '(,condition . ,actions)))
|
|
; :documentation "Add to display buffer alist")
|
|
;
|
|
;(setup (:pkg kakoune)
|
|
; (:option ryo-modal-cursor-type 'box
|
|
; ryo-modal-cursor-color "#8581E0")
|
|
; (:global "<escape>"
|
|
; (lambda ()
|
|
; (interactive)
|
|
; (if (minibufferp)
|
|
; (keyboard-escape-quit)
|
|
; (ryo-modal-mode))))
|
|
; (kakoune-setup-keybinds)
|
|
; (ryo-modal-keys
|
|
; ("M-s" mc/split-region)))
|
|
;:
|
|
;;; Use a real file manager
|
|
;(setup (:pkg dirvish)
|
|
; (:hook hl-line-mode)
|
|
; (:option dirvish-attributes nil
|
|
; dirvish-listing-switches '(--group-directories-first --classify))
|
|
; ;'(vc-state subtree-state all-the-icons collapse git-msg file-time file-size))
|
|
; (dirvish-override-dired-mode))
|
|
;
|
|
;(setup (:pkg org-bullets org-present org-roam org-modern))
|
|
;(setup (:pkg elfeed elfeed-org))
|
|
;(setup (:pkg geiser geiser-guile macrostep-geiser))
|
|
;(setup (:pkg cape corfu corfu-doc consult-lsp vertico orderless))
|
|
|
|
(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.
|
|
'(custom-enabled-themes '(meimuna))
|
|
'(custom-safe-themes
|
|
'("5df271e8c563dcd5b7be07ab5b5a615567b20a36b7c748475df0bb512332f0e1" "c202b7618764218b8ecb21a13c5dc9b318f0879f54105847fa5e1868afb19369" "044d60490c760e63bd39232445702271257a47ab384a3871649ea03a3d2b430a" "322a73057be183963dcd4fbfaa859e636fc8aa5f76f2a24f32a8ee5cc73be484" "671f76d55e2917bcae38168c2363fc21a335683583543b3fe49018cf5542908d" "f2db82bef0fb3e3922053605326d82b3e6494aed5c938440358710e9b78da7d9" "47263df55a6df473a5b9ba13107523f285db25dbbfd793ed5beaf47b7ec11c8e" "452da09d018e5f7bffa1e293c224c8711aa37dc9e7dd1dce24c9be6a0f6067c3" "f2c28b88fc49c9577269afcfdbf4630135c2bc2a4813f379c9a8a3979953e706" "38d107472028475f6d47938a91abf170587b718f4ca84f258ea8d72babe25201" "12bd9d840d3e0f54c607ca63acca59b083eca3cb18b9e5c7b34dfb6a400eaf4b" default))
|
|
'(package-selected-packages
|
|
'(eat mines setup kakoune magit-popup edit-indirect bui geiser-guile auctex))
|
|
'(whitespace-style
|
|
'(face trailing tabs spaces lines lines-tail lines-char newline missing-newline-at-eof empty indentation::tab indentation::space indentation big-indent space-after-tab::tab space-after-tab::space space-after-tab space-before-tab::tab space-before-tab::space space-before-tab space-mark tab-mark newline-mark)))
|
|
(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.
|
|
'(whitespace-line ((t nil))))
|