diff options
| author | Miran Bastaja <miran.bastaja04@gmail.com> | 2024-09-12 18:05:23 +0200 |
|---|---|---|
| committer | Miran Bastaja <miran.bastaja04@gmail.com> | 2024-09-12 18:45:06 +0200 |
| commit | 0da0e8fb5d626bd511c55457ab624b800b9abfe8 (patch) | |
| tree | f49d24a1de22ad6488a37c56fe86360db4c3b161 /pkgs/sorremacs | |
Initial commit
Diffstat (limited to 'pkgs/sorremacs')
| -rw-r--r-- | pkgs/sorremacs/default.nix | 12 | ||||
| -rw-r--r-- | pkgs/sorremacs/emacs.el | 137 |
2 files changed, 149 insertions, 0 deletions
diff --git a/pkgs/sorremacs/default.nix b/pkgs/sorremacs/default.nix new file mode 100644 index 0000000..eea70f5 --- /dev/null +++ b/pkgs/sorremacs/default.nix @@ -0,0 +1,12 @@ +{ emacsWithPackagesFromUsePackage, ... }: +emacsWithPackagesFromUsePackage { + config = ./emacs.el; + defaultInitFile = true; + alwaysEnsure = true; + alwaysTangle = true; + + # Optionally provide extra packages not in the configuration file. + extraEmacsPackages = epkgs: [ + epkgs.cask + ]; +} 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\\'") |
