From 53c8cc88cc5eb87f4ca5610e5767eba4f12734ac Mon Sep 17 00:00:00 2001 From: Cytrogen Date: Wed, 11 Mar 2026 19:17:33 -0400 Subject: [PATCH] =?UTF-8?q?feat(git):=20=E6=B7=BB=E5=8A=A0=20Magit?= =?UTF-8?q?=E3=80=81diff-hl=E3=80=81git-timemachine=E3=80=81ibuffer-vc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Magit 通过 project-prefix-map(C-x p m)启动 - Diff-hl 边栏显示增删改标记,集成 dired 和 magit 刷新 - Git-timemachine 逐版本浏览文件历史 - Ibuffer-vc 按版本控制项目分组 buffer(C-x C-b) --- config/pkg-git.el | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 config/pkg-git.el diff --git a/config/pkg-git.el b/config/pkg-git.el new file mode 100644 index 0000000000000000000000000000000000000000..f23849ad611789c3b56bcdd710c49457d3b6f57b --- /dev/null +++ b/config/pkg-git.el @@ -0,0 +1,41 @@ +;;; pkg-git.el --- Git integration -*- lexical-binding: t -*- + +;; Copyright (C) 2026 Cytrogen + +;; Many package selections and configurations adapted from +;; Steve Purcell's emacs.d: https://github.com/purcell/emacs.d + +;;; Code: + +;; Magit — Git 完整操作界面 +(unless (package-installed-p 'magit) + (package-refresh-contents) + (package-install 'magit)) + +;; 绑定 C-x p m — magit-project-status 已由 magit autoloads 注册 +(keymap-set project-prefix-map "m" #'magit-project-status) + +;; Diff-hl — 边栏显示 git 增删改 +(unless (package-installed-p 'diff-hl) + (package-install 'diff-hl)) +(require 'diff-hl) +(global-diff-hl-mode 1) +(add-hook 'dired-mode-hook 'diff-hl-dired-mode) +(add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh) + +;; Git-timemachine — 逐版本浏览文件历史 +(unless (package-installed-p 'git-timemachine) + (package-install 'git-timemachine)) + +;; Ibuffer-vc — ibuffer 按版本控制项目分组 +(unless (package-installed-p 'ibuffer-vc) + (package-install 'ibuffer-vc)) +(global-set-key (kbd "C-x C-b") 'ibuffer) +(add-hook 'ibuffer-hook + (lambda () + (ibuffer-vc-set-filter-groups-by-vc-root) + (unless (eq ibuffer-sorting-mode 'alphabetic) + (ibuffer-do-sort-by-alphabetic)))) + +(provide 'pkg-git) +;;; pkg-git.el ends here