commit 9674d521041c1654dec0b065ae4a7fd29a648f48 Author: 邵静 <1728366814@qq.com> Date: Tue Jun 25 15:46:58 2024 +0800 【初化的一些配置】 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..41acfe2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +auto-save-list/* +elpa/* +.cache/* +transient/ +ido.last +history +recentf +places +custom.el +projectile-bookmarks.eld +.lsp-session-v1 +projects +org-persist +org-roam.db +server/ +*~ +eln-cache/ diff --git a/init.el b/init.el new file mode 100644 index 0000000..682758b --- /dev/null +++ b/init.el @@ -0,0 +1,13 @@ +;;; init.el -- 初始化配置 +;;; Commentary: +;;; Code: +(add-to-list 'load-path "~/.emacs.d/lisp") + +(require 'init-package) ; 配置包管理器 +(require 'init-custom) ; 默认配置 +(require 'init-autocomplete) ; 自动补伤全配置 +(require 'init-hydra) ; hydra配置自定的快捷键 +(require 'init-errors) ; 错误/警告提示引擎配置 +(require 'init-projectile) ; 项目管理配置 +(require 'init-magit) ; git客户端 +;;; init.el ends here diff --git a/lisp/init-autocomplete.el b/lisp/init-autocomplete.el new file mode 100644 index 0000000..734d918 --- /dev/null +++ b/lisp/init-autocomplete.el @@ -0,0 +1,24 @@ +;;; package -- init-autocomplete +;;; Commentary: +;;; Code: +;; 文本提示的配置 - company +(use-package company + :ensure t + :config + (add-hook 'after-init-hook 'global-company-mode) + (setq company-idle-delay .2 ; 延时多少秒后弹出 + company-minimum-prefix-length 1 ; 至少几个字符后开始补全 + company-show-quick-access t ; 选项快速访问 + company-tooltip-limit 20 ; 菜单里的可选数量 + company-tooltip-align-annotations t ; 注释贴右侧对齐 + )) +;; 命令提示的配置,M-x后命令的提示 - ivy +(use-package ivy + :ensure t + :config + (ivy-mode 1) + (setq ivy-format-function #'ivy-format-function-arrow) + (define-key ivy-minibuffer-map (kbd "RET") #'ivy-alt-done) + ) +(provide 'init-autocomplete) +;;; init-autocomplete.el ends here diff --git a/lisp/init-custom.el b/lisp/init-custom.el new file mode 100644 index 0000000..4eaf59e --- /dev/null +++ b/lisp/init-custom.el @@ -0,0 +1,43 @@ +;;; package -- init-custome +;;; Commentary: +;;; Code: +(tool-bar-mode -1) +;; 隐藏菜单栏 +(menu-bar-mode -1) +;; 显示行号 +(global-display-line-numbers-mode 1) +;; 关闭滚动条 +(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1)) +;; 关闭光标到边缘区域后自动翻页 +(setq-default scroll-step 1 scroll-margin 0 scroll-conservatively 10000) +;; 括号自动匹配 +(electric-pair-mode 1) +;; 关闭自动保存,自动备份文件 +(auto-save-mode nil) +(setq make-backup-files nil) +;; 字体 +(cond + ;; 如果是windows系统, 设置Consolas字体 + ((eq system-type 'windows-nt) + (set-face-attribute 'default nil :font "Consolas-11")) + ;; 如果是Linux系统 + ((eq system-type 'gnu/linux) + (set-face-attribute 'default nil :font "Ubuntu Mono-12")) + ) +;; 配置编码 +(set-language-environment "UTF-8") +(set-default-coding-systems 'utf-8) +;; 配置whitespace +(global-whitespace-mode t) +;; 配置yes和no的别名 +(defalias 'yes-or-no-p 'y-or-n-p) +;; 选中的内容可以C-d删除 +(delete-selection-mode 1) +;; 选中的内容可以粘贴覆盖 +(cua-selection-mode 1) +;; 关闭启动文档 +(setq inhibit-splash-screen 1) +;; 重新映射mark的快捷键 +(global-set-key (kbd "C-,") 'set-mark-command) +(provide 'init-custom) +;;; init-custom.el ends here diff --git a/lisp/init-errors.el b/lisp/init-errors.el new file mode 100644 index 0000000..a0dab55 --- /dev/null +++ b/lisp/init-errors.el @@ -0,0 +1,11 @@ +;;; init-errors -- 错误/警告提示配置 +;;; Commentary: +;;; Code: +(use-package flycheck + :init + (setq flycheck-emacs-lisp-load-path 'inherit) + :config + (global-flycheck-mode) + ) +(provide 'init-errors) +;;; init-errors.el ends here diff --git a/lisp/init-hydra.el b/lisp/init-hydra.el new file mode 100644 index 0000000..fc5815f --- /dev/null +++ b/lisp/init-hydra.el @@ -0,0 +1,65 @@ +;;; init-hydra -- 配置自定的快捷键 -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: +;; 安装(如果未装的话) +(use-package hydra + :ensure t) +;; 定义hydra入口,我的常用快捷键都放在这 +(defhydra hydra-main (:color blue :hint nil) + " +^命令^ +^^^^^^^^^^------------------------------ +_f_: 文件目录操作 _p_: Projectile项目管理 +" + ("f" hydra-file-dir-operations/body "文件目录操作") + ("p" hydra-projectile-operations/body "Projectile项目管理") + ) + +;; 定义一个用于文件操作的 hydra +(defhydra hydra-file-dir-operations (:color blue :hint nil) + " +^文件操作^ ^目录操作^ +^^^^^^^^^^------------------------------ +_f_: 打开文件 _d_: 打开目录 +_s_: 保存文件 _m_: 创建目录 +_d_: 删除文件 _k_: 删除目录 +_c_: 关闭文件 _j_: dired 模式 +_r_: 重命名文件 _n_: 选择目录 +" + ;; 文件操作 + ("f" find-file "打开文件") + ("s" save-buffer "保存文件") + ("c" kill-buffer "关闭文件") + ("x" delete-file "删除文件") + ("r" rename-file "重命名文件") + + ;; 目录操作 + ("d" dired "打开目录") + ("m" make-directory "创建目录") + ("k" (lambda () (interactive) (dired-delete-file (dired-get-file-for-visit))) "删除目录") + ("j" dired-jump "dired 模式") + ("n" dired "选择目录") + ) +;; 定义一个用于Projectile项目管理的 hydra +(defhydra hydra-projectile-operations (:color blue :hint nil) + " +^Projectile项目管理^ +^^^^^^^^^^^^^^^^^^^-------------------- +_p_: 切换项目 _f_: 查找文件 +_d_: 查找目录 _s_: 正则查找 +_g_: 全局搜索 _b_: 切换缓冲区 +_r_: 重命名项目 +" + ("p" projectile-switch-project "切换项目") + ("f" projectile-find-file "查找文件") + ("d" projectile-find-dir "查找目录") + ("s" projectile-grep "正则查找") + ("g" projectile-grep "全局搜索") + ("b" projectile-switch-to-buffer "切换缓冲区") + ("r" projectile-replace "重命名项目") + ) + +;; 绑定一个快捷键来激活这个 Hydra,Alt + 空格键 +(global-set-key (kbd "M-s") 'hydra-main/body) +(provide 'init-hydra) +;;; init-hydra.el ends here diff --git a/lisp/init-magit.el b/lisp/init-magit.el new file mode 100644 index 0000000..c756464 --- /dev/null +++ b/lisp/init-magit.el @@ -0,0 +1,6 @@ +;;; init-magit -- git客户端magit配置 +;;; Commentary: +;;; Code: +(use-package magit) +(provide 'init-magit) +;;; init-magit.el ends here diff --git a/lisp/init-package.el b/lisp/init-package.el new file mode 100644 index 0000000..4472cc7 --- /dev/null +++ b/lisp/init-package.el @@ -0,0 +1,31 @@ +;;; init-package -- package管理配置 +;;; Commentary: 通过use-package管理软件 +;;; Code: +;; 激活配置 +(package-initialize) +;; 配置镜像 + + +(setq package-archives '(("melpa" . "http://melpa.org/packages/") + ("melpa-stable" . "http://stable.melpa.org/packages/") + ("org" . "https://orgmode.org/elpa/") + ("gnu". "https://elpa.gnu.org/packages/") + )) + +;; 如果没有装use-package +(unless (package-installed-p 'use-package) + ;; 更新本地缓存 + (package-refresh-contents) + ;; 安装它 + (package-install 'use-package) + ) + +(require 'use-package) +;; 让use-package永远按需安装软件包 +(setq use-package-always-ensure t) + + +(use-package better-defaults) + +(provide 'init-package) +;;; init-package.el ends here diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el new file mode 100644 index 0000000..255896f --- /dev/null +++ b/lisp/init-projectile.el @@ -0,0 +1,13 @@ +;;; init-projectile -- 项目管理的配置 +;;; Commentary: +;;; Code: + +;; 安装(如未安装) +(use-package projectile + :ensure t + :config + (setq projectile-cache-file (expand-file-name ".cache/projectile.cache" user-emacs-directory)) + (projectile-mode 1)) + +(provide 'init-projectile) +;;; init-projectile.el ends here