aboutsummaryrefslogtreecommitdiff
path: root/init.el
blob: 8ba4bcbb08b9bfc76fd24dea15d6025806156152 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
;;; init.el --- Main Emacs configuration -*- lexical-binding: t; -*-

;; Copyright (C) 2026 Richard Qin
;; SPDX-License-Identifier: GPL-3.0-or-later

;; Author: Richard Qin
;; This file is not part of GNU Emacs.

;;; Commentary:

;; Main entry point for the Emacs configuration.
;; Configure load paths and initialize configuration modules.

;;; Code:

;; ------------------------------------------------------------
;; Load paths
;; ------------------------------------------------------------

(defvar my/config-directories
  '("core"
    "ui"
    "completion"
    "editing"
    "development"
    "languages"
    "writing"
    "tools")
  "Directories containing Emacs configuration modules.")

(dolist (dir my/config-directories)
  (add-to-list
   'load-path
   (expand-file-name
    (concat "lisp/" dir)
    user-emacs-directory)))

;; Custom Emacs Lisp extensions.
(add-to-list
 'load-path
 (expand-file-name "site-lisp" user-emacs-directory))


;; ------------------------------------------------------------
;; Customize
;; ------------------------------------------------------------

(setq custom-file
      (expand-file-name
       "var/custom.el"
       user-emacs-directory))

(make-directory
 (file-name-directory custom-file)
 t)


;; ------------------------------------------------------------
;; Core modules
;; ------------------------------------------------------------

(require 'init-packages)
(require 'init-defaults)
(require 'init-files)
(require 'init-session)
(require 'init-keybindings)


;; ------------------------------------------------------------
;; UI modules
;; ------------------------------------------------------------

(require 'init-fonts)
(require 'init-theme)
(require 'init-modeline)
(require 'init-windows)


;; ------------------------------------------------------------
;; Custom settings
;; ------------------------------------------------------------

(when (file-exists-p custom-file)
  (load custom-file nil 'nomessage))

;;; init.el ends here