Windows上Emacs的希腊式难题
我正在尝试在Windows上为emacs 21.3.1工作。在从以下网站下载欧洲intlfonts后,我已将以下内容放在我的.emacs中:Windows上Emacs的希腊式难题,emacs,Emacs,我正在尝试在Windows上为emacs 21.3.1工作。在从以下网站下载欧洲intlfonts后,我已将以下内容放在我的.emacs中: 然而,当我尝试alpha-beta-gamma时,我得到了加减字符,上标2和上标3。有人知道如何解决这个问题吗?我从Emacs 21升级到Emacs 23,现在代码运行良好。转换其实并不太痛苦,我需要在某个时候进行转换。我从Emacs 21升级到Emacs 23,现在代码工作正常。转换实际上并不太痛苦,我需要在某个时候进行转换。(1)您能确认您的Emacs
然而,当我尝试alpha-beta-gamma时,我得到了加减字符,上标2和上标3。有人知道如何解决这个问题吗?我从Emacs 21升级到Emacs 23,现在代码运行良好。转换其实并不太痛苦,我需要在某个时候进行转换。我从Emacs 21升级到Emacs 23,现在代码工作正常。转换实际上并不太痛苦,我需要在某个时候进行转换。(1)您能确认您的Emacs版本是21.3.1而不是23.1.1吗?前者非常古老,后者更好地支持unicode。(2) 在我的Emacs 23.1.1(在Mac OS X上)上,您的希腊函数运行正常。如果在暂存缓冲区中计算
(insert(make char'greek-iso8859-7 255))
,会发生什么情况?插入字符上的M-x descripe char的输出可能也很有用。是的,它是21.3.1,也许我应该升级。Doing(insert(make char'greek-iso8859-7255))为我提供了暂存缓冲区中的alpha字符。然而,在实际的程序中,我仍然得到奇怪的字符。我想我应该升级一下。从21升级到23可能不会是无痛的(取决于你已经定制了多少Emacs),而且我不确定在不改变其他设置的情况下它是否能解决这个问题。但是我想不出任何其他可能的解决方案。(1)你能确认你的Emacs版本是21.3.1而不是23.1.1吗?前者非常古老,后者更好地支持unicode。(2) 在我的Emacs 23.1.1(在Mac OS X上)上,您的希腊函数运行正常。如果在暂存缓冲区中计算(insert(make char'greek-iso8859-7 255))
,会发生什么情况?插入字符上的M-x descripe char的输出可能也很有用。是的,它是21.3.1,也许我应该升级。Doing(insert(make char'greek-iso8859-7255))为我提供了暂存缓冲区中的alpha字符。然而,在实际的程序中,我仍然得到奇怪的字符。我想我应该升级一下。从21升级到23可能不会是无痛的(取决于你已经定制了多少Emacs),而且我不确定在不改变其他设置的情况下它是否能解决这个问题。但我想不出任何其他可能的解决办法。
; ======= Pretty Greek Characters =======
(setq bdf-directory-list '("D:/emacs/intlfonts/European"))
(setq w32-bdf-filename-alist (w32-find-bdf-fonts bdf-directory-list))
(create-fontset-from-fontset-spec
"-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
greek-iso8859-7:-*-*-medium-r-normal-*-16-*-*-*-c-*-iso8859-7" t)
(defun pretty-greek ()
(let ((greek '("alpha" "beta" "gamma" "delta" "epsilon" "zeta" "eta" "theta" "iota" "kappa" "lambda" "mu" "nu" "xi" "omicron" "pi" "rho" "sigma_final" "sigma" "tau" "upsilon" "phi" "chi" "psi" "omega")))
(loop for word in greek
for code = 225 then (+ 1 code)
do (let ((greek-char (make-char 'greek-iso8859-7 code)))
(font-lock-add-keywords nil
`((,(concatenate 'string "\\(^\\|[^a-zA-Z0-9]\\)\\(" word "\\)[a-zA-Z]")
(0 (progn (decompose-region (match-beginning 2) (match-end 2))
nil)))))
(font-lock-add-keywords nil
`((,(concatenate 'string "\\(^\\|[^a-zA-Z0-9]\\)\\(" word "\\)[^a-zA-Z]")
(0 (progn (compose-region (match-beginning 2) (match-end 2)
,greek-char)
nil)))))))))
(add-hook 'lisp-mode-hook 'pretty-greek)
(add-hook 'emacs-lisp-mode-hook 'pretty-greek)
(add-hook 'python-mode-hook 'pretty-greek)
(add-hook 'csharp-mode-hook 'pretty-greek)