init.el
;;; package
;;; Commentary:
;;
;;; Code:
;; Emacs 29 已经内置 use-package
(use-package package
:config
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(unless (bound-and-true-p package
(package-initialize)))
(prefer-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
;; Emacs builtin packages
(setq-default auto-window-vscroll nil
default-directory "~"
default-text-properties '(line-spacing 0 line-height 1.0) ;default line height
frame-title-format "%b"
help-window-select t
initial-major-mode 'fundamental-mode
inhibit-startup-screen t ; disable the startup screen splash
isearch-allow-motion t
isearch-lazy-count t
kill-whole-line t
mode-line-compact t
make-backup-files nil ; disable backup file
read-process-output-max (* 4 1024 1024)
require-final-newline t
scroll-conservatively 1000
show-trailing-whitespace t
use-short-answers t
blink-cursor-mode nil)
;; disable cursor blinking
;; (blink-cursor-mode 0)
(set-cursor-color "#F72E96")
(set-face-font 'default "Noto Sans Mono-13")
(global-display-line-numbers-mode)
;; (setq-default line-spacing nil)
;; (set-face-attribute 'default nil :family "Noto Sans Mono" :height 130)
;; `global-auto-revert-mode' is provided by autorevert.el (builtin)
(add-hook 'after-init-hook 'global-auto-revert-mode)
;; Delete Behavior
;; `delete-selection-mode' is provided by delsel.el (builtin)
(add-hook 'after-init-hook 'delete-selection-mode)
;; visual-line-mode
(add-hook 'after-init-hook 'global-visual-line-mode)
;; pixel-scroll-precise-mode
(add-hook 'after-init-hook 'pixel-scroll-precision-mode)
(add-hook 'prog-mode-hook (lambda () (setq-local column-number-mode t)))
;; (add-hook 'prog-mode-hook 'column-number-mode) ;在ModeLine显示列号
(add-hook 'prog-mode-hook 'display-line-numbers-mode) ;显示行号
(add-hook 'prog-mode-hook 'electric-pair-mode) ;括号的配对
(add-hook 'prog-mode-hook 'flymake-mode) ;错误的提示
(add-hook 'prog-mode-hook 'hs-minor-mode) ;代码的折叠
(add-hook 'prog-mode-hook 'prettify-symbols-mode) ;会将lambda等符号美化为λ
;; Highlight Current Line
(use-package hl-line
:when (display-graphic-p)
:hook (prog-mode . hl-line-mode))
;; ibuffer
(defalias 'list-buffers 'ibuffer)
;; Org Mode
(use-package org
:hook (org-mode . org-num-mode)
:config
(setq org-hide-leading-stars t
org-hide-emphasis-markers t
org-startup-indented t))
;; Pulse the cursor line
(dolist (cmd '(recenter-top-bottom other-window))
(advice-add cmd :after (lambda (&rest _) (pulse-momentary-highlight-one-line))))
;; Show Paren Mode
(use-package paren
:config
(setq show-paren-when-point-in-periphery t
show-paren-when-point-inside-paren t
show-paren-style 'mixed))
;; Recentf
(use-package recentf
:hook (after-init . recentf-mode)
;; recentf-open since v29.1, recentf-open-files since v22
:bind (("C-c r" . #'recentf-open)))
;; 内置包
;; global-auto-revert-mode(since v25.1) 可以让你的文件内容(因为其他原因改变了的时候)自动加载到最新的内容
;; delete-selection-mode(since v20.1) 这个在编辑(删除文字)的时候有用
;; fido-vertical-mode(since v28.1) 可以让你的minibuffer变成垂直的,非常推荐
;; global-hl-line-mode(since v21.1) 高亮当前行
;; recentf-mode(since v22.1),其中v29添加了recentf-open函数,可以打开近期文件。
;; 如果你不喜欢recentf-open的行为,可以试试recentf-open-files
;; repeat-mode(since v28.1) 这个命令我不知道怎么描述,比如你想不停的撤销的时候,
;; 你就可以只按一次C-x u而之后就只按u即可,能支持很多类似的命令
;;
(use-package company :ensure t :defer t
:hook (after-init . global-company-mode))
(use-package afternoon-theme)
(load-theme 'afternoon t)
;; ------ exec-path-from-shell ------
;; 这个包你还真必须得安装,它可以帮助读取你的环境变量。不然很多的时候,我们会出现找不到我们〔明明就在那里〕的一些命令
;; Settings for exec-path-from-shell
;; fix the PATH environment variable issue
(use-package exec-path-from-shell
:ensure t
:when (or (memq window-system '(mac ns x))
(unless cabins
(daemonp)))
:init (exec-path-from-shell-initialize))
early-init.el
;;; package --- Summary
;;; Commentary:
;; ------ early-init ------
;;; Code:
;; 这样的代码已经被证实可以非常好的优化启动速度
(setq gc-cons-threshold most-positive-fixnum)
(add-hook 'after-init-hook #'(lambda () (setq gc-cons-threshold 800000)))
;; Clean GUI
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
(provide 'early-init)
;;; early-init.el ends here