;; -*- lexical-binding: t -*- (setq mac-option-modifier 'meta mac-command-modifier 'super) (global-set-key (kbd "s-a") 'mark-whole-buffer) ; 对应Windows上面的Ctrl-a 全选 (global-set-key (kbd "s-c") 'kill-ring-save) ; 对应Windows上面的Ctrl-c 复制 (global-set-key (kbd "s-s") 'save-buffer) ; 对应Windows上面的Ctrl-s 保存 (global-set-key (kbd "s-v") 'yank) ; 对应Windows上面的Ctrl-v 粘贴 (global-set-key (kbd "s-z") 'undo) ; 对应Windows上面的Ctrol-z 撤销 (global-set-key (kbd "s-x") 'kill-region) ; 对应Windows上面的Ctrol-x 剪切 (set-default-coding-systems 'utf-8) ; 设置编码 (global-hl-line-mode 1) ; 高亮当前光标所在行 ;;(set-face-background 'hl-line "#e3f0fe") ; 高亮行的颜色 (setq default-frame-alist '((font . "霞鹜文楷等宽-20"))) ; 字体设置 (setq inhibit-startup-screen t) ; 关闭欢迎界面 (global-display-line-numbers-mode 1) ; 设置行号 (electric-pair-mode t) ; 自动补全括号, 引号等 (tool-bar-mode 0) ; 关闭界面菜单 (scroll-bar-mode 0) ; 关闭右侧滑动 (setq-default cursor-type '(bar . 4)) ; 设置光标样式 (setq make-backup-files nil) ; 不要设置~备份文件 (delete-selection-mode 1) ; 被选中的文字重新编辑允许直接覆盖 (global-auto-revert-mode 1) ; 外部如果更新了当前编辑的文本, em里面同步刷新 (fset 'yes-or-no-p 'y-or-n-p) ; 统一设置为 y/n (auto-save-visited-mode 1) ; 设置自动保存 (setq auto-save-timeout 30) ; 设置自动保存时间间隔 (setq-default indent-tabs-mode nil) ; tab按键 使用空格代替制表符 (use-package package :config (setq package-archives '(("gnu" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/") ("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/"))) (package-initialize) ) ;; 会在当前页显示一个buf进代码行提示 (use-package company :ensure t :defer t :init (global-company-mode 1) :config (setq company-minimum-prefix-length 2) (setq company-idle-delay 0.2) :bind (:map company-active-map ("" . company-complete-selection)) ;; 强制强制替换company-complete-common ) ;; 提示按下的按键和对应的函数 (use-package keycast :ensure t :defer t :init (keycast-mode-line-mode 1) :config ) ;; 对C M 相关的命令搜索提示 (use-package vertico :ensure t :defer t :init (vertico-mode t) :config ) ;; 模糊搜搜提示 (use-package orderless :ensure t :defer t :init (setq completion-styles '(orderless)) :config ) ;; 直接显示粗略的帮助文档/注释 用来配合vertico/orderless (use-package marginalia :ensure t :defer t :init (marginalia-mode t) :config ) ;; 增强帮助和搜索 (use-package embark-consult :ensure t :defer t :bind((("C-;" . embark-act) ;; 绑定 C-;(分号)到 embark-act ("C-s" . consult-line) ;; 将 C-s 绑定到 consult-line,用于文本搜索 ("M-s i" . consult-imenu) ;; M-s i 跳转到 consult-imenu,快速访问函数列表 ("C-x b" . consult-buffer) ;; C-x b 打开 consult-buffer,带历史记录的缓冲区列表 )) :init (setq consult-async-min-input 2) :config (setq prefix-help-command 'embark-prefix-help-command) ) ;; 设置主题 (use-package catppuccin-theme :ensure t :defer t :init (setq catppuccin-flavor 'latte) (load-theme 'catppuccin :no-confirm) :config ) (use-package which-key :ensure t :init (which-key-mode) :config (setq which-key-idle-delay 0.2) ;; 设置延迟时间,单位为秒,默认是1.5秒 (setq which-key-separator "→") ;; 设置快捷键间的分隔符 (setq which-key-suppress-keymap-warning t) ;; 不显示警告信息 ) (use-package treesit-auto :ensure t :demand t :config (setq treesit-auto-install t) (global-treesit-auto-mode) (setq treesit-font-lock-level 4) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 下面是内置的包不需要安装的 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 保存命令历史/搜索历史/标记历史等信息 (use-package savehist :ensure nil :hook (after-init . savehist-mode) :init (setq enable-recursive-minibuffers t ; Allow commands in minibuffers history-length 3000 savehist-additional-variables '(mark-ring global-mark-ring search-ring regexp-search-ring extended-command-history) savehist-autosave-interval 30) ) ;; 每次离开缓冲区时记住光标的位置 (use-package saveplace :ensure nil :hook (after-init . save-place-mode) ) ;; eglot (use-package eglot :ensure nil :init (add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-ts-mode)) ;; 不知道为啥需要手动设置关联文件类型 :config (add-to-list 'eglot-server-programs '((c++-ts-mode c-ts-mode) "clangd")) (add-to-list 'eglot-server-programs '(rust-ts-mode "rust-analyzer")) (setq c-basic-offset 4) (setq eglot-logging t) :hook (c-ts-mode . eglot-ensure) (c++-ts-mode . eglot-ensure) (python-ts-mode . eglot-ensure) (rust-ts-mode . eglot-ensure) )