aboutsummaryrefslogtreecommitdiff
path: root/.emacs.d/init.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/init.el')
-rw-r--r--.emacs.d/init.el178
1 files changed, 178 insertions, 0 deletions
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
new file mode 100644
index 0000000..5d0996e
--- /dev/null
+++ b/.emacs.d/init.el
@@ -0,0 +1,178 @@
+;; Debian packages: elpa-use-package elpa-fill-column-indicator fonts-hack
+
+(require 'package)
+(require 'fill-column-indicator)
+
+;; This is only needed once, near the top of the file
+(eval-when-compile
+ (require 'use-package))
+
+(add-to-list 'package-archives
+ '("melpa-stable" . "https://stable.melpa.org/packages/") t)
+
+(add-to-list 'package-archives
+ '("melpa" . "https://melpa.org/packages/") t)
+
+;; Do not persist customizations
+(setq custom-file (make-temp-file "emacs-custom-"))
+
+;; Place backups in ~/.backups/ directory, like a civilized program.
+;; ------
+(if (file-directory-p "~/.backup")
+ (setq backup-directory-alist '(("." . "~/.backup")))
+ (message "Directory does not exist: ~/.backup"))
+
+(filesets-init)
+
+(setq backup-by-copying t ; Don't delink hardlinks
+ delete-old-versions t ; Clean up the backups
+ version-control t ; Use version numbers on backups,
+ kept-new-versions 3 ; keep some new versions
+ kept-old-versions 2) ; and some old ones, too
+
+;; ---------
+;; Generic keybindings
+;; ---------
+(global-set-key (kbd "C-c d") 'diff-buffer-with-file)
+(global-set-key (kbd "C-c R") 'revert-buffer)
+
+;; compile
+(global-set-key [f12] 'compile)
+
+(defun help/insert-em-dash ()
+ "Inserts an EM-DASH (not a HYPEN, not an N-DASH)"
+ (interactive)
+ (insert "—"))
+
+(global-set-key (kbd "C--") #'help/insert-em-dash)
+
+;; ------
+;; General config
+;; ------
+
+(setq fill-column 79)
+
+;; Make sure that pressing middle mouse button pastes right at point,
+;; not where the mouse cursor is.
+(setq mouse-yank-at-point t)
+
+(setq column-number-mode 1)
+(setq line-number-mode 1)
+(setq-default indent-tabs-mode nil)
+(setq-default tab-width 4)
+
+(setq-default c-basic-offset 4)
+
+;; ------
+;; Initialize environment
+;; ------
+
+
+(setenv "TMPDIR" (concat (getenv "HOME") "/tmp"))
+(server-start)
+
+;; ------
+;; Helper for compilation.
+;; ------
+;; Close the compilation window if there was no error at all.
+(defun compilation-exit-autoclose (status code msg)
+ ;; If M-x compile exists with a 0
+ (when (and (eq status 'exit) (zerop code))
+ ;; then bury the *compilation* buffer, so that C-x b doesn't go there
+ (bury-buffer)
+ ;; and delete the *compilation* window
+ (delete-window (get-buffer-window (get-buffer "*compilation*"))))
+ ;; Always return the anticipated result of compilation-exit-message-function
+ (cons msg code))
+
+;; Specify my function (maybe I should have done a lambda function)
+(setq compilation-exit-message-function 'compilation-exit-autoclose)
+(setq compilation-read-command nil)
+
+;; Themes
+(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
+
+;; Remove scratch message
+(setq initial-scratch-message "")
+
+;; Ask y or n instead of yes or no
+(defalias 'yes-or-no-p 'y-or-n-p)
+
+;; Fancier buffer selection
+(global-set-key (kbd "C-x C-b") 'bs-show)
+
+;;; Stefan Monnier <foo at acm.org>. It is the opposite of fill-paragraph
+(defun unfill-paragraph (&optional region)
+ "Takes a multi-line paragraph and makes it into a single line of text."
+ (interactive (progn (barf-if-buffer-read-only) '(t)))
+ (let ((fill-column (point-max))
+ ;; This would override `fill-column' if it's an integer.
+ (emacs-lisp-docstring-fill-column t))
+ (fill-paragraph nil region)))
+
+;; Handy key definition
+(define-key global-map "\M-Q" 'unfill-paragraph)
+
+;; Only flash the mode line
+(setq ring-bell-function
+ (lambda ()
+ (let ((orig-fg (face-foreground 'mode-line)))
+ (set-face-foreground 'mode-line "#F2804F")
+ (run-with-idle-timer 0.1 nil
+ (lambda (fg) (set-face-foreground 'mode-line fg))
+ orig-fg))))
+
+;; Highlight parens
+(setq show-paren-delay 0)
+(show-paren-mode 1)
+
+;; Save what you enter into minibuffer prompts
+(setq history-length 25)
+(savehist-mode 1)
+
+;; Remember and restore cursor information
+(save-place-mode 1)
+
+;; Set this to t if you don't understand what it means
+(setq vc-follow-symlinks nil)
+
+(dolist (path '("~/.emacs.d/rul-lisp/config" "~/.emacs.d/rul-lisp/packages"))
+ (add-to-list 'load-path path))
+
+(require 'rul-org)
+(require 'rul-org-roam)
+(require 'rul-elfeed)
+(require 'rul-dart)
+
+(load-file "~/.emacs.d/rul-init.d/fonts.el")
+(load-file "~/.emacs.d/rul-init.d/themes.el")
+
+;; Init parts (will be deprecated in favor of packages)
+(load-file "~/.emacs.d/rul-init.d/auto-fill.el")
+;(load-file "~/.emacs.d/rul-init.d/doom-modeline.el")
+(load-file "~/.emacs.d/rul-init.d/flycheck.el")
+(load-file "~/.emacs.d/rul-init.d/flyspell.el")
+(load-file "~/.emacs.d/rul-init.d/go-lang.el")
+(load-file "~/.emacs.d/rul-init.d/hydra.el")
+(load-file "~/.emacs.d/rul-init.d/ibuffer.el")
+(load-file "~/.emacs.d/rul-init.d/imenu.el")
+;(load-file "~/.emacs.d/rul-init.d/ivy.el")
+(load-file "~/.emacs.d/rul-init.d/latex.el")
+(load-file "~/.emacs.d/rul-init.d/logos.el")
+(load-file "~/.emacs.d/rul-init.d/mail-mode.el")
+(load-file "~/.emacs.d/rul-init.d/markdown.el")
+(load-file "~/.emacs.d/rul-init.d/magit.el")
+(load-file "~/.emacs.d/rul-init.d/notmuch.el")
+(load-file "~/.emacs.d/rul-init.d/projectile.el")
+(load-file "~/.emacs.d/rul-init.d/tabbar.el")
+(load-file "~/.emacs.d/rul-init.d/which-key.el")
+(load-file "~/.emacs.d/rul-init.d/writeroom.el")
+(load-file "~/.emacs.d/rul-init.d/vterm.el")
+
+(load-file "~/.emacs.d/rul-init.d/staging.el")
+
+(when-let* ((file (locate-user-emacs-file "rul-pre-init.el"))
+ ((file-exists-p file)))
+ (load-file file))
+
+;; init.el ends here
nihil fit ex nihilo