Thanks to visit codestin.com
Credit goes to github.com

Skip to content

LuciusChen/.emacs.d

Repository files navigation

https://img.shields.io/badge/Linux-0.24s-brightgreen.svg?style=svg https://img.shields.io/badge/macOS-0.58s-blue.svg?style=svg

Emacs Configuration

Introduction

最初因为市场上许多笔记软件无法提供足够的定制化选项,我感到不满。在朋友的推荐下,我开始接触 Org mode,从而进入了 doomemacs 的领域。然而,对于缺乏 elisp 相关知识的新手来说,doomemacs 仿佛一个黑盒,难以定位问题以及个性化调整,且这与我“满足自身需求且尽可能减少配置”的理念相悖。因此,从 2022 年起,我开始构建自己的配置。

这套配置完全出于个人需求的考量而设计。如果能有幸得到他人的关注与使用,我将倍感欣慰。同时,若其中存在不足之处,欢迎随时指正。

Compilation

MacOS

使用脚本 emacs_setup.sh 进行安装时,若 patches 目录中的补丁与 emacs-plus 维护的补丁同名,则会覆盖原有补丁并修改其 sha 值。否则,这些补丁将作为 user_patch 被纳入 [email protected] 中进行管理。

只需执行 ./emacs_setup.sh 即可完成安装。如需安装 feature/igc 分支,只需添加参数 mps

patches

emacs-plus 重复的 patches 在这里是因为我经常编译,就自己维护了。fix-window-role.patch 在 emacs@31 已经合并到上游了。

  1. cursor-animation.patch 相较于 neovide 等其他的光标动画,我更喜欢这个。最初由 @ksqsf 在 Emacs_CN Lite 轻聊版 中放出,@TakaObsid 完善后不再遮挡内容。
  2. ns-alpha-background.patch
  3. ns-mac-input-source.patch 经由 @georgealbert 整理提取,用于切换输入法。

Arch Linux

使用 build-emacs-pgtk.sh 进行编译,这实际上是我自行维护的 PKGBUILD ,旨在简化编译与安装过程。

Package Management

包管理使用的是 straight.el + setup.el,前者功能比较全面,可以 pin 到具体的 commits;后者相对简单,可以在此基础上自定义关键字,比如 :set-font(按 mode 定义不同的字体)。

setup.el 常见问题

  1. :bind-into 已经被淘汰,最好用 (:with-map xxx-map (:bind "C-c x t" xxxx)) 的写法。
  2. :option 已经被淘汰,用 Emacs 内置的 setqsetopt
  3. :file-match 修改后,需要从 (:match-file "\\.lua\\'") 改为 (:match-file "*.lua")

UI/UX

Fonts

  1. 默认字体:PragmataPro Mono
  2. 中文字体:LXGW WenKai Screen,fallback 字体:Jigmo fonts(CJK 全覆盖)。
  3. org-mode 字体:PragmataPro Liga

配置参考:

Theme

主题目前选用 rose-pine,Dashboard 选用 fork 修改后的 panel,mode-line 选用 doom-modeline

Security

所有条目都存入 pass 中,并通过启用 auth-source-pass-enable 自动读取。然而,对于自建的 GitLab, machine 的值必须采用 192.168.1.220:9081/api/v4 格式,这一信息无法直接存入 pass。因此,我更改了存储名称,并编写了 check-and-update-authinfo,将其自动读取并写入 .authinfo 中,从而实现配置过程的自动化。

Feature Overview

输入法切换

ns-mac-input-source.patch 应用后可以原生支持切换输入法,主要是添加了 mac-input-source 方法。

  1. emacs-smart-input-source 如果检测到 mac-input-source 就会才用该函数来切换输入法,代替 macism
  2. 通过 Karabiner-Elements 映射 left_shiftf13 ,绑定后就可以通过 left_shift 切换输入法。

常见问题

  • 自 Sequoia 系统开始,系统增加了 CursorUIViewservice 进程来显示输入法状态,经常会卡死导致内存占用。可以通过下面的命令彻底关闭。参考自 Reddit - Dive into anything
sudo mkdir -p /Library/Preferences/FeatureFlags/Domain && sudo /usr/libexec/PlistBuddy -c "Add 'redesigned_text_cursor:Enabled' bool false" /Library/Preferences/FeatureFlags/Domain/UIKit.plist && sudo shutdown -r now

LaTeX 预览及导出

LaTeX 预览的场景不局限于 Emacs 当中,导出到 Web 时,一部分简单的用 MathJax,另一部分复杂的代码块(尤其是自定义关键字)则需要利用 org-babel 生成图片后嵌入文中(如下,GitHub 中 Raw 格式查看全部)。

Emacs 内的预览最初选择的是 xenops,后切换到 org-latex-preview,但由于下面的问题导致 org-babel 无法执行后放弃。

2024-03-08: tec/org-mode 版本中 org-latex-compile 改为异步生成 PDF,Inkscape 转换 PDF 为 SVG 时,PDF 还未生成,导致报错。相关参考如下。

依旧有兴趣的可以安装 tec/org-mode 版本的 org,配置 org-latex-preview 进行尝试。

常见问题

  • 用 Homebrew 安装的 texlive,dvisvgm 包含在 texlive 当中,需要从 /Library/TeX/texbin/ 复制到 /opt/homebrew/bin/

翻译

gt.el 非常易于扩展,除了各种场景的翻译,我还用于 mastodon.el 的 toots 和 profiles 翻译,避免重复安装作者提供的 lingva.el(该包没提供 profiles 的翻译)。

我 fork 了项目做了些修改

  • 支持请求 header 自定义
  • OpenRouter 等平台不支持 stream 参数为 null,因此当 streamnull 则不纳入到入参当中。

Git

Java 编程

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages