我的Emacs配置

简介: 这是一份高度定制化的 Emacs 配置文件,采用 use-package 声明式管理。启用 Dracula 主题、Fira Code 字体,集成 Eglot(C/C++)、SLIME(Common Lisp)、xcscope(C 代码导航)及 clang-format 自动格式化,配备 Company 补全、括号高亮、行号显示等现代编辑功能,兼顾效率与美观。(239字)

(custom-set-variables

;; custom-set-variables was added by Custom.

;; If you edit it by hand, you could mess it up, so be careful.

;; Your init file should contain only one such instance.

;; If there is more than one, they won't work right.

'(column-number-mode t)

'(custom-enabled-themes '(dracula))

'(custom-safe-themes

  '("2d74de1cc32d00b20b347f2d0037b945a4158004f99877630afc034a674e3ab7" default))

'(package-selected-packages

  '(xcscope clang-format format-all eglot company-quickhelp-terminal company-quickhelp company-box use-package slime-company dracula-theme gnu-elpa-keyring-update slime smex))

'(show-paren-mode t))

(custom-set-faces

;; custom-set-faces was added by Custom.

;; If you edit it by hand, you could mess it up, so be careful.

;; Your init file should contain only one such instance.

;; If there is more than one, they won't work right.

'(default ((t (:family "Fira Code" :foundry "CTDB" :slant normal :weight normal :height 113 :width normal)))))

(require 'use-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) ;; You might already have this line



;;关闭启动页面

(setq inhibit-startup-message t)

(setq gnus-inhibit-startup-message t)

;;设置光标为|

(setq-default cursor-type 'bar)


;; 在窗口中显示行号

(global-linum-mode 1)        ;; 总是显示行号


;; 显示光标当前所在的行和列

(column-number-mode t)


;; 显示匹配的括号

(show-paren-mode t)

(setq show-paren-style 'parentheses)


;; 内置的智能自动补全括号

(electric-pair-mode t)


;; 鼠标自动避开光标

(mouse-avoidance-mode 'animate)

;; 将确定时输入的关键字 yes 和 no 替换为单字母 y 和 n

(fset 'yes-or-no-p 'y-or-n-p)


;; 不生成备份文件

(setq make-backup-files nil)

;;检查gnu签名,nil表示不检查

(setq package-check-signature 'allow-unsigned)


;;company

(use-package company

 :ensure t

 :hook (after-init . global-company-mode) ;; 全局启用 company-mode

 :config

 (setq company-idle-delay 0.2               ;; 补全弹出延迟

       company-minimum-prefix-length 2      ;; 触发补全的最小字符数

       company-tooltip-align-annotations t)) ;; 对齐注释


;;company-quickhelp:用来弹出说明文档

(use-package company-quickhelp

 :ensure t

 :hook (company-mode . company-quickhelp-mode)

 :config

 (setq company-quickhelp-delay 0.2))


;;clangd:C/C++代码补全

(require 'eglot)

(add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd"))

(add-hook 'c-mode-hook 'eglot-ensure)

(add-hook 'c++-mode-hook 'eglot-ensure)


;;cscope:C代码阅读

(require 'xcscope)

(cscope-setup)

;; 打开cscope时不更新,提高索引速度

(setq cscope-do-not-update-database t)

(setq cscope-option "-q")


;;sbcl

(setq inferior-lisp-program "sbcl")

;;slime-company

(slime-setup '(slime-fancy slime-company))

(use-package slime-company

 :after (slime company)

 :config (setq slime-company-completion 'fuzzy

               slime-company-after-completion 'slime-company-just-one-space))

(define-key company-active-map (kbd "\C-n") 'company-select-next)

(define-key company-active-map (kbd "\C-p") 'company-select-previous)

(define-key company-active-map (kbd "\C-d") 'company-show-doc-buffer)

(define-key company-active-map (kbd "M-.") 'company-show-location)


;;clang-format:C/C++脚本格式化

(use-package clang-format

 :ensure t  ;; 自动从 MELPA 安装

 :config

 (setq clang-format-executable (executable-find "clang-format")

       clang-format-style "file")  ;; "file" 表示使用 .clang-format 配置文件  

 ;; C脚本保存时自动格式化

(add-hook 'c-mode-common-hook

           (lambda ()

             (add-hook 'before-save-hook 'clang-format-buffer nil t)

             ;; 只在 C/C++ 模式中绑定 C-c f

             (local-set-key (kbd "C-c f") 'clang-format-buffer)))

 ;; lisp脚本保存时自动格式化

(add-hook 'lisp-mode-hook

         (lambda ()

           (add-hook 'before-save-hook

                    (lambda ()

                      (save-excursion

                        (pp-buffer)  ;; 这会自动美化整个缓冲区

                        (indent-region (point-min) (point-max))))

                    nil t)

           (local-set-key (kbd "C-c f")

                         (lambda ()

                           (interactive)

                           (save-excursion

                             (pp-buffer)

                             (indent-region (point-min) (point-max)))))))


;; ========== 全局缩进设置 ==========

;(setq lisp-indent-offset 2)        ;; Lisp 缩进 2 空格

(setq indent-tabs-mode nil)        ;; 统一使用空格

 )

目录
相关文章
|
存储 开发工具
Emacs+SBCL+Slime+CHLS(QuickLisp)
Emacs+Slime+CHLS(QuickLisp)
802 7
|
4月前
|
监控 安全 数据建模
阿里云2026年3月SSL证书活动:SSL证书新用户6折优惠95元起售,新老同享8折起
阿里云SSL证书活动全面升级,新用户专享6折优惠低至95元起,新老用户同享8折起。活动涵盖DigiCert、GeoTrust、WoSign等全球知名CA品牌,提供DV、OV等多种证书品类,支持跨云部署及自动托管、域名监控等增值服务。此外,平台推出HTTPS加速网关(9.9元/月起)及免费证书领取、PCA试用等福利,简化申请流程,为企业提供高效、经济的一站式网站安全解决方案,满足不同业务场景需求。
|
4月前
|
消息中间件 缓存 NoSQL
互联网医院看诊系统架构解析:从预约挂号到在线问诊的完整流程
本文详解互联网医院看诊系统的技术实现,涵盖预约挂号、在线问诊、视频通信、电子处方、订单支付及诊后管理六大核心模块;采用微服务架构,集成Redis缓存、MQ消息队列、WebRTC音视频与分布式锁等关键技术,保障高并发下的稳定与安全。(239字)
|
4月前
|
API Python
别急着按X键:用两行代码清空Blender场景,比手动操作更上瘾
本教程带你用Python脚本替代Blender手动操作:两行代码即可清空默认场景,再扩展实现批量删除、精准筛选与自动重建。从控制台试运行到编写可复用脚本,详解常见报错(如NameError、context错误)及解决方法,助你迈出自动化3D创作第一步。(239字)
365 1
|
9月前
|
JSON 监控 API
从0到1掌握京东API:商品列表获取技巧与避坑指南
京东商品列表API是京东开放平台的核心接口,支持按类目、价格、销量等多条件筛选,实时获取商品基础信息、价格、库存及促销数据。采用HTTPS协议,JSON格式返回,适用于竞品分析与价格监控。支持分页,通过MD5签名认证,保障数据安全。
|
9月前
|
存储 监控 API
Python datetime模块:时间处理的瑞士军刀
免费Python编程教程,深入讲解datetime模块核心用法:时间对象创建、格式化、运算及时区处理,附实战案例与避坑指南,助你高效掌握Python时间操作。链接:https://pan.quark.cn/s/2c17aed36b72
1089 0
|
9月前
|
监控 安全 Docker
10_大模型开发环境:从零搭建你的LLM应用平台
在2025年,大语言模型(LLM)已经成为AI应用开发的核心基础设施。无论是企业级应用、科研项目还是个人创新,拥有一个高效、稳定、可扩展的LLM开发环境都至关重要。
1193 0
|
机器学习/深度学习 人工智能 自然语言处理
Hugging Face 的应用
Hugging Face 是一家专注于开发机器学习应用工具的公司,以其用于自然语言处理的 Transformers 库而闻名,同时提供了一个平台让用户分享机器学习模型和数据集。Transformers 库支持多种任务,如文本分类、生成、总结等,并兼容 PyTorch、TensorFlow 等框架。Hugging Face 还推出了 Text Generation Inference 工具包,用于高效部署大规模语言模型。在国内,百度千帆和魔搭社区等平台也在提供类似的服务和支持。
|
网络协议 应用服务中间件 Linux
LINUX安装nginx详细步骤
LINUX安装nginx详细步骤
6207 1
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?