尧图精选

FiraCode 在 Emacs 配置 composition char table 后报 “Attempt to shape unibyte text“ 怎么处理?

🕒 发布时间:2026/9/9 21:16:51 📁 来源:尧图网络
FiraCode 在 Emacs 配置 composition char table 后报 Attempt to shape unibyte text 怎么处理【免费下载链接】FiraCodeFree monospaced font with programming ligatures项目地址: https://gitcode.com/GitHub_Trending/fi/FiraCode如果你在 Emacs 里按 FiraCode 文档的 Using composition char table 方法启用连字——即把composition-function-table相关 Lisp 配置放进.emacs——之后 Emacs 报出error in process filter: Attempt to shape unibyte text项目文档针对这个报错给出了对应的处理办法注释掉配置中的一行并且文档特别说明了哪种用户可以用这种方式避开该问题。本文按文档原文整理触发配置、报错处理步骤以及同一配置方法下文档列出的另外两个已知问题。先确认触发报错的是哪份配置distr/README.txt 的 Emacs 章节列出了四种启用连字的方式从首选到次选排列并明确要求 Pick one!——即只选用其中一种不要叠加配置。其中第三种就是 composition char table 方法文档要求把下面这份 Lisp 放进.emacs(when (window-system) (set-frame-font Fira Code)) (let ((alist ((33 . .\\(?:\\(?:\\|!!\\)\\|[!]\\)) (35 . .\\(?:###\\|##\\|_(\\|[#(?[_{]\\)) (36 . .\\(?:\\)) (37 . .\\(?:\\(?:%%\\)\\|%\\)) (38 . .\\(?:\\(?:\\)\\|\\)) (42 . .\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/]\\)) (43 . .\\(?:\\(?:\\\\\\)\\|[]\\)) (45 . .\\(?:\\(?:-[-]\\|\\|\\)\\|[}~-]\\)) (46 . .\\(?:\\(?:\\.[.]\\)\\|[.-]\\)) (47 . .\\(?:\\(?:\\*\\*\\|//\\|\\)\\|[*/]\\)) (48 . .\\(?:x[a-zA-Z]\\)) (58 . .\\(?:::\\|[:]\\)) (59 . .\\(?:;;\\|;\\)) (60 . .\\(?:\\(?:!--\\)\\|\\(?:~~\\|-\\|\\$\\|\\*\\|\\\\|--\\|[-]\\|[]\\||\\)\\|[*$~/|-]\\)) (61 . .\\(?:\\(?:/\\|:\\|\\|[]\\|\\)\\|[~]\\)) (62 . .\\(?:\\(?:\\|[-]\\)\\|[-]\\)) (63 . .\\(?:\\(\\?\\?\\)\\|[:?]\\)) (91 . .\\(?:]\\)) (92 . .\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)) (94 . .\\(?:\\)) (119 . .\\(?:ww\\)) (123 . .\\(?:-\\)) (124 . .\\(?:\\(?:|[|]\\)\\|[|]\\)) (126 . .\\(?:~\\|~~\\|[~-]\\)) ) )) (dolist (char-regexp alist) (set-char-table-range composition-function-table (car char-regexp) ([,(cdr char-regexp) 0 font-shape-gstring]))))前置条件系统中已安装 Fira Code 字体。文档同一文件的 Installing 部分给出了各平台的安装命令例如 macOS 用brew install --cask font-fira-code配置中的(set-frame-font Fira Code)依赖字体已就位才能生效。处理 Attempt to shape unibyte text 报错文档在该配置后的 Note 中写明如果出现error in process filter: Attempt to shape unibyte text该错误在 FiraCode 仓库的 issue #42 中有讨论Emacs Cider 用户可以通过注释掉配置中的下面这一行来避开该问题;; (46 . .\\(?:\\(?:\\.[.]\\)\\|[.-]\\))对应操作就是在上面alist里找到字符码 46 的那条规则定义以.开头字符的连字匹配模式整行注释掉保存.emacs。文档描述的预期结果是注释该行后可以避免这个报错即 Cider 用户不再遇到Attempt to shape unibyte text如果注释后问题依旧文档给出的指向是 issue #42那里有针对该错误的进一步讨论。同一配置下的另外两个已知问题文档紧跟着这条 Note 还列出两个与同一份配置相关的边界均属于已知问题字符45即连字符-对应的字符码在 macOS Mojave 上已知存在问题。文档只指出这一点没有给出修改配置的办法遇到时留意报错是否集中在-开头的连字上。如果在使用 helm 时遇到问题可以按文档给出的配置在 helm 中禁用连字(add-hook helm-major-mode-hook (lambda () (setq auto-composition-mode nil)))helm 这段配置针对的是 having problems with helm 的场景不是 unibyte 报错的通用解法只有在确实使用 helm 并遇到问题时才加入。结果核对处理完成的判断依据注释掉字符码 46 那一行后error in process filter: Attempt to shape unibyte text不再出现。报错原文、完整配置、issue #42 指向、字符 45 的 Mojave 问题和 helm 钩子均出自 distr/README.txt 的 Emacs 章节四种启用方式互斥配置时只保留 composition char table 这一份。【免费下载链接】FiraCodeFree monospaced font with programming ligatures项目地址: https://gitcode.com/GitHub_Trending/fi/FiraCode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →