gpt4 book ai didi

仅供显示的 Emacs 缩写

转载 作者:行者123 更新时间:2023-12-02 05:10:22 28 4
gpt4 key购买 nike

我正在 emacs 中编辑 Mathematica 代码。 Mathematica 对希腊字母的明文表示看起来像

\[Alpha], \[Beta], \[Gamma], ...

我不介意输入这些,但生成的代码又大又笨重,例如:

k[\[Beta]_,z_]:=z^(\[Beta]/2) Hypergeometric2F1[\[Beta]/2,\[Beta]/2,\[Beta],z];

有没有办法让 emacs 自动显示某些字符串(如 \[Alpha])作为其他字符串(如 alpha 的 unicode 字符)?请注意,我实际上并不想用另一个字符串替换一个字符串(如果我理解正确的话,这就是缩写词的作用),因为 Mathematica 仍然可以正确读取该文件。

最佳答案

是的,有办法。普通的 Emacs 解决方案是使用 compose-region 函数来实现这一点。此代码段将为您定义一个函数 compose-greek-symbols,如果字体锁定处于事件状态,它将激活当前缓冲区中请求的缩写替换:

(setq
greek-symbols
(loop
;; characters are entered with `ucs-insert'
;; 'α' is "GREEK SMALL LETTER ALPHA"
for ch from ?α to ?ω
collect (let ((str (get-char-code-property ch 'name)))
(setq str
(upcase-initials
(downcase
(replace-regexp-in-string "greek small letter " "" str))))
(cons str ch))))


(defun compose-greek-symbols ()
(interactive)
(font-lock-add-keywords
nil
'(("\\\\\\[\\([^]]+\\)\\]"
(0 (progn (let
((sym (cdr-safe (assoc (match-string 1) greek-symbols))))
(when sym
(compose-region (match-beginning 0)
(match-end 0)
sym)))))))))

EmacsWiki 提供一对 more solutions .如果你愿意安装新包,你总是可以尝试更复杂的东西,比如 pretty-symbols-mode .

关于仅供显示的 Emacs 缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15558217/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com