;;======================================= ;; Local mirror of package archives ;;======================================= (require 'package) (setq package-archives '(("gnu" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/") ("nongnu" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/nongnu/") ("melpa" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/"))) (package-initialize) ;;======================================= ;; Load local config script ;; (not git controlled, like .env file) ;;======================================= (setq local-file (expand-file-name "local.el" user-emacs-directory)) (when (file-exists-p local-file) (load-file local-file)) ;;=================== ;; Handy settings ;;=================== (tool-bar-mode -1) (scroll-bar-mode -1) (global-display-line-numbers-mode 0) (global-auto-revert-mode t) (global-hl-line-mode t) ; 高亮当前行 (show-paren-mode t) ; 显示匹配括号 (fset 'yes-or-no-p 'y-or-n-p) ; 简化 yes/no 为 y/n (save-place-mode t) ; 保存文件上次打开的光标位置 (savehist-mode t) ; 记录 M-x/Minibuffer 的历史输入 (delete-selection-mode t) ; 选中文本后输入替换选取 (electric-pair-mode t) ; 输入时自动匹配括号或者引号 (ido-mode t) ; 开启文件和 Buffer 补全 (setq ido-enable-flex-matching t) ; 开启模糊匹配 (ido-everywhere t) ; 在所有可以补全的地方尽量启用 ido (add-hook 'before-save-hook 'delete-trailing-whitespace) ; 保存时清除行尾空格 (when (memq system-type '(gnu gnu/linux)) (setq dired-listing-switches "-ahl --group-directories-first")) ;; 设置 Dired 默认传递给 ls 的参数 (setq mac-command-modifier 'meta) (setq confirm-kill-emacs 'y-or-n-p) (setq-default cursor-type '(bar . 2)) (add-to-list 'default-frame-alist '(fullscreen . maximized)) (with-eval-after-load 'project (add-to-list 'project-vc-extra-root-markers "go.mod")) (global-unset-key (kbd "C-SPC")) (global-set-key (kbd "M-SPC") 'set-mark-command) (global-set-key (kbd "C-x C-b") 'bs-show) (global-set-key (kbd "C-,") 'compile) (global-set-key (kbd "C-x C-,") #'project-compile) (windmove-default-keybindings 'meta) (let ((font (face-attribute 'default :font))) (when font (set-face-attribute 'default nil :height 160))) (setq custom-file (expand-file-name "custom-file.el" user-emacs-directory)) (load custom-file) ;; 为 M-x shell 开启颜色支持 (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) ;; 为 M-x compile 开启颜色支持 (require 'ansi-color) (defun my/colorize-compilation-buffer () (let ((inhibit-read-only t)) (ansi-color-apply-on-region compilation-filter-start (point-max)))) (add-hook 'compilation-filter-hook 'my/colorize-compilation-buffer) ;;==================== ;; Backup settings ;;==================== (setq backup-directory-alist `(("." . "~/.emacs.d/backups/"))) (setq version-control t) ; 开启多版本备份 (setq kept-old-versions 2) ; 保留最早的2个版本 (setq kept-new-versions 6) ; 保留最新的6个版本 (setq delete-old-versions t) ; 自动删除中间的多余版本 ;;====================== ;; Important packages ;;====================== ;; dark theme (use-package gruber-darker-theme :ensure t :init (load-theme 'gruber-darker t)) (use-package dimmer :ensure t :init (setq dimmer-fraction 0.3) ; 调整变暗的程度(0.0 到y 1.0,越大越暗,0.3 刚刚好) :config (dimmer-mode 1)) ;;======================== ;; Package settings ;;======================== ;; ---- simplec-mode ----------- (add-to-list 'load-path (expand-file-name "vendor/simpc-mode" user-emacs-directory)) (require 'simpc-mode) (add-to-list 'auto-mode-alist '("\\.[hc]\\(pp\\)?\\'" . simpc-mode)) ;; --- end of simplec-mode ------ ;; ------- odin-mode ------------ (add-to-list 'load-path (expand-file-name "vendor/odin-mode" user-emacs-directory)) (require 'odin-mode) (add-to-list 'auto-mode-alist '("\\.odin\\'" . odin-mode)) ;; --- end of odin-mode ---------