| 1 | ;;; magit-core.el --- Core functionality -*- lexical-binding:t -*- |
| 2 | |
| 3 | ;; Copyright (C) 2008-2026 The Magit Project Contributors |
| 4 | |
| 5 | ;; Author: Jonas Bernoulli <emacs.magit@jonas.bernoulli.dev> |
| 6 | ;; Maintainer: Jonas Bernoulli <emacs.magit@jonas.bernoulli.dev> |
| 7 | |
| 8 | ;; SPDX-License-Identifier: GPL-3.0-or-later |
| 9 | |
| 10 | ;; Magit is free software: you can redistribute it and/or modify it |
| 11 | ;; under the terms of the GNU General Public License as published by |
| 12 | ;; the Free Software Foundation, either version 3 of the License, or |
| 13 | ;; (at your option) any later version. |
| 14 | ;; |
| 15 | ;; Magit is distributed in the hope that it will be useful, but WITHOUT |
| 16 | ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| 17 | ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public |
| 18 | ;; License for more details. |
| 19 | ;; |
| 20 | ;; You should have received a copy of the GNU General Public License |
| 21 | ;; along with Magit. If not, see <https://www.gnu.org/licenses/>. |
| 22 | |
| 23 | ;;; Commentary: |
| 24 | |
| 25 | ;; This library requires several other libraries, so that yet other |
| 26 | ;; libraries can just require this one, instead of having to require |
| 27 | ;; all the other ones. In other words this separates the low-level |
| 28 | ;; stuff from the rest. It also defines some Custom groups. |
| 29 | |
| 30 | ;;; Code: |
| 31 | |
| 32 | (require 'magit-base) |
| 33 | (require 'magit-git) |
| 34 | (require 'magit-mode) |
| 35 | (require 'magit-margin) |
| 36 | (require 'magit-process) |
| 37 | (require 'magit-transient) |
| 38 | (require 'magit-autorevert) |
| 39 | |
| 40 | ;;; Options |
| 41 | |
| 42 | (defgroup magit nil |
| 43 | "Controlling Git from Emacs." |
| 44 | :link '(url-link "https://magit.vc") |
| 45 | :link '(info-link "(magit)FAQ") |
| 46 | :link '(info-link "(magit)") |
| 47 | :group 'tools) |
| 48 | |
| 49 | (defgroup magit-essentials nil |
| 50 | "Options that every Magit user should briefly think about. |
| 51 | |
| 52 | Each of these options falls into one or more of these categories: |
| 53 | |
| 54 | * Options that affect Magit's behavior in fundamental ways. |
| 55 | * Options that affect safety. |
| 56 | * Options that affect performance. |
| 57 | * Options that are of a personal nature." |
| 58 | :link '(info-link "(magit)Essential Settings") |
| 59 | :group 'magit) |
| 60 | |
| 61 | (defgroup magit-miscellaneous nil |
| 62 | "Miscellaneous Magit options." |
| 63 | :group 'magit) |
| 64 | |
| 65 | (defgroup magit-commands nil |
| 66 | "Options controlling behavior of certain commands." |
| 67 | :group 'magit) |
| 68 | |
| 69 | (defgroup magit-modes nil |
| 70 | "Modes used or provided by Magit." |
| 71 | :group 'magit) |
| 72 | |
| 73 | (defgroup magit-buffers nil |
| 74 | "Options concerning Magit buffers." |
| 75 | :link '(info-link "(magit)Modes and Buffers") |
| 76 | :group 'magit) |
| 77 | |
| 78 | (defgroup magit-refresh nil |
| 79 | "Options controlling how Magit buffers are refreshed." |
| 80 | :link '(info-link "(magit)Automatic Refreshing of Magit Buffers") |
| 81 | :group 'magit |
| 82 | :group 'magit-buffers) |
| 83 | |
| 84 | (defgroup magit-faces nil |
| 85 | "Faces used by Magit." |
| 86 | :group 'magit |
| 87 | :group 'faces) |
| 88 | |
| 89 | (custom-add-to-group 'magit-faces 'diff-refine-added 'custom-face) |
| 90 | (custom-add-to-group 'magit-faces 'diff-refine-removed 'custom-face) |
| 91 | |
| 92 | (defgroup magit-extensions nil |
| 93 | "Extensions to Magit." |
| 94 | :group 'magit) |
| 95 | |
| 96 | (custom-add-to-group 'magit-modes 'git-commit 'custom-group) |
| 97 | (custom-add-to-group 'magit-faces 'git-commit-faces 'custom-group) |
| 98 | (custom-add-to-group 'magit-modes 'git-rebase 'custom-group) |
| 99 | (custom-add-to-group 'magit-faces 'git-rebase-faces 'custom-group) |
| 100 | (custom-add-to-group 'magit 'magit-section 'custom-group) |
| 101 | (custom-add-to-group 'magit-faces 'magit-section-faces 'custom-group) |
| 102 | (custom-add-to-group 'magit-process 'with-editor 'custom-group) |
| 103 | |
| 104 | (defgroup magit-related nil |
| 105 | "Options that are relevant to Magit but that are defined elsewhere." |
| 106 | :link '(custom-group-link vc) |
| 107 | :link '(custom-group-link smerge) |
| 108 | :link '(custom-group-link ediff) |
| 109 | :link '(custom-group-link auto-revert) |
| 110 | :group 'magit |
| 111 | :group 'magit-extensions |
| 112 | :group 'magit-essentials) |
| 113 | |
| 114 | (custom-add-to-group 'magit-related 'auto-revert-check-vc-info 'custom-variable) |
| 115 | (custom-add-to-group 'magit-auto-revert 'auto-revert-check-vc-info 'custom-variable) |
| 116 | |
| 117 | (custom-add-to-group 'magit-related 'ediff-window-setup-function 'custom-variable) |
| 118 | (custom-add-to-group 'magit-related 'smerge-refine-ignore-whitespace 'custom-variable) |
| 119 | (custom-add-to-group 'magit-related 'vc-follow-symlinks 'custom-variable) |
| 120 | |
| 121 | ;;; _ |
| 122 | (provide 'magit-core) |
| 123 | ;; Local Variables: |
| 124 | ;; read-symbol-shorthands: ( |
| 125 | ;; ("and$" . "cond-let--and$") |
| 126 | ;; ("thread$" . "cond-let--thread$") |
| 127 | ;; ("when$" . "cond-let--when$") |
| 128 | ;; ("and-let*" . "cond-let--and-let*") |
| 129 | ;; ("and-let" . "cond-let--and-let") |
| 130 | ;; ("if-let*" . "cond-let--if-let*") |
| 131 | ;; ("if-let" . "cond-let--if-let") |
| 132 | ;; ("when-let*" . "cond-let--when-let*") |
| 133 | ;; ("when-let" . "cond-let--when-let") |
| 134 | ;; ("while-let*" . "cond-let--while-let*") |
| 135 | ;; ("while-let" . "cond-let--while-let") |
| 136 | ;; ("match-string" . "match-string") |
| 137 | ;; ("match-str" . "match-string-no-properties")) |
| 138 | ;; End: |
| 139 | ;;; magit-core.el ends here |