summaryrefslogtreecommitdiff
path: root/pkgs/sorremacs/emacs.el
diff options
context:
space:
mode:
authorMiran Bastaja <miran.bastaja04@gmail.com>2024-09-12 18:05:23 +0200
committerMiran Bastaja <miran.bastaja04@gmail.com>2024-09-12 18:45:06 +0200
commit0da0e8fb5d626bd511c55457ab624b800b9abfe8 (patch)
treef49d24a1de22ad6488a37c56fe86360db4c3b161 /pkgs/sorremacs/emacs.el
Initial commit
Diffstat (limited to 'pkgs/sorremacs/emacs.el')
-rw-r--r--pkgs/sorremacs/emacs.el137
1 files changed, 137 insertions, 0 deletions
diff --git a/pkgs/sorremacs/emacs.el b/pkgs/sorremacs/emacs.el
new file mode 100644
index 0000000..e903b10
--- /dev/null
+++ b/pkgs/sorremacs/emacs.el
@@ -0,0 +1,137 @@
+;; -*- coding: utf-8 -*-
+
+(setq use-package-always-ensure t)
+
+;;; For performance
+(setq gc-cons-threshold 100000000)
+(setq read-process-output-max (* 1024 1024)) ;; 1mb
+
+(add-hook 'after-init-hook #'(lambda ()
+ ;; restore after startup
+ (setq gc-cons-threshold 800000)))
+
+;;; Disable menu-bar, tool-bar, and scroll-bar.
+(if (fboundp 'menu-bar-mode)
+ (menu-bar-mode -1))
+(if (fboundp 'tool-bar-mode)
+ (tool-bar-mode -1))
+(if (fboundp 'scroll-bar-mode)
+ (scroll-bar-mode -1))
+
+;;; Fix this bug:
+;;; https://www.reddit.com/r/emacs/comments/cueoug/the_failed_to_download_gnu_archive_is_a_pretty/
+(when (version< emacs-version "26.3")
+ (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3"))
+
+(setq-default cursor-type 'bar) ; Line-style cursor similar to other text editors
+(setq inhibit-startup-screen t) ; Disable startup screen
+(setq initial-scratch-message "") ; Make *scratch* buffer blank
+(setq-default frame-title-format '("%b")) ; Make window title the buffer name
+(setq ring-bell-function 'ignore) ; Disable bell sound
+(fset 'yes-or-no-p 'y-or-n-p) ; y-or-n-p makes answering questions faster
+(show-paren-mode 1) ; Show closing parens by default
+(setq linum-format "%4d ") ; Line number format
+(delete-selection-mode 1) ; Selected text will be overwritten when you start typing
+(global-auto-revert-mode t) ; Auto-update buffer if file has changed on disk
+
+;; Show line numbers in programming modes
+(add-hook 'prog-mode-hook
+ (if (or
+ ; If linum-mode doesn't exist...
+ (not (fboundp 'linum-mode))
+ ; ...or Emacs has display-line-numbers-mode capability
+ (and (fboundp 'display-line-numbers-mode) (display-graphic-p)))
+ ; ...then use display-line-numbers-mode!
+ 'display-line-numbers-mode
+ ; Otherwise, use linum-mode
+ 'linum-mode))
+
+(global-display-line-numbers-mode)
+
+;; Define the whitespace style.
+(setq-default whitespace-style
+ '(face spaces tabs newline space-mark tab-mark newline-mark))
+
+(setq-default whitespace-display-mappings
+ ;; all numbers are unicode codepoint in decimal
+ '(
+ ;; 32 is SPACE, 183 is MIDDLE DOT ·
+ (space-mark 32 [183])
+ ;; 10 is LINE FEED, 182 isPILCROW SIGN ¶
+ (newline-mark 10 [182 10])
+ ;; 9 is tab, 182 isPILCROW SIGN ¶
+ (tab-mark 9 [9655 9])))
+
+;; Set whitespace actions.
+(setq-default whitespace-action
+ '(cleanup auto-cleanup))
+
+;;; Put Emacs auto-save and backup files to /tmp/ or C:/Temp/
+(defconst emacs-tmp-dir (expand-file-name (format "emacs%d" (user-uid)) temporary-file-directory))
+(setq
+ backup-by-copying t ; Avoid symlinks
+ delete-old-versions t
+ kept-new-versions 6
+ kept-old-versions 2
+ version-control t
+ auto-save-list-file-prefix emacs-tmp-dir
+ auto-save-file-name-transforms `((".*" ,emacs-tmp-dir t)) ; Change autosave dir to tmp
+ backup-directory-alist `((".*" . ,emacs-tmp-dir)))
+
+;;; Lockfiles unfortunately cause more pain than benefit
+(setq create-lockfiles nil)
+
+;;; Load wheatgrass as the default theme if one is not loaded already
+
+(if (not custom-enabled-themes)
+ (load-theme 'wheatgrass t))
+
+(defun reload-config ()
+ (interactive)
+ (load-file (expand-file-name "init.el" user-emacs-directory)))
+
+;; Make a single ESC quit the current action
+(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
+
+;; Autopairs
+(add-hook 'prog-mode-hook
+ (lambda ()
+ (electric-pair-mode 1)))
+
+;; Org mode config
+(setq-default org-startup-indented t)
+
+;; Emacs lisp mode config
+(add-hook 'emacs-lisp-mode-hook
+ (lambda ()
+ ;; Use spaces, not tabs
+ (setq indent-tabs-mode nil)))
+
+;; Theme
+(use-package doom-themes
+ :config
+ (setq doom-themes-enable-bold t
+ doom-themes-enable-italic t)
+ (load-theme 'doom-moonlight t)
+
+ ;; Enable flashing mode-line on errors
+ (doom-themes-visual-bell-config)
+ ;; Corrects (and improves) org-mode's native fontification.
+ (doom-themes-org-config))
+
+;; Some quality of life packages
+(use-package which-key
+ :config
+ (which-key-mode))
+
+(use-package helm
+ ;; :bind ("C-c C-p" . helm-find-files)
+ :config
+ ;; Enable global fuzzy matching
+ (setq helm-mode-fuzzy-match t
+ helm-completion-in-region-fuzzy-match t)
+ (helm-mode 1))
+
+;;; --- Various major modes --- ;;;
+(use-package nix-mode
+ :mode "\\.nix\\'")